gcloud 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/CHANGELOG.md +36 -0
- data/lib/gcloud/backoff.rb +5 -5
- data/lib/gcloud/bigquery.rb +24 -0
- data/lib/gcloud/bigquery/connection.rb +32 -25
- data/lib/gcloud/bigquery/data.rb +99 -1
- data/lib/gcloud/bigquery/dataset.rb +5 -13
- data/lib/gcloud/bigquery/dataset/list.rb +124 -2
- data/lib/gcloud/bigquery/job/list.rb +125 -2
- data/lib/gcloud/bigquery/project.rb +30 -27
- data/lib/gcloud/bigquery/query_data.rb +102 -1
- data/lib/gcloud/bigquery/table.rb +17 -2
- data/lib/gcloud/bigquery/table/list.rb +132 -3
- data/lib/gcloud/datastore.rb +30 -19
- data/lib/gcloud/datastore/dataset.rb +2 -22
- data/lib/gcloud/datastore/dataset/lookup_results.rb +160 -4
- data/lib/gcloud/datastore/dataset/query_results.rb +229 -23
- data/lib/gcloud/datastore/transaction.rb +2 -5
- data/lib/gcloud/dns.rb +20 -0
- data/lib/gcloud/dns/change/list.rb +109 -6
- data/lib/gcloud/dns/connection.rb +18 -9
- data/lib/gcloud/dns/project.rb +4 -8
- data/lib/gcloud/dns/record/list.rb +96 -13
- data/lib/gcloud/dns/zone.rb +9 -24
- data/lib/gcloud/dns/zone/list.rb +102 -5
- data/lib/gcloud/dns/zone/transaction.rb +1 -1
- data/lib/gcloud/logging.rb +19 -0
- data/lib/gcloud/logging/entry/list.rb +83 -14
- data/lib/gcloud/logging/metric/list.rb +89 -12
- data/lib/gcloud/logging/project.rb +18 -30
- data/lib/gcloud/logging/resource_descriptor/list.rb +105 -6
- data/lib/gcloud/logging/sink/list.rb +89 -12
- data/lib/gcloud/pubsub.rb +23 -0
- data/lib/gcloud/pubsub/project.rb +21 -29
- data/lib/gcloud/pubsub/service.rb +1 -3
- data/lib/gcloud/pubsub/subscription/list.rb +167 -13
- data/lib/gcloud/pubsub/topic.rb +15 -13
- data/lib/gcloud/pubsub/topic/batch.rb +10 -4
- data/lib/gcloud/pubsub/topic/list.rb +134 -8
- data/lib/gcloud/resource_manager.rb +24 -0
- data/lib/gcloud/resource_manager/connection.rb +18 -9
- data/lib/gcloud/resource_manager/manager.rb +7 -4
- data/lib/gcloud/resource_manager/project/list.rb +93 -14
- data/lib/gcloud/storage.rb +63 -0
- data/lib/gcloud/storage/bucket.rb +100 -61
- data/lib/gcloud/storage/bucket/list.rb +132 -8
- data/lib/gcloud/storage/connection.rb +68 -44
- data/lib/gcloud/storage/errors.rb +9 -3
- data/lib/gcloud/storage/file.rb +48 -4
- data/lib/gcloud/storage/file/list.rb +151 -15
- data/lib/gcloud/storage/file/verifier.rb +3 -3
- data/lib/gcloud/storage/project.rb +15 -30
- data/lib/gcloud/translate.rb +20 -0
- data/lib/gcloud/translate/connection.rb +12 -3
- data/lib/gcloud/version.rb +1 -1
- data/lib/gcloud/vision.rb +20 -0
- data/lib/gcloud/vision/connection.rb +10 -1
- data/lib/gcloud/vision/image.rb +15 -18
- metadata +16 -2
@@ -502,23 +502,15 @@ module Gcloud
|
|
502
502
|
# puts table.name
|
503
503
|
# end
|
504
504
|
#
|
505
|
-
# @example
|
505
|
+
# @example Retrieve all tables: (See {Table::List#all})
|
506
506
|
# require "gcloud"
|
507
507
|
#
|
508
508
|
# gcloud = Gcloud.new
|
509
509
|
# bigquery = gcloud.bigquery
|
510
510
|
# dataset = bigquery.dataset "my_dataset"
|
511
|
-
#
|
512
|
-
#
|
513
|
-
#
|
514
|
-
# while tmp_tables.any? do
|
515
|
-
# tmp_tables.each do |table|
|
516
|
-
# all_tables << table
|
517
|
-
# end
|
518
|
-
# # break loop if no more tables available
|
519
|
-
# break if tmp_tables.token.nil?
|
520
|
-
# # get the next group of tables
|
521
|
-
# tmp_tables = dataset.tables token: tmp_tables.token
|
511
|
+
# tables = dataset.tables
|
512
|
+
# tables.all do |table|
|
513
|
+
# puts table.name
|
522
514
|
# end
|
523
515
|
#
|
524
516
|
# @!group Table
|
@@ -528,7 +520,7 @@ module Gcloud
|
|
528
520
|
options = { token: token, max: max }
|
529
521
|
resp = connection.list_tables dataset_id, options
|
530
522
|
if resp.success?
|
531
|
-
Table::List.from_response resp, connection
|
523
|
+
Table::List.from_response resp, connection, dataset_id, max
|
532
524
|
else
|
533
525
|
fail ApiError.from_response(resp)
|
534
526
|
end
|
@@ -30,21 +30,143 @@ module Gcloud
|
|
30
30
|
attr_accessor :etag
|
31
31
|
|
32
32
|
##
|
33
|
-
# Create a new Dataset::List with an array of datasets.
|
33
|
+
# @private Create a new Dataset::List with an array of datasets.
|
34
34
|
def initialize arr = []
|
35
35
|
super arr
|
36
36
|
end
|
37
37
|
|
38
|
+
##
|
39
|
+
# Whether there is a next page of datasets.
|
40
|
+
#
|
41
|
+
# @return [Boolean]
|
42
|
+
#
|
43
|
+
# @example
|
44
|
+
# require "gcloud"
|
45
|
+
#
|
46
|
+
# gcloud = Gcloud.new
|
47
|
+
# bigquery = gcloud.bigquery
|
48
|
+
#
|
49
|
+
# datasets = bigquery.datasets
|
50
|
+
# if datasets.next?
|
51
|
+
# next_datasets = datasets.next
|
52
|
+
# end
|
53
|
+
def next?
|
54
|
+
!token.nil?
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Retrieve the next page of datasets.
|
59
|
+
#
|
60
|
+
# @return [Dataset::List]
|
61
|
+
#
|
62
|
+
# @example
|
63
|
+
# require "gcloud"
|
64
|
+
#
|
65
|
+
# gcloud = Gcloud.new
|
66
|
+
# bigquery = gcloud.bigquery
|
67
|
+
#
|
68
|
+
# datasets = bigquery.datasets
|
69
|
+
# if datasets.next?
|
70
|
+
# next_datasets = datasets.next
|
71
|
+
# end
|
72
|
+
def next
|
73
|
+
return nil unless next?
|
74
|
+
ensure_connection!
|
75
|
+
options = { all: @hidden, token: token, max: @max }
|
76
|
+
resp = @connection.list_datasets options
|
77
|
+
if resp.success?
|
78
|
+
self.class.from_response resp, @connection
|
79
|
+
else
|
80
|
+
fail ApiError.from_response(resp)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# Retrieves all datasets by repeatedly loading {#next} until {#next?}
|
86
|
+
# returns `false`. Calls the given block once for each dataset, which is
|
87
|
+
# passed as the parameter.
|
88
|
+
#
|
89
|
+
# An Enumerator is returned if no block is given.
|
90
|
+
#
|
91
|
+
# This method may make several API calls until all datasets are
|
92
|
+
# retrieved. Be sure to use as narrow a search criteria as possible.
|
93
|
+
# Please use with caution.
|
94
|
+
#
|
95
|
+
# @param [Integer] request_limit The upper limit of API requests to make
|
96
|
+
# to load all datasets. Default is no limit.
|
97
|
+
# @yield [dataset] The block for accessing each dataset.
|
98
|
+
# @yieldparam [Dataset] dataset The dataset object.
|
99
|
+
#
|
100
|
+
# @return [Enumerator]
|
101
|
+
#
|
102
|
+
# @example Iterating each result by passing a block:
|
103
|
+
# require "gcloud"
|
104
|
+
#
|
105
|
+
# gcloud = Gcloud.new
|
106
|
+
# bigquery = gcloud.bigquery
|
107
|
+
#
|
108
|
+
# bigquery.datasets.all do |dataset|
|
109
|
+
# puts dataset.name
|
110
|
+
# end
|
111
|
+
#
|
112
|
+
# @example Using the enumerator by not passing a block:
|
113
|
+
# require "gcloud"
|
114
|
+
#
|
115
|
+
# gcloud = Gcloud.new
|
116
|
+
# bigquery = gcloud.bigquery
|
117
|
+
#
|
118
|
+
# all_names = bigquery.datasets.all.map do |dataset|
|
119
|
+
# dataset.name
|
120
|
+
# end
|
121
|
+
#
|
122
|
+
# @example Limit the number of API calls made:
|
123
|
+
# require "gcloud"
|
124
|
+
#
|
125
|
+
# gcloud = Gcloud.new
|
126
|
+
# bigquery = gcloud.bigquery
|
127
|
+
#
|
128
|
+
# bigquery.datasets.all(request_limit: 10) do |dataset|
|
129
|
+
# puts dataset.name
|
130
|
+
# end
|
131
|
+
#
|
132
|
+
def all request_limit: nil
|
133
|
+
request_limit = request_limit.to_i if request_limit
|
134
|
+
unless block_given?
|
135
|
+
return enum_for(:all, request_limit: request_limit)
|
136
|
+
end
|
137
|
+
results = self
|
138
|
+
loop do
|
139
|
+
results.each { |r| yield r }
|
140
|
+
if request_limit
|
141
|
+
request_limit -= 1
|
142
|
+
break if request_limit < 0
|
143
|
+
end
|
144
|
+
break unless results.next?
|
145
|
+
results = results.next
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
38
149
|
##
|
39
150
|
# @private New Dataset::List from a response object.
|
40
|
-
def self.from_response resp, conn
|
151
|
+
def self.from_response resp, conn, hidden = nil, max = nil
|
41
152
|
datasets = List.new(Array(resp.data["datasets"]).map do |gapi_object|
|
42
153
|
Dataset.from_gapi gapi_object, conn
|
43
154
|
end)
|
44
155
|
datasets.instance_variable_set "@token", resp.data["nextPageToken"]
|
45
156
|
datasets.instance_variable_set "@etag", resp.data["etag"]
|
157
|
+
datasets.instance_variable_set "@connection", conn
|
158
|
+
datasets.instance_variable_set "@hidden", hidden
|
159
|
+
datasets.instance_variable_set "@max", max
|
46
160
|
datasets
|
47
161
|
end
|
162
|
+
|
163
|
+
protected
|
164
|
+
|
165
|
+
##
|
166
|
+
# Raise an error unless an active connection is available.
|
167
|
+
def ensure_connection!
|
168
|
+
fail "Must have active connection" unless @connection
|
169
|
+
end
|
48
170
|
end
|
49
171
|
end
|
50
172
|
end
|
@@ -33,22 +33,145 @@ module Gcloud
|
|
33
33
|
attr_accessor :total
|
34
34
|
|
35
35
|
##
|
36
|
-
# Create a new Job::List with an array of jobs.
|
36
|
+
# @private Create a new Job::List with an array of jobs.
|
37
37
|
def initialize arr = []
|
38
38
|
super arr
|
39
39
|
end
|
40
40
|
|
41
|
+
##
|
42
|
+
# Whether there is a next page of jobs.
|
43
|
+
#
|
44
|
+
# @return [Boolean]
|
45
|
+
#
|
46
|
+
# @example
|
47
|
+
# require "gcloud"
|
48
|
+
#
|
49
|
+
# gcloud = Gcloud.new
|
50
|
+
# bigquery = gcloud.bigquery
|
51
|
+
#
|
52
|
+
# jobs = bigquery.jobs
|
53
|
+
# if jobs.next?
|
54
|
+
# next_jobs = jobs.next
|
55
|
+
# end
|
56
|
+
def next?
|
57
|
+
!token.nil?
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Retrieve the next page of jobs.
|
62
|
+
#
|
63
|
+
# @return [Job::List]
|
64
|
+
#
|
65
|
+
# @example
|
66
|
+
# require "gcloud"
|
67
|
+
#
|
68
|
+
# gcloud = Gcloud.new
|
69
|
+
# bigquery = gcloud.bigquery
|
70
|
+
#
|
71
|
+
# jobs = bigquery.jobs
|
72
|
+
# if jobs.next?
|
73
|
+
# next_jobs = jobs.next
|
74
|
+
# end
|
75
|
+
def next
|
76
|
+
return nil unless next?
|
77
|
+
ensure_connection!
|
78
|
+
options = { all: @hidden, token: token, max: @max, filter: @filter }
|
79
|
+
resp = @connection.list_jobs options
|
80
|
+
if resp.success?
|
81
|
+
self.class.from_response resp, @connection, @hidden, @max, @filter
|
82
|
+
else
|
83
|
+
fail ApiError.from_response(resp)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Retrieves all jobs by repeatedly loading {#next} until {#next?}
|
89
|
+
# returns `false`. Calls the given block once for each job, which is
|
90
|
+
# passed as the parameter.
|
91
|
+
#
|
92
|
+
# An Enumerator is returned if no block is given.
|
93
|
+
#
|
94
|
+
# This method may make several API calls until all jobs are retrieved.
|
95
|
+
# Be sure to use as narrow a search criteria as possible. Please use
|
96
|
+
# with caution.
|
97
|
+
#
|
98
|
+
# @param [Integer] request_limit The upper limit of API requests to make
|
99
|
+
# to load all jobs. Default is no limit.
|
100
|
+
# @yield [job] The block for accessing each job.
|
101
|
+
# @yieldparam [Job] job The job object.
|
102
|
+
#
|
103
|
+
# @return [Enumerator]
|
104
|
+
#
|
105
|
+
# @example Iterating each job by passing a block:
|
106
|
+
# require "gcloud"
|
107
|
+
#
|
108
|
+
# gcloud = Gcloud.new
|
109
|
+
# bigquery = gcloud.bigquery
|
110
|
+
#
|
111
|
+
# bigquery.jobs.all do |job|
|
112
|
+
# puts job.state
|
113
|
+
# end
|
114
|
+
#
|
115
|
+
# @example Using the enumerator by not passing a block:
|
116
|
+
# require "gcloud"
|
117
|
+
#
|
118
|
+
# gcloud = Gcloud.new
|
119
|
+
# bigquery = gcloud.bigquery
|
120
|
+
#
|
121
|
+
# all_states = bigquery.jobs.all.map do |job|
|
122
|
+
# job.state
|
123
|
+
# end
|
124
|
+
#
|
125
|
+
# @example Limit the number of API calls made:
|
126
|
+
# require "gcloud"
|
127
|
+
#
|
128
|
+
# gcloud = Gcloud.new
|
129
|
+
# bigquery = gcloud.bigquery
|
130
|
+
#
|
131
|
+
# bigquery.jobs.all(request_limit: 10) do |job|
|
132
|
+
# puts job.state
|
133
|
+
# end
|
134
|
+
#
|
135
|
+
def all request_limit: nil
|
136
|
+
request_limit = request_limit.to_i if request_limit
|
137
|
+
unless block_given?
|
138
|
+
return enum_for(:all, request_limit: request_limit)
|
139
|
+
end
|
140
|
+
results = self
|
141
|
+
loop do
|
142
|
+
results.each { |r| yield r }
|
143
|
+
if request_limit
|
144
|
+
request_limit -= 1
|
145
|
+
break if request_limit < 0
|
146
|
+
end
|
147
|
+
break unless results.next?
|
148
|
+
results = results.next
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
41
152
|
##
|
42
153
|
# @private New Job::List from a response object.
|
43
|
-
def self.from_response resp, conn
|
154
|
+
def self.from_response resp, conn, hidden = nil, max = nil, filter = nil
|
44
155
|
jobs = List.new(Array(resp.data["jobs"]).map do |gapi_object|
|
45
156
|
Job.from_gapi gapi_object, conn
|
46
157
|
end)
|
47
158
|
jobs.instance_variable_set "@token", resp.data["nextPageToken"]
|
48
159
|
jobs.instance_variable_set "@etag", resp.data["etag"]
|
49
160
|
jobs.instance_variable_set "@total", resp.data["totalItems"]
|
161
|
+
jobs.instance_variable_set "@connection", conn
|
162
|
+
jobs.instance_variable_set "@hidden", hidden
|
163
|
+
jobs.instance_variable_set "@max", max
|
164
|
+
jobs.instance_variable_set "@filter", filter
|
50
165
|
jobs
|
51
166
|
end
|
167
|
+
|
168
|
+
protected
|
169
|
+
|
170
|
+
##
|
171
|
+
# Raise an error unless an active connection is available.
|
172
|
+
def ensure_connection!
|
173
|
+
fail "Must have active connection" unless @connection
|
174
|
+
end
|
52
175
|
end
|
53
176
|
end
|
54
177
|
end
|
@@ -210,6 +210,17 @@ module Gcloud
|
|
210
210
|
# puts row["name"]
|
211
211
|
# end
|
212
212
|
#
|
213
|
+
# @example Retrieve all rows: (See {QueryData#all})
|
214
|
+
# require "gcloud"
|
215
|
+
#
|
216
|
+
# gcloud = Gcloud.new
|
217
|
+
# bigquery = gcloud.bigquery
|
218
|
+
#
|
219
|
+
# data = bigquery.query "SELECT name FROM [my_proj:my_data.my_table]"
|
220
|
+
# data.all do |row|
|
221
|
+
# puts row["name"]
|
222
|
+
# end
|
223
|
+
#
|
213
224
|
def query query, max: nil, timeout: 10000, dryrun: nil, cache: true,
|
214
225
|
dataset: nil, project: nil
|
215
226
|
ensure_connection!
|
@@ -352,30 +363,23 @@ module Gcloud
|
|
352
363
|
# puts dataset.name
|
353
364
|
# end
|
354
365
|
#
|
355
|
-
# @example Retrieve
|
366
|
+
# @example Retrieve hidden datasets with the `all` optional arg:
|
356
367
|
# require "gcloud"
|
357
368
|
#
|
358
369
|
# gcloud = Gcloud.new
|
359
370
|
# bigquery = gcloud.bigquery
|
360
371
|
#
|
361
|
-
# all_datasets = bigquery.datasets
|
372
|
+
# all_datasets = bigquery.datasets all: true
|
362
373
|
#
|
363
|
-
# @example
|
374
|
+
# @example Retrieve all datasets: (See {Dataset::List#all})
|
364
375
|
# require "gcloud"
|
365
376
|
#
|
366
377
|
# gcloud = Gcloud.new
|
367
378
|
# bigquery = gcloud.bigquery
|
368
379
|
#
|
369
|
-
#
|
370
|
-
#
|
371
|
-
#
|
372
|
-
# tmp_datasets.each do |dataset|
|
373
|
-
# all_datasets << dataset
|
374
|
-
# end
|
375
|
-
# # break loop if no more datasets available
|
376
|
-
# break if tmp_datasets.token.nil?
|
377
|
-
# # get the next group of datasets
|
378
|
-
# tmp_datasets = bigquery.datasets token: tmp_datasets.token
|
380
|
+
# datasets = bigquery.datasets
|
381
|
+
# datasets.all do |dataset|
|
382
|
+
# puts dataset.name
|
379
383
|
# end
|
380
384
|
#
|
381
385
|
def datasets all: nil, token: nil, max: nil
|
@@ -383,7 +387,7 @@ module Gcloud
|
|
383
387
|
options = { all: all, token: token, max: max }
|
384
388
|
resp = connection.list_datasets options
|
385
389
|
if resp.success?
|
386
|
-
Dataset::List.from_response resp, connection
|
390
|
+
Dataset::List.from_response resp, connection, all, max
|
387
391
|
else
|
388
392
|
fail ApiError.from_response(resp)
|
389
393
|
end
|
@@ -442,31 +446,30 @@ module Gcloud
|
|
442
446
|
# bigquery = gcloud.bigquery
|
443
447
|
#
|
444
448
|
# jobs = bigquery.jobs
|
449
|
+
# jobs.each do |job|
|
450
|
+
# # process job
|
451
|
+
# end
|
445
452
|
#
|
446
|
-
# @example Retrieve only running jobs using the
|
453
|
+
# @example Retrieve only running jobs using the `filter` optional arg:
|
447
454
|
# require "gcloud"
|
448
455
|
#
|
449
456
|
# gcloud = Gcloud.new
|
450
457
|
# bigquery = gcloud.bigquery
|
451
458
|
#
|
452
459
|
# running_jobs = bigquery.jobs filter: "running"
|
460
|
+
# running_jobs.each do |job|
|
461
|
+
# # process job
|
462
|
+
# end
|
453
463
|
#
|
454
|
-
# @example
|
464
|
+
# @example Retrieve all jobs: (See {Job::List#all})
|
455
465
|
# require "gcloud"
|
456
466
|
#
|
457
467
|
# gcloud = Gcloud.new
|
458
468
|
# bigquery = gcloud.bigquery
|
459
469
|
#
|
460
|
-
#
|
461
|
-
#
|
462
|
-
#
|
463
|
-
# tmp_jobs.each do |job|
|
464
|
-
# all_jobs << job
|
465
|
-
# end
|
466
|
-
# # break loop if no more jobs available
|
467
|
-
# break if tmp_jobs.token.nil?
|
468
|
-
# # get the next group of jobs
|
469
|
-
# tmp_jobs = bigquery.jobs token: tmp_jobs.token
|
470
|
+
# jobs = bigquery.jobs
|
471
|
+
# jobs.all do |job|
|
472
|
+
# # process job
|
470
473
|
# end
|
471
474
|
#
|
472
475
|
def jobs all: nil, token: nil, max: nil, filter: nil
|
@@ -474,7 +477,7 @@ module Gcloud
|
|
474
477
|
options = { all: all, token: token, max: max, filter: filter }
|
475
478
|
resp = connection.list_jobs options
|
476
479
|
if resp.success?
|
477
|
-
Job::List.from_response resp, connection
|
480
|
+
Job::List.from_response resp, connection, all, max, filter
|
478
481
|
else
|
479
482
|
fail ApiError.from_response(resp)
|
480
483
|
end
|
@@ -73,11 +73,43 @@ module Gcloud
|
|
73
73
|
end
|
74
74
|
|
75
75
|
##
|
76
|
-
#
|
76
|
+
# Whether there is a next page of query data.
|
77
|
+
#
|
78
|
+
# @return [Boolean]
|
79
|
+
#
|
80
|
+
# @example
|
81
|
+
# require "gcloud"
|
82
|
+
#
|
83
|
+
# gcloud = Gcloud.new
|
84
|
+
# bigquery = gcloud.bigquery
|
85
|
+
# job = bigquery.job "my_job"
|
86
|
+
#
|
87
|
+
# data = job.query_results
|
88
|
+
# if data.next?
|
89
|
+
# next_data = data.next
|
90
|
+
# end
|
91
|
+
#
|
77
92
|
def next?
|
78
93
|
!token.nil?
|
79
94
|
end
|
80
95
|
|
96
|
+
##
|
97
|
+
# Retrieve the next page of query data.
|
98
|
+
#
|
99
|
+
# @return [QueryData]
|
100
|
+
#
|
101
|
+
# @example
|
102
|
+
# require "gcloud"
|
103
|
+
#
|
104
|
+
# gcloud = Gcloud.new
|
105
|
+
# bigquery = gcloud.bigquery
|
106
|
+
# job = bigquery.job "my_job"
|
107
|
+
#
|
108
|
+
# data = job.query_results
|
109
|
+
# if data.next?
|
110
|
+
# next_data = data.next
|
111
|
+
# end
|
112
|
+
#
|
81
113
|
def next
|
82
114
|
return nil unless next?
|
83
115
|
ensure_connection!
|
@@ -89,6 +121,75 @@ module Gcloud
|
|
89
121
|
end
|
90
122
|
end
|
91
123
|
|
124
|
+
##
|
125
|
+
# Retrieves all rows by repeatedly loading {#next} until {#next?} returns
|
126
|
+
# `false`. Calls the given block once for each row, which is passed as the
|
127
|
+
# parameter.
|
128
|
+
#
|
129
|
+
# An Enumerator is returned if no block is given.
|
130
|
+
#
|
131
|
+
# This method may make several API calls until all rows are retrieved. Be
|
132
|
+
# sure to use as narrow a search criteria as possible. Please use with
|
133
|
+
# caution.
|
134
|
+
#
|
135
|
+
# @param [Integer] request_limit The upper limit of API requests to make
|
136
|
+
# to load all data. Default is no limit.
|
137
|
+
# @yield [row] The block for accessing each row of data.
|
138
|
+
# @yieldparam [Hash] row The row object.
|
139
|
+
#
|
140
|
+
# @return [Enumerator]
|
141
|
+
#
|
142
|
+
# @example Iterating each row by passing a block:
|
143
|
+
# require "gcloud"
|
144
|
+
#
|
145
|
+
# gcloud = Gcloud.new
|
146
|
+
# bigquery = gcloud.bigquery
|
147
|
+
# job = bigquery.job "my_job"
|
148
|
+
#
|
149
|
+
# data = job.query_results
|
150
|
+
# data.all do |row|
|
151
|
+
# puts row["word"]
|
152
|
+
# end
|
153
|
+
#
|
154
|
+
# @example Using the enumerator by not passing a block:
|
155
|
+
# require "gcloud"
|
156
|
+
#
|
157
|
+
# gcloud = Gcloud.new
|
158
|
+
# bigquery = gcloud.bigquery
|
159
|
+
# job = bigquery.job "my_job"
|
160
|
+
#
|
161
|
+
# data = job.query_results
|
162
|
+
# words = data.all.map do |row|
|
163
|
+
# row["word"]
|
164
|
+
# end
|
165
|
+
#
|
166
|
+
# @example Limit the number of API calls made:
|
167
|
+
# require "gcloud"
|
168
|
+
#
|
169
|
+
# gcloud = Gcloud.new
|
170
|
+
# bigquery = gcloud.bigquery
|
171
|
+
# job = bigquery.job "my_job"
|
172
|
+
#
|
173
|
+
# data = job.query_results
|
174
|
+
# data.all(request_limit: 10) do |row|
|
175
|
+
# puts row["word"]
|
176
|
+
# end
|
177
|
+
#
|
178
|
+
def all request_limit: nil
|
179
|
+
request_limit = request_limit.to_i if request_limit
|
180
|
+
return enum_for(:all, request_limit: request_limit) unless block_given?
|
181
|
+
results = self
|
182
|
+
loop do
|
183
|
+
results.each { |r| yield r }
|
184
|
+
if request_limit
|
185
|
+
request_limit -= 1
|
186
|
+
break if request_limit < 0
|
187
|
+
end
|
188
|
+
break unless results.next?
|
189
|
+
results = results.next
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
92
193
|
##
|
93
194
|
# The BigQuery {Job} that was created to run the query.
|
94
195
|
def job
|