td-client 0.8.25 → 0.8.26

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ == 2012-09-13 version 0.8.26
3
+
4
+ * Added Account model and Table#esetimated_storage_size method
5
+ * Name length limit is changed from 32 characters to 256 characters
6
+
7
+
2
8
  == 2012-09-04 version 0.8.25
3
9
 
4
10
  * Added Client#change_my_password(old_password, password)
@@ -41,6 +41,12 @@ class Client
41
41
  @api.delete_database(db_name)
42
42
  end
43
43
 
44
+ # => Account
45
+ def account
46
+ plan, storage = @api.show_account
47
+ return Account.new(self, plan, storage)
48
+ end
49
+
44
50
  # => [Database]
45
51
  def databases
46
52
  m = @api.list_databases
@@ -83,9 +89,9 @@ class Client
83
89
  # => [Table]
84
90
  def tables(db_name)
85
91
  m = @api.list_tables(db_name)
86
- m.map {|table_name,(type,schema,count,created_at,updated_at)|
92
+ m.map {|table_name,(type,schema,count,created_at,updated_at,estimated_storage_size)|
87
93
  schema = Schema.new.from_json(schema)
88
- Table.new(self, db_name, table_name, type, schema, count, created_at, updated_at)
94
+ Table.new(self, db_name, table_name, type, schema, count, created_at, updated_at, estimated_storage_size)
89
95
  }
90
96
  end
91
97
 
@@ -77,8 +77,8 @@ class API
77
77
  if name.empty?
78
78
  raise "Empty name is not allowed"
79
79
  end
80
- if name.length < 3 || 32 < name.length
81
- raise "Name must be 3 to 32 characters, got #{name.length} characters."
80
+ if name.length < 3 || 256 < name.length
81
+ raise "Name must be 3 to 256 characters, got #{name.length} characters."
82
82
  end
83
83
  unless name =~ /^([a-z0-9_]+)$/
84
84
  raise "Name must consist only of lower-case alphabets, numbers and '_'."
@@ -99,8 +99,8 @@ class API
99
99
  if name.empty?
100
100
  raise "Empty column name is not allowed"
101
101
  end
102
- if 32 < name.length
103
- raise "Column name must be to 32 characters, got #{name.length} characters."
102
+ if 256 < name.length
103
+ raise "Column name must be to 256 characters, got #{name.length} characters."
104
104
  end
105
105
  unless name =~ /^([a-z0-9_]+)$/
106
106
  raise "Column name must consist only of alphabets, numbers, '_'."
@@ -145,6 +145,24 @@ class API
145
145
  end
146
146
  end
147
147
 
148
+
149
+ ####
150
+ ## Account API
151
+ ##
152
+
153
+ def show_account
154
+ code, body, res = get("/v3/account/show")
155
+ if code != "200"
156
+ raise_error("Show account failed", res)
157
+ end
158
+ js = checked_json(body, %w[account])
159
+ a = js["account"]
160
+ plan = a['plan'].to_i
161
+ storage_size = a['storage_size'].to_f
162
+ return [plan, storage_size]
163
+ end
164
+
165
+
148
166
  ####
149
167
  ## Database API
150
168
  ##
@@ -205,8 +223,9 @@ class API
205
223
  count = (m['count'] || 0).to_i # TODO?
206
224
  created_at = m['created_at']
207
225
  updated_at = m['updated_at']
226
+ estimated_storage_size = m['estimated_storage_size']
208
227
  schema = JSON.parse(m['schema'] || '[]')
209
- result[name] = [type, schema, count, created_at, updated_at]
228
+ result[name] = [type, schema, count, created_at, updated_at, estimated_storage_size]
210
229
  }
211
230
  return result
212
231
  end
@@ -10,6 +10,28 @@ class Model
10
10
  attr_reader :client
11
11
  end
12
12
 
13
+ class Account < Model
14
+ def initialize(client, plan, storage_size=nil)
15
+ super(client)
16
+ @plan = plan
17
+ @storage_size = storage_size
18
+ end
19
+
20
+ attr_reader :plan, :storage_size
21
+
22
+ def storage_size_string
23
+ s = "%.1f GB" % (@storage_size / (1024*1024*1024))
24
+ if s == "0.0 GB"
25
+ if @storage_size <= 1024*1024
26
+ return "0.0 GB"
27
+ end
28
+ return "0.01 GB"
29
+ else
30
+ return s
31
+ end
32
+ end
33
+ end
34
+
13
35
  class Database < Model
14
36
  def initialize(client, db_name, tables=nil, count=nil, created_at=nil, updated_at=nil, org_name=nil)
15
37
  super(client)
@@ -68,7 +90,7 @@ class Database < Model
68
90
  end
69
91
 
70
92
  class Table < Model
71
- def initialize(client, db_name, table_name, type, schema, count, created_at=nil, updated_at=nil)
93
+ def initialize(client, db_name, table_name, type, schema, count, created_at=nil, updated_at=nil, estimated_storage_size=nil)
72
94
  super(client)
73
95
  @db_name = db_name
74
96
  @table_name = table_name
@@ -77,9 +99,10 @@ class Table < Model
77
99
  @count = count
78
100
  @created_at = created_at
79
101
  @updated_at = updated_at
102
+ @estimated_storage_size = estimated_storage_size
80
103
  end
81
104
 
82
- attr_reader :type, :db_name, :table_name, :schema, :count
105
+ attr_reader :type, :db_name, :table_name, :schema, :count, :estimated_storage_size
83
106
 
84
107
  alias database_name db_name
85
108
  alias name table_name
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
 
3
- VERSION = '0.8.25'
3
+ VERSION = '0.8.26'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.25
4
+ version: 0.8.26
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-04 00:00:00.000000000 Z
12
+ date: 2012-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack