td-client 0.8.4 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +7 -0
- data/lib/td/client.rb +97 -12
- data/lib/td/client/api.rb +198 -8
- data/lib/td/client/model.rb +102 -5
- data/lib/td/client/version.rb +1 -1
- metadata +6 -6
data/ChangeLog
CHANGED
data/lib/td/client.rb
CHANGED
@@ -104,30 +104,33 @@ class Client
|
|
104
104
|
end
|
105
105
|
|
106
106
|
# => Job
|
107
|
-
def query(db_name, q)
|
108
|
-
job_id = @api.hive_query(q, db_name)
|
107
|
+
def query(db_name, q, rset=nil)
|
108
|
+
job_id = @api.hive_query(q, db_name, rset)
|
109
109
|
Job.new(self, job_id, :hive, q) # TODO url
|
110
110
|
end
|
111
111
|
|
112
112
|
# => [Job]
|
113
113
|
def jobs(from=nil, to=nil)
|
114
114
|
result = @api.list_jobs(from, to)
|
115
|
-
result.map {|job_id,type,status,query,start_at,end_at|
|
116
|
-
|
115
|
+
result.map {|job_id,type,status,query,start_at,end_at,rset|
|
116
|
+
rset = ResultSet.new(self, rset) if rset
|
117
|
+
Job.new(self, job_id, type, query, status, nil, nil, start_at, end_at, nil, rset)
|
117
118
|
}
|
118
119
|
end
|
119
120
|
|
120
121
|
# => Job
|
121
122
|
def job(job_id)
|
122
123
|
job_id = job_id.to_s
|
123
|
-
type, query, status, url, debug, start_at, end_at = @api.show_job(job_id)
|
124
|
-
|
124
|
+
type, query, status, url, debug, start_at, end_at, rset = @api.show_job(job_id)
|
125
|
+
rset = ResultSet.new(self, rset) if rset
|
126
|
+
Job.new(self, job_id, type, query, status, url, debug, start_at, end_at, nil, rset)
|
125
127
|
end
|
126
128
|
|
127
129
|
# => type:Symbol, url:String
|
128
130
|
def job_status(job_id)
|
129
|
-
type, query, status, url, debug, start_at, end_at = @api.show_job(job_id)
|
130
|
-
|
131
|
+
type, query, status, url, debug, start_at, end_at, rset = @api.show_job(job_id)
|
132
|
+
rset = ResultSet.new(self, rset) if rset
|
133
|
+
return query, status, url, debug, start_at, end_at, rset
|
131
134
|
end
|
132
135
|
|
133
136
|
# => result:[{column:String=>value:Object]
|
@@ -166,16 +169,18 @@ class Client
|
|
166
169
|
# [Schedule]
|
167
170
|
def schedules
|
168
171
|
result = @api.list_schedules
|
169
|
-
result.map {|name,cron,query,database|
|
170
|
-
|
172
|
+
result.map {|name,cron,query,database,rset|
|
173
|
+
rset = ResultSet.new(self, rset) if rset
|
174
|
+
Schedule.new(self, name, cron, query, database, rset)
|
171
175
|
}
|
172
176
|
end
|
173
177
|
|
174
178
|
# [ScheduledJob]
|
175
179
|
def history(name, from=nil, to=nil)
|
176
180
|
result = @api.history(name, from, to)
|
177
|
-
result.map {|scheduled_at,job_id,type,status,query,start_at,end_at|
|
178
|
-
|
181
|
+
result.map {|scheduled_at,job_id,type,status,query,start_at,end_at,rset|
|
182
|
+
rset = ResultSet.new(self, rset) if rset
|
183
|
+
ScheduledJob.new(self, scheduled_at, job_id, type, query, status, nil, nil, start_at, end_at, nil, rset)
|
179
184
|
}
|
180
185
|
end
|
181
186
|
|
@@ -183,6 +188,86 @@ class Client
|
|
183
188
|
def import(db_name, table_name, format, stream, size)
|
184
189
|
@api.import(db_name, table_name, format, stream, size)
|
185
190
|
end
|
191
|
+
|
192
|
+
# => [ResultSet]
|
193
|
+
def result_sets
|
194
|
+
info, names = @api.list_result_set
|
195
|
+
sets = names.map {|name|
|
196
|
+
ResultSet.new(self, name)
|
197
|
+
}
|
198
|
+
return sets
|
199
|
+
end
|
200
|
+
|
201
|
+
# => ResultSetInfo
|
202
|
+
def result_set_info
|
203
|
+
info, names = @api.list_result_set
|
204
|
+
info = ResultSetInfo.new(self, *info)
|
205
|
+
return info
|
206
|
+
end
|
207
|
+
|
208
|
+
# => true
|
209
|
+
def create_result_set(name)
|
210
|
+
@api.create_result_set(name)
|
211
|
+
end
|
212
|
+
|
213
|
+
# => true
|
214
|
+
def delete_result_set(name)
|
215
|
+
@api.delete_result_set(name)
|
216
|
+
end
|
217
|
+
|
218
|
+
# => [AggregationSchema]
|
219
|
+
def aggregation_schemas
|
220
|
+
list = @api.list_aggregation_schema
|
221
|
+
list.map {|name,relation_key|
|
222
|
+
AggregationSchema.new(self, name, relation_key)
|
223
|
+
}
|
224
|
+
end
|
225
|
+
|
226
|
+
# => true
|
227
|
+
def create_aggregation_schema(name, relation_key)
|
228
|
+
@api.create_aggregation_schema(name, relation_key)
|
229
|
+
end
|
230
|
+
|
231
|
+
# => true
|
232
|
+
def delete_aggregation_schema(name)
|
233
|
+
@api.delete_aggregation_schema(name)
|
234
|
+
end
|
235
|
+
|
236
|
+
# => AggregationSchema
|
237
|
+
def aggregation_schema(name)
|
238
|
+
relation_key, logs, attrs = @api.show_aggregation_schema(name)
|
239
|
+
logs.map! {|name,comment,database,table,okeys,value_key,count_key|
|
240
|
+
table = Table.new(self, database, table, 'log', nil, nil)
|
241
|
+
LogAggregationSchemaEntry.new(self, name, comment, table,
|
242
|
+
okeys, value_key, count_key)
|
243
|
+
}
|
244
|
+
attrs.map! {|name,comment,database,table,method_name,parameters|
|
245
|
+
table = Table.new(self, database, table, 'log', nil, nil)
|
246
|
+
AttributeAggregationSchemaEntry.new(self, name, comment, table,
|
247
|
+
method_name, parameters)
|
248
|
+
}
|
249
|
+
AggregationSchema.new(self, name, relation_key, logs, attrs)
|
250
|
+
end
|
251
|
+
|
252
|
+
# => true
|
253
|
+
def create_aggregation_log_entry(name, entry_name, comment, db, table, okeys, value_key, count_key)
|
254
|
+
@api.create_aggregation_log_entry(name, entry_name, comment, db, table, okeys, value_key, count_key)
|
255
|
+
end
|
256
|
+
|
257
|
+
# => true
|
258
|
+
def delete_aggregation_log_entry(name, entry_name)
|
259
|
+
@api.delete_aggregation_log_entry(name, entry_name)
|
260
|
+
end
|
261
|
+
|
262
|
+
# => true
|
263
|
+
def create_aggregation_attr_entry(name, entry_name, comment, db, table, method_name, parameters)
|
264
|
+
@api.create_aggregation_attr_entry(name, entry_name, comment, db, table, method_name, parameters)
|
265
|
+
end
|
266
|
+
|
267
|
+
# => true
|
268
|
+
def delete_aggregation_attr_entry(name, entry_name)
|
269
|
+
@api.delete_aggregation_attr_entry(name, entry_name)
|
270
|
+
end
|
186
271
|
end
|
187
272
|
|
188
273
|
|
data/lib/td/client/api.rb
CHANGED
@@ -44,6 +44,10 @@ class API
|
|
44
44
|
validate_database_name(name)
|
45
45
|
end
|
46
46
|
|
47
|
+
def self.validate_result_set_name(name)
|
48
|
+
validate_database_name(name)
|
49
|
+
end
|
50
|
+
|
47
51
|
def self.validate_column_name(name)
|
48
52
|
name = name.to_s
|
49
53
|
if name.empty?
|
@@ -204,7 +208,7 @@ class API
|
|
204
208
|
## Job API
|
205
209
|
##
|
206
210
|
|
207
|
-
# => [(jobId:String, type:Symbol, status:String, start_at:String, end_at:String)]
|
211
|
+
# => [(jobId:String, type:Symbol, status:String, start_at:String, end_at:String, rset:String)]
|
208
212
|
def list_jobs(from=0, to=nil)
|
209
213
|
params = {}
|
210
214
|
params['from'] = from.to_s if from
|
@@ -223,12 +227,13 @@ class API
|
|
223
227
|
query = m['query']
|
224
228
|
start_at = m['start_at']
|
225
229
|
end_at = m['end_at']
|
226
|
-
|
230
|
+
rset = m['result']
|
231
|
+
result << [job_id, type, status, query, start_at, end_at, rset]
|
227
232
|
}
|
228
233
|
return result
|
229
234
|
end
|
230
235
|
|
231
|
-
# => (type:Symbol, status:String, result:String, url:String)
|
236
|
+
# => (type:Symbol, status:String, result:String, url:String, result:String)
|
232
237
|
def show_job(job_id)
|
233
238
|
code, body, res = get("/v3/job/show/#{e job_id}")
|
234
239
|
if code != "200"
|
@@ -244,7 +249,8 @@ class API
|
|
244
249
|
url = js['url']
|
245
250
|
start_at = js['start_at']
|
246
251
|
end_at = js['end_at']
|
247
|
-
|
252
|
+
result = js['result']
|
253
|
+
return [type, query, status, url, debug, start_at, end_at, result]
|
248
254
|
end
|
249
255
|
|
250
256
|
def job_result(job_id)
|
@@ -303,8 +309,10 @@ class API
|
|
303
309
|
end
|
304
310
|
|
305
311
|
# => jobId:String
|
306
|
-
def hive_query(q, db=nil)
|
307
|
-
|
312
|
+
def hive_query(q, db=nil, rset=nil)
|
313
|
+
params = {'query' => q}
|
314
|
+
params['result'] = rset if rset
|
315
|
+
code, body, res = post("/v3/job/issue/hive/#{e db}", params)
|
308
316
|
if code != "200"
|
309
317
|
raise_error("Query failed", res)
|
310
318
|
end
|
@@ -341,6 +349,7 @@ class API
|
|
341
349
|
return js['cron'], js["query"]
|
342
350
|
end
|
343
351
|
|
352
|
+
# => [(name:String, cron:String, query:String, database:String, rset:String)]
|
344
353
|
def list_schedules
|
345
354
|
code, body, res = get("/v3/schedule/list")
|
346
355
|
if code != "200"
|
@@ -354,7 +363,8 @@ class API
|
|
354
363
|
cron = m['cron']
|
355
364
|
query = m['query']
|
356
365
|
database = m['database']
|
357
|
-
|
366
|
+
rset = m['result']
|
367
|
+
result << [name, cron, query, database, rset]
|
358
368
|
}
|
359
369
|
return result
|
360
370
|
end
|
@@ -378,7 +388,8 @@ class API
|
|
378
388
|
start_at = m['start_at']
|
379
389
|
end_at = m['end_at']
|
380
390
|
scheduled_at = m['scheduled_at']
|
381
|
-
|
391
|
+
rset = m['result']
|
392
|
+
result << [scheduled_at, job_id, type, status, query, start_at, end_at, rset]
|
382
393
|
}
|
383
394
|
return result
|
384
395
|
end
|
@@ -401,6 +412,185 @@ class API
|
|
401
412
|
end
|
402
413
|
|
403
414
|
|
415
|
+
####
|
416
|
+
## Result set API
|
417
|
+
##
|
418
|
+
|
419
|
+
# => (
|
420
|
+
# info:(type:String, host:String, port:Integer, database:String, user:String, pass:String)
|
421
|
+
# entries:[name:String]
|
422
|
+
# )
|
423
|
+
def list_result_set
|
424
|
+
code, body, res = get("/v3/result/list")
|
425
|
+
if code != "200"
|
426
|
+
raise_error("List result set failed", res)
|
427
|
+
end
|
428
|
+
# TODO format check
|
429
|
+
js = JSON.load(body)
|
430
|
+
type = (js["type"] || 'unknown').to_s
|
431
|
+
host = js["host"].to_s
|
432
|
+
port = js["port"].to_i
|
433
|
+
database = js["database"].to_s
|
434
|
+
user = js["user"].to_s
|
435
|
+
pass = js["pass"].to_s
|
436
|
+
names = (js["results"] || []).map {|rsets|
|
437
|
+
rsets['name'].to_s
|
438
|
+
}
|
439
|
+
info = [type, host, port, database, user, pass]
|
440
|
+
return info, names
|
441
|
+
end
|
442
|
+
|
443
|
+
# => true
|
444
|
+
def create_result_set(db)
|
445
|
+
code, body, res = post("/v3/result/create/#{e db}")
|
446
|
+
if code != "200"
|
447
|
+
raise_error("Create result set failed", res)
|
448
|
+
end
|
449
|
+
return true
|
450
|
+
end
|
451
|
+
|
452
|
+
# => true
|
453
|
+
def delete_result_set(db)
|
454
|
+
code, body, res = post("/v3/result/delete/#{e db}")
|
455
|
+
if code != "200"
|
456
|
+
raise_error("Delete result set failed", res)
|
457
|
+
end
|
458
|
+
return true
|
459
|
+
end
|
460
|
+
|
461
|
+
|
462
|
+
####
|
463
|
+
## Aggregation Schema API
|
464
|
+
##
|
465
|
+
|
466
|
+
# => [(name:String, relation_key:String)]
|
467
|
+
def list_aggregation_schema
|
468
|
+
code, body, res = get("/v3/aggr/list")
|
469
|
+
if code != "200"
|
470
|
+
raise_error("List aggregation schema failed", res)
|
471
|
+
end
|
472
|
+
# TODO format check
|
473
|
+
js = JSON.load(body)
|
474
|
+
result = js["aggrs"].map {|aggrinfo|
|
475
|
+
name = aggrinfo['name'].to_s
|
476
|
+
relation_key = aggrinfo['relation_key'].to_s
|
477
|
+
[name, relation_key]
|
478
|
+
}
|
479
|
+
return result
|
480
|
+
end
|
481
|
+
|
482
|
+
# => true
|
483
|
+
def create_aggregation_schema(name, relation_key)
|
484
|
+
params = {}
|
485
|
+
params['relation_key'] = relation_key if relation_key
|
486
|
+
code, body, res = post("/v3/aggr/create/#{e name}", params)
|
487
|
+
if code != "200"
|
488
|
+
raise_error("Create aggregation schema failed", res)
|
489
|
+
end
|
490
|
+
return true
|
491
|
+
end
|
492
|
+
|
493
|
+
# => true
|
494
|
+
def delete_aggregation_schema(name)
|
495
|
+
code, body, res = post("/v3/aggr/delete/#{e name}")
|
496
|
+
if code != "200"
|
497
|
+
raise_error("Delete aggregation schema failed", res)
|
498
|
+
end
|
499
|
+
return true
|
500
|
+
end
|
501
|
+
|
502
|
+
# => [
|
503
|
+
# {
|
504
|
+
# relation_key: String,
|
505
|
+
# logs: (entry_name:String, comment:String, database:String, table:String,
|
506
|
+
# os:Array[String], value_key:String?, count_key:String?),
|
507
|
+
# attrs: (entry_name:String, comment:String, database:String, table:String,
|
508
|
+
# method_name:String, parameters:Hash[String=>Object])
|
509
|
+
# }
|
510
|
+
# ]
|
511
|
+
def show_aggregation_schema(name)
|
512
|
+
code, body, res = get("/v3/aggr/show/#{e name}")
|
513
|
+
if code != "200"
|
514
|
+
raise_error("Show job failed", res)
|
515
|
+
end
|
516
|
+
# TODO format check
|
517
|
+
js = JSON.load(body)
|
518
|
+
relation_key = js['relation_key']
|
519
|
+
logs = js['logs'].map {|loginfo|
|
520
|
+
entry_name = loginfo['name'].to_s
|
521
|
+
comment = loginfo['comment'].to_s
|
522
|
+
database = loginfo['database'].to_s
|
523
|
+
table = loginfo['table'].to_s
|
524
|
+
os = loginfo['os']
|
525
|
+
value_key = loginfo['value_key'].to_s
|
526
|
+
count_key = loginfo['count_key'].to_s
|
527
|
+
value_key = nil if value_key.empty?
|
528
|
+
count_key = nil if count_key.empty?
|
529
|
+
[entry_name, comment, database, table, os, value_key, count_key]
|
530
|
+
}
|
531
|
+
attrs = js['attrs'].map {|attrinfo|
|
532
|
+
entry_name = attrinfo['name'].to_s
|
533
|
+
comment = attrinfo['comment'].to_s
|
534
|
+
database = attrinfo['database'].to_s
|
535
|
+
table = attrinfo['table'].to_s
|
536
|
+
method_name = attrinfo['method_name'].to_s
|
537
|
+
parameters = attrinfo['parameters'].to_s
|
538
|
+
parameters = "{}" if parameters.empty?
|
539
|
+
parameters = JSON.parse(parameters)
|
540
|
+
[entry_name, comment, database, table, method_name, parameters]
|
541
|
+
}
|
542
|
+
return [relation_key, logs, attrs]
|
543
|
+
end
|
544
|
+
|
545
|
+
# => true
|
546
|
+
def create_aggregation_log_entry(name, entry_name, comment, db, table, okeys, value_key, count_key)
|
547
|
+
params = {}
|
548
|
+
params['comment'] = comment if comment
|
549
|
+
okeys.each_with_index {|okey,i|
|
550
|
+
params["os[#{i}]"] = okey
|
551
|
+
}
|
552
|
+
params['value_key'] = value_key if value_key
|
553
|
+
params['count_key'] = count_key if count_key
|
554
|
+
code, body, res = post("/v3/aggr/entry/log/create/#{e name}/#{e entry_name}/#{e db}/#{e table}", params)
|
555
|
+
if code != "200"
|
556
|
+
raise_error("Create aggregation log entry failed", res)
|
557
|
+
end
|
558
|
+
return true
|
559
|
+
end
|
560
|
+
|
561
|
+
# => true
|
562
|
+
def delete_aggregation_log_entry(name, entry_name)
|
563
|
+
code, body, res = post("/v3/aggr/entry/log/delete/#{e name}/#{e entry_name}")
|
564
|
+
if code != "200"
|
565
|
+
raise_error("Delete aggregation log entry failed", res)
|
566
|
+
end
|
567
|
+
return true
|
568
|
+
end
|
569
|
+
|
570
|
+
# => true
|
571
|
+
def create_aggregation_attr_entry(name, entry_name, comment, db, table, method_name, parameters)
|
572
|
+
params = {}
|
573
|
+
parameters.each_pair {|k,v|
|
574
|
+
params["parameters[#{k}]"] = v.to_s
|
575
|
+
}
|
576
|
+
params['comment'] = comment if comment
|
577
|
+
code, body, res = post("/v3/aggr/entry/attr/create/#{e name}/#{e entry_name}/#{e db}/#{e table}/#{e method_name}", params)
|
578
|
+
if code != "200"
|
579
|
+
raise_error("Create aggregation attr entry failed", res)
|
580
|
+
end
|
581
|
+
return true
|
582
|
+
end
|
583
|
+
|
584
|
+
# => true
|
585
|
+
def delete_aggregation_attr_entry(name, entry_name)
|
586
|
+
code, body, res = post("/v3/aggr/entry/attr/delete/#{e name}/#{e entry_name}")
|
587
|
+
if code != "200"
|
588
|
+
raise_error("Delete aggregation attr entry failed", res)
|
589
|
+
end
|
590
|
+
return true
|
591
|
+
end
|
592
|
+
|
593
|
+
|
404
594
|
####
|
405
595
|
## User API
|
406
596
|
##
|
data/lib/td/client/model.rb
CHANGED
@@ -148,7 +148,7 @@ class Job < Model
|
|
148
148
|
STATUS_KILLED = "killed"
|
149
149
|
FINISHED_STATUS = [STATUS_SUCCESS, STATUS_ERROR, STATUS_KILLED]
|
150
150
|
|
151
|
-
def initialize(client, job_id, type, query, status=nil, url=nil, debug=nil, start_at=nil, end_at=nil, result=nil)
|
151
|
+
def initialize(client, job_id, type, query, status=nil, url=nil, debug=nil, start_at=nil, end_at=nil, result=nil, rset=nil)
|
152
152
|
super(client)
|
153
153
|
@job_id = job_id
|
154
154
|
@type = type
|
@@ -159,9 +159,10 @@ class Job < Model
|
|
159
159
|
@start_at = start_at
|
160
160
|
@end_at = end_at
|
161
161
|
@result = result
|
162
|
+
@rset = rset
|
162
163
|
end
|
163
164
|
|
164
|
-
attr_reader :job_id, :type
|
165
|
+
attr_reader :job_id, :type, :rset
|
165
166
|
|
166
167
|
def wait(timeout=nil)
|
167
168
|
# TODO
|
@@ -201,6 +202,10 @@ class Job < Model
|
|
201
202
|
@end_at && !@end_at.empty? ? Time.parse(@end_at) : nil
|
202
203
|
end
|
203
204
|
|
205
|
+
def rset_name
|
206
|
+
@rset ? @rset.name : nil
|
207
|
+
end
|
208
|
+
|
204
209
|
def result
|
205
210
|
unless @result
|
206
211
|
return nil unless finished?
|
@@ -252,7 +257,7 @@ class Job < Model
|
|
252
257
|
end
|
253
258
|
|
254
259
|
def update_status!
|
255
|
-
query, status, url, debug, start_at, end_at = @client.job_status(@job_id)
|
260
|
+
query, status, url, debug, start_at, end_at, rset = @client.job_status(@job_id)
|
256
261
|
@query = query
|
257
262
|
@status = status
|
258
263
|
@url = url
|
@@ -277,15 +282,107 @@ end
|
|
277
282
|
|
278
283
|
|
279
284
|
class Schedule < Model
|
280
|
-
def initialize(client, name, cron, query, database=nil)
|
285
|
+
def initialize(client, name, cron, query, database=nil, rset=nil)
|
281
286
|
super(client)
|
282
287
|
@name = name
|
283
288
|
@cron = cron
|
284
289
|
@query = query
|
285
290
|
@database = database
|
291
|
+
@rset = rset
|
292
|
+
end
|
293
|
+
|
294
|
+
def rset_name
|
295
|
+
@rset ? @rset.name : nil
|
296
|
+
end
|
297
|
+
|
298
|
+
attr_reader :name, :cron, :query, :database, :rset
|
299
|
+
end
|
300
|
+
|
301
|
+
|
302
|
+
class ResultSetInfo < Model
|
303
|
+
def initialize(client, type, host, port, database, user, password)
|
304
|
+
super(client)
|
305
|
+
@type = type
|
306
|
+
@host = host
|
307
|
+
@port = port
|
308
|
+
@database = database
|
309
|
+
@user = user
|
310
|
+
@password = password
|
311
|
+
end
|
312
|
+
|
313
|
+
attr_reader :type, :host, :port, :database, :user, :password
|
314
|
+
end
|
315
|
+
|
316
|
+
|
317
|
+
class ResultSet < Model
|
318
|
+
def initialize(client, name)
|
319
|
+
super(client)
|
320
|
+
@name = name
|
321
|
+
end
|
322
|
+
|
323
|
+
attr_reader :name
|
324
|
+
end
|
325
|
+
|
326
|
+
|
327
|
+
class AggregationSchema < Model
|
328
|
+
def initialize(client, name, relation_key, logs=nil, attributes=nil)
|
329
|
+
super(client)
|
330
|
+
@name = name
|
331
|
+
@relation_key = relation_key
|
332
|
+
@logs = logs
|
333
|
+
@attributes = attributes
|
334
|
+
end
|
335
|
+
|
336
|
+
attr_reader :name, :relation_key
|
337
|
+
|
338
|
+
def logs
|
339
|
+
update_entries! unless @logs
|
340
|
+
@logs
|
341
|
+
end
|
342
|
+
|
343
|
+
def attributes
|
344
|
+
update_entries! unless @attributes
|
345
|
+
@attributes
|
346
|
+
end
|
347
|
+
|
348
|
+
def update_entries!
|
349
|
+
sc = @client.aggregation_schema(@name)
|
350
|
+
@relation_key = sc.relation_key
|
351
|
+
@logs = sc.logs
|
352
|
+
@attributes = sc.attributes
|
353
|
+
self
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
|
358
|
+
class LogAggregationSchemaEntry < Model
|
359
|
+
def initialize(client, name, comment, table, okeys, value_key, count_key)
|
360
|
+
super(client)
|
361
|
+
@name = name
|
362
|
+
@comment = comment
|
363
|
+
@table = table
|
364
|
+
@okeys = okeys
|
365
|
+
@value_key = value_key
|
366
|
+
@count_key = count_key
|
367
|
+
end
|
368
|
+
|
369
|
+
attr_reader :name, :comment, :table
|
370
|
+
attr_reader :okeys, :value_key, :count_key
|
371
|
+
end
|
372
|
+
|
373
|
+
|
374
|
+
class AttributeAggregationSchemaEntry < Model
|
375
|
+
def initialize(client, name, comment, table, method_name, parameters)
|
376
|
+
super(client)
|
377
|
+
@name = name
|
378
|
+
@comment = comment
|
379
|
+
@table = table
|
380
|
+
@method_name = method_name
|
381
|
+
@parameters = parameters
|
286
382
|
end
|
287
383
|
|
288
|
-
attr_reader :name, :
|
384
|
+
attr_reader :name, :comment, :table
|
385
|
+
attr_reader :method_name, :parameters
|
289
386
|
end
|
290
387
|
|
291
388
|
|
data/lib/td/client/version.rb
CHANGED
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.
|
4
|
+
version: 0.8.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-12-04 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70311656540280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.4.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70311656540280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
requirement: &
|
27
|
+
requirement: &70311656539740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 1.4.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70311656539740
|
36
36
|
description:
|
37
37
|
email:
|
38
38
|
executables: []
|