gcloud 0.12.2 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +5 -13
  2. data/lib/gcloud.rb +27 -456
  3. data/lib/gcloud/bigquery.rb +2 -382
  4. data/lib/gcloud/datastore.rb +2 -576
  5. data/lib/gcloud/dns.rb +2 -321
  6. data/lib/gcloud/logging.rb +1 -322
  7. data/lib/gcloud/pubsub.rb +2 -476
  8. data/lib/gcloud/resource_manager.rb +2 -273
  9. data/lib/gcloud/storage.rb +2 -440
  10. data/lib/gcloud/translate.rb +1 -250
  11. data/lib/gcloud/version.rb +2 -2
  12. data/lib/gcloud/vision.rb +1 -501
  13. metadata +36 -332
  14. data/AUTHENTICATION.md +0 -75
  15. data/CHANGELOG.md +0 -382
  16. data/OVERVIEW.md +0 -259
  17. data/lib/gcloud/backoff.rb +0 -150
  18. data/lib/gcloud/bigquery/copy_job.rb +0 -97
  19. data/lib/gcloud/bigquery/credentials.rb +0 -29
  20. data/lib/gcloud/bigquery/data.rb +0 -239
  21. data/lib/gcloud/bigquery/dataset.rb +0 -753
  22. data/lib/gcloud/bigquery/dataset/access.rb +0 -507
  23. data/lib/gcloud/bigquery/dataset/list.rb +0 -169
  24. data/lib/gcloud/bigquery/extract_job.rb +0 -117
  25. data/lib/gcloud/bigquery/insert_response.rb +0 -81
  26. data/lib/gcloud/bigquery/job.rb +0 -299
  27. data/lib/gcloud/bigquery/job/list.rb +0 -172
  28. data/lib/gcloud/bigquery/load_job.rb +0 -202
  29. data/lib/gcloud/bigquery/project.rb +0 -475
  30. data/lib/gcloud/bigquery/query_data.rb +0 -234
  31. data/lib/gcloud/bigquery/query_job.rb +0 -137
  32. data/lib/gcloud/bigquery/schema.rb +0 -359
  33. data/lib/gcloud/bigquery/service.rb +0 -506
  34. data/lib/gcloud/bigquery/table.rb +0 -1141
  35. data/lib/gcloud/bigquery/table/list.rb +0 -180
  36. data/lib/gcloud/bigquery/view.rb +0 -475
  37. data/lib/gcloud/credentials.rb +0 -129
  38. data/lib/gcloud/datastore/commit.rb +0 -148
  39. data/lib/gcloud/datastore/credentials.rb +0 -35
  40. data/lib/gcloud/datastore/cursor.rb +0 -76
  41. data/lib/gcloud/datastore/dataset.rb +0 -660
  42. data/lib/gcloud/datastore/dataset/lookup_results.rb +0 -219
  43. data/lib/gcloud/datastore/dataset/query_results.rb +0 -386
  44. data/lib/gcloud/datastore/entity.rb +0 -449
  45. data/lib/gcloud/datastore/errors.rb +0 -41
  46. data/lib/gcloud/datastore/gql_query.rb +0 -211
  47. data/lib/gcloud/datastore/grpc_utils.rb +0 -132
  48. data/lib/gcloud/datastore/key.rb +0 -281
  49. data/lib/gcloud/datastore/properties.rb +0 -128
  50. data/lib/gcloud/datastore/query.rb +0 -348
  51. data/lib/gcloud/datastore/service.rb +0 -167
  52. data/lib/gcloud/datastore/transaction.rb +0 -362
  53. data/lib/gcloud/dns/change.rb +0 -158
  54. data/lib/gcloud/dns/change/list.rb +0 -173
  55. data/lib/gcloud/dns/credentials.rb +0 -29
  56. data/lib/gcloud/dns/importer.rb +0 -183
  57. data/lib/gcloud/dns/project.rb +0 -247
  58. data/lib/gcloud/dns/record.rb +0 -170
  59. data/lib/gcloud/dns/record/list.rb +0 -174
  60. data/lib/gcloud/dns/service.rb +0 -167
  61. data/lib/gcloud/dns/zone.rb +0 -759
  62. data/lib/gcloud/dns/zone/list.rb +0 -168
  63. data/lib/gcloud/dns/zone/transaction.rb +0 -176
  64. data/lib/gcloud/errors.rb +0 -206
  65. data/lib/gcloud/gce.rb +0 -56
  66. data/lib/gcloud/grpc_utils.rb +0 -87
  67. data/lib/gcloud/logging/credentials.rb +0 -29
  68. data/lib/gcloud/logging/entry.rb +0 -465
  69. data/lib/gcloud/logging/entry/http_request.rb +0 -141
  70. data/lib/gcloud/logging/entry/list.rb +0 -177
  71. data/lib/gcloud/logging/entry/operation.rb +0 -90
  72. data/lib/gcloud/logging/logger.rb +0 -307
  73. data/lib/gcloud/logging/metric.rb +0 -169
  74. data/lib/gcloud/logging/metric/list.rb +0 -172
  75. data/lib/gcloud/logging/project.rb +0 -642
  76. data/lib/gcloud/logging/resource.rb +0 -84
  77. data/lib/gcloud/logging/resource_descriptor.rb +0 -137
  78. data/lib/gcloud/logging/resource_descriptor/list.rb +0 -174
  79. data/lib/gcloud/logging/service.rb +0 -267
  80. data/lib/gcloud/logging/sink.rb +0 -227
  81. data/lib/gcloud/logging/sink/list.rb +0 -171
  82. data/lib/gcloud/pubsub/credentials.rb +0 -29
  83. data/lib/gcloud/pubsub/message.rb +0 -94
  84. data/lib/gcloud/pubsub/policy.rb +0 -204
  85. data/lib/gcloud/pubsub/project.rb +0 -482
  86. data/lib/gcloud/pubsub/received_message.rb +0 -160
  87. data/lib/gcloud/pubsub/service.rb +0 -334
  88. data/lib/gcloud/pubsub/subscription.rb +0 -565
  89. data/lib/gcloud/pubsub/subscription/list.rb +0 -208
  90. data/lib/gcloud/pubsub/topic.rb +0 -511
  91. data/lib/gcloud/pubsub/topic/list.rb +0 -174
  92. data/lib/gcloud/pubsub/topic/publisher.rb +0 -85
  93. data/lib/gcloud/resource_manager/credentials.rb +0 -30
  94. data/lib/gcloud/resource_manager/manager.rb +0 -266
  95. data/lib/gcloud/resource_manager/policy.rb +0 -211
  96. data/lib/gcloud/resource_manager/project.rb +0 -484
  97. data/lib/gcloud/resource_manager/project/list.rb +0 -167
  98. data/lib/gcloud/resource_manager/project/updater.rb +0 -130
  99. data/lib/gcloud/resource_manager/service.rb +0 -127
  100. data/lib/gcloud/storage/bucket.rb +0 -775
  101. data/lib/gcloud/storage/bucket/acl.rb +0 -810
  102. data/lib/gcloud/storage/bucket/cors.rb +0 -153
  103. data/lib/gcloud/storage/bucket/list.rb +0 -172
  104. data/lib/gcloud/storage/credentials.rb +0 -29
  105. data/lib/gcloud/storage/errors.rb +0 -65
  106. data/lib/gcloud/storage/file.rb +0 -842
  107. data/lib/gcloud/storage/file/acl.rb +0 -425
  108. data/lib/gcloud/storage/file/list.rb +0 -191
  109. data/lib/gcloud/storage/file/verifier.rb +0 -67
  110. data/lib/gcloud/storage/project.rb +0 -316
  111. data/lib/gcloud/storage/service.rb +0 -347
  112. data/lib/gcloud/translate/api.rb +0 -241
  113. data/lib/gcloud/translate/detection.rb +0 -137
  114. data/lib/gcloud/translate/language.rb +0 -69
  115. data/lib/gcloud/translate/service.rb +0 -80
  116. data/lib/gcloud/translate/translation.rb +0 -112
  117. data/lib/gcloud/vision/annotate.rb +0 -224
  118. data/lib/gcloud/vision/annotation.rb +0 -455
  119. data/lib/gcloud/vision/annotation/entity.rb +0 -234
  120. data/lib/gcloud/vision/annotation/face.rb +0 -1750
  121. data/lib/gcloud/vision/annotation/properties.rb +0 -245
  122. data/lib/gcloud/vision/annotation/safe_search.rb +0 -161
  123. data/lib/gcloud/vision/annotation/text.rb +0 -236
  124. data/lib/gcloud/vision/annotation/vertex.rb +0 -108
  125. data/lib/gcloud/vision/credentials.rb +0 -29
  126. data/lib/gcloud/vision/image.rb +0 -590
  127. data/lib/gcloud/vision/location.rb +0 -115
  128. data/lib/gcloud/vision/project.rb +0 -278
  129. data/lib/gcloud/vision/service.rb +0 -66
  130. data/lib/google/api/annotations.rb +0 -14
  131. data/lib/google/api/http.rb +0 -30
  132. data/lib/google/api/label.rb +0 -24
  133. data/lib/google/api/monitored_resource.rb +0 -25
  134. data/lib/google/datastore/v1beta3/datastore.rb +0 -115
  135. data/lib/google/datastore/v1beta3/datastore_services.rb +0 -33
  136. data/lib/google/datastore/v1beta3/entity.rb +0 -63
  137. data/lib/google/datastore/v1beta3/query.rb +0 -128
  138. data/lib/google/devtools/cloudtrace/v1/trace.rb +0 -78
  139. data/lib/google/devtools/cloudtrace/v1/trace_services.rb +0 -32
  140. data/lib/google/example/library/v1/library.rb +0 -91
  141. data/lib/google/example/library/v1/library_services.rb +0 -40
  142. data/lib/google/iam/v1/iam_policy.rb +0 -33
  143. data/lib/google/iam/v1/iam_policy_services.rb +0 -30
  144. data/lib/google/iam/v1/policy.rb +0 -25
  145. data/lib/google/logging/type/http_request.rb +0 -28
  146. data/lib/google/logging/type/log_severity.rb +0 -27
  147. data/lib/google/logging/v2/log_entry.rb +0 -44
  148. data/lib/google/logging/v2/logging.rb +0 -56
  149. data/lib/google/logging/v2/logging_config.rb +0 -59
  150. data/lib/google/logging/v2/logging_config_services.rb +0 -32
  151. data/lib/google/logging/v2/logging_metrics.rb +0 -51
  152. data/lib/google/logging/v2/logging_metrics_services.rb +0 -32
  153. data/lib/google/logging/v2/logging_services.rb +0 -31
  154. data/lib/google/longrunning/operations.rb +0 -50
  155. data/lib/google/longrunning/operations_services.rb +0 -29
  156. data/lib/google/protobuf/descriptor.rb +0 -0
  157. data/lib/google/pubsub/v1/pubsub.rb +0 -129
  158. data/lib/google/pubsub/v1/pubsub_services.rb +0 -56
  159. data/lib/google/pubsub/v1beta2/pubsub.rb +0 -126
  160. data/lib/google/pubsub/v1beta2/pubsub_services.rb +0 -56
  161. data/lib/google/rpc/code.rb +0 -32
  162. data/lib/google/rpc/error_details.rb +0 -61
  163. data/lib/google/rpc/status.rb +0 -19
  164. data/lib/google/type/color.rb +0 -20
  165. data/lib/google/type/date.rb +0 -18
  166. data/lib/google/type/dayofweek.rb +0 -23
  167. data/lib/google/type/latlng.rb +0 -17
  168. data/lib/google/type/money.rb +0 -18
  169. data/lib/google/type/timeofday.rb +0 -19
@@ -1,180 +0,0 @@
1
- # Copyright 2015 Google Inc. All rights reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- require "delegate"
17
-
18
- module Gcloud
19
- module Bigquery
20
- class Table
21
- ##
22
- # Table::List is a special case Array with additional values.
23
- class List < DelegateClass(::Array)
24
- ##
25
- # If not empty, indicates that there are more records that match
26
- # the request and this value should be passed to continue.
27
- attr_accessor :token
28
-
29
- # A hash of this page of results.
30
- attr_accessor :etag
31
-
32
- # Total number of tables in this collection.
33
- attr_accessor :total
34
-
35
- ##
36
- # @private Create a new Table::List with an array of tables.
37
- def initialize arr = []
38
- super arr
39
- end
40
-
41
- ##
42
- # Whether there is a next page of tables.
43
- #
44
- # @return [Boolean]
45
- #
46
- # @example
47
- # require "gcloud"
48
- #
49
- # gcloud = Gcloud.new
50
- # bigquery = gcloud.bigquery
51
- # dataset = bigquery.dataset "my_dataset"
52
- #
53
- # tables = dataset.tables
54
- # if tables.next?
55
- # next_tables = tables.next
56
- # end
57
- #
58
- def next?
59
- !token.nil?
60
- end
61
-
62
- ##
63
- # Retrieve the next page of tables.
64
- #
65
- # @return [Table::List]
66
- #
67
- # @example
68
- # require "gcloud"
69
- #
70
- # gcloud = Gcloud.new
71
- # bigquery = gcloud.bigquery
72
- # dataset = bigquery.dataset "my_dataset"
73
- #
74
- # tables = dataset.tables
75
- # if tables.next?
76
- # next_tables = tables.next
77
- # end
78
- #
79
- def next
80
- return nil unless next?
81
- ensure_service!
82
- options = { token: token, max: @max }
83
- gapi = @service.list_tables @dataset_id, options
84
- self.class.from_gapi gapi, @service, @dataset_id, @max
85
- end
86
-
87
- ##
88
- # Retrieves all tables by repeatedly loading {#next} until {#next?}
89
- # returns `false`. Calls the given block once for each table, 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 tables 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 tables. Default is no limit.
100
- # @yield [table] The block for accessing each table.
101
- # @yieldparam [Table] table The table object.
102
- #
103
- # @return [Enumerator]
104
- #
105
- # @example Iterating each result by passing a block:
106
- # require "gcloud"
107
- #
108
- # gcloud = Gcloud.new
109
- # bigquery = gcloud.bigquery
110
- # dataset = bigquery.dataset "my_dataset"
111
- #
112
- # dataset.tables.all do |table|
113
- # puts table.name
114
- # end
115
- #
116
- # @example Using the enumerator by not passing a block:
117
- # require "gcloud"
118
- #
119
- # gcloud = Gcloud.new
120
- # bigquery = gcloud.bigquery
121
- # dataset = bigquery.dataset "my_dataset"
122
- #
123
- # all_names = dataset.tables.all.map do |table|
124
- # table.name
125
- # end
126
- #
127
- # @example Limit the number of API requests made:
128
- # require "gcloud"
129
- #
130
- # gcloud = Gcloud.new
131
- # bigquery = gcloud.bigquery
132
- # dataset = bigquery.dataset "my_dataset"
133
- #
134
- # dataset.tables.all(request_limit: 10) do |table|
135
- # puts table.name
136
- # end
137
- #
138
- def all request_limit: nil
139
- request_limit = request_limit.to_i if request_limit
140
- unless block_given?
141
- return enum_for(:all, request_limit: request_limit)
142
- end
143
- results = self
144
- loop do
145
- results.each { |r| yield r }
146
- if request_limit
147
- request_limit -= 1
148
- break if request_limit < 0
149
- end
150
- break unless results.next?
151
- results = results.next
152
- end
153
- end
154
-
155
- ##
156
- # @private New Table::List from a response object.
157
- def self.from_gapi gapi_list, service, dataset_id = nil, max = nil
158
- tables = List.new(Array(gapi_list.tables).map do |gapi_object|
159
- Table.from_gapi gapi_object, service
160
- end)
161
- tables.instance_variable_set :@token, gapi_list.next_page_token
162
- tables.instance_variable_set :@etag, gapi_list.etag
163
- tables.instance_variable_set :@total, gapi_list.total_items
164
- tables.instance_variable_set :@service, service
165
- tables.instance_variable_set :@dataset_id, dataset_id
166
- tables.instance_variable_set :@max, max
167
- tables
168
- end
169
-
170
- protected
171
-
172
- ##
173
- # Raise an error unless an active service is available.
174
- def ensure_service!
175
- fail "Must have active connection" unless @service
176
- end
177
- end
178
- end
179
- end
180
- end
@@ -1,475 +0,0 @@
1
- # Copyright 2015 Google Inc. All rights reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- require "gcloud/errors"
17
- require "gcloud/bigquery/service"
18
- require "gcloud/bigquery/data"
19
- require "gcloud/bigquery/table/list"
20
- require "google/apis/bigquery_v2"
21
-
22
- module Gcloud
23
- module Bigquery
24
- ##
25
- # # View
26
- #
27
- # A view is a virtual table defined by a SQL query. You can query views in
28
- # the browser tool, or by using a query job.
29
- #
30
- # BigQuery's views are logical views, not materialized views, which means
31
- # that the query that defines the view is re-executed every time the view is
32
- # queried. Queries are billed according to the total amount of data in all
33
- # table fields referenced directly or indirectly by the top-level query.
34
- #
35
- # @example
36
- # require "gcloud"
37
- #
38
- # gcloud = Gcloud.new
39
- # bigquery = gcloud.bigquery
40
- # dataset = bigquery.dataset "my_dataset"
41
- # view = dataset.create_view "my_view",
42
- # "SELECT name, age FROM [proj:dataset.users]"
43
- #
44
- class View
45
- ##
46
- # @private The Service object.
47
- attr_accessor :service
48
-
49
- ##
50
- # @private The Google API Client object.
51
- attr_accessor :gapi
52
-
53
- ##
54
- # @private Create an empty Table object.
55
- def initialize
56
- @service = nil
57
- @gapi = Google::Apis::BigqueryV2::Table.new
58
- end
59
-
60
- ##
61
- # A unique ID for this table.
62
- # The ID must contain only letters (a-z, A-Z), numbers (0-9),
63
- # or underscores (_). The maximum length is 1,024 characters.
64
- #
65
- # @!group Attributes
66
- #
67
- def table_id
68
- @gapi.table_reference.table_id
69
- end
70
-
71
- ##
72
- # The ID of the `Dataset` containing this table.
73
- #
74
- # @!group Attributes
75
- #
76
- def dataset_id
77
- @gapi.table_reference.dataset_id
78
- end
79
-
80
- ##
81
- # The ID of the `Project` containing this table.
82
- #
83
- # @!group Attributes
84
- #
85
- def project_id
86
- @gapi.table_reference.project_id
87
- end
88
-
89
- ##
90
- # @private
91
- # The gapi fragment containing the Project ID, Dataset ID, and Table ID as
92
- # a camel-cased hash.
93
- def table_ref
94
- table_ref = @gapi.table_reference
95
- table_ref = table_ref.to_hash if table_ref.respond_to? :to_hash
96
- table_ref
97
- end
98
-
99
- ##
100
- # The combined Project ID, Dataset ID, and Table ID for this table, in the
101
- # format specified by the [Query
102
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
103
- # `project_name:datasetId.tableId`. To use this value in queries see
104
- # {#query_id}.
105
- #
106
- # @!group Attributes
107
- #
108
- def id
109
- @gapi.id
110
- end
111
-
112
- ##
113
- # The value returned by {#id}, wrapped in square brackets if the Project
114
- # ID contains dashes, as specified by the [Query
115
- # Reference](https://cloud.google.com/bigquery/query-reference#from).
116
- # Useful in queries.
117
- #
118
- # @example
119
- # require "gcloud"
120
- #
121
- # gcloud = Gcloud.new
122
- # bigquery = gcloud.bigquery
123
- # dataset = bigquery.dataset "my_dataset"
124
- # table = dataset.table "my_table"
125
- #
126
- # data = bigquery.query "SELECT name FROM #{table.query_id}"
127
- #
128
- # @!group Attributes
129
- #
130
- def query_id
131
- project_id["-"] ? "[#{id}]" : id
132
- end
133
-
134
- ##
135
- # The name of the table.
136
- #
137
- # @!group Attributes
138
- #
139
- def name
140
- @gapi.friendly_name
141
- end
142
-
143
- ##
144
- # Updates the name of the table.
145
- #
146
- # @!group Attributes
147
- #
148
- def name= new_name
149
- @gapi.update! friendly_name: new_name
150
- patch_gapi! :friendly_name
151
- end
152
-
153
- ##
154
- # A string hash of the dataset.
155
- #
156
- # @!group Attributes
157
- #
158
- def etag
159
- ensure_full_data!
160
- @gapi.etag
161
- end
162
-
163
- ##
164
- # A URL that can be used to access the dataset using the REST API.
165
- #
166
- # @!group Attributes
167
- #
168
- def api_url
169
- ensure_full_data!
170
- @gapi.self_link
171
- end
172
-
173
- ##
174
- # The description of the table.
175
- #
176
- # @!group Attributes
177
- #
178
- def description
179
- ensure_full_data!
180
- @gapi.description
181
- end
182
-
183
- ##
184
- # Updates the description of the table.
185
- #
186
- # @!group Attributes
187
- #
188
- def description= new_description
189
- @gapi.update! description: new_description
190
- patch_gapi! :description
191
- end
192
-
193
- ##
194
- # The time when this table was created.
195
- #
196
- # @!group Attributes
197
- #
198
- def created_at
199
- ensure_full_data!
200
- begin
201
- Time.at(Integer(@gapi.creation_time) / 1000.0)
202
- rescue
203
- nil
204
- end
205
- end
206
-
207
- ##
208
- # The time when this table expires.
209
- # If not present, the table will persist indefinitely.
210
- # Expired tables will be deleted and their storage reclaimed.
211
- #
212
- # @!group Attributes
213
- #
214
- def expires_at
215
- ensure_full_data!
216
- begin
217
- Time.at(Integer(@gapi.expiration_time) / 1000.0)
218
- rescue
219
- nil
220
- end
221
- end
222
-
223
- ##
224
- # The date when this table was last modified.
225
- #
226
- # @!group Attributes
227
- #
228
- def modified_at
229
- ensure_full_data!
230
- begin
231
- Time.at(Integer(@gapi.last_modified_time) / 1000.0)
232
- rescue
233
- nil
234
- end
235
- end
236
-
237
- ##
238
- # Checks if the table's type is "TABLE".
239
- #
240
- # @!group Attributes
241
- #
242
- def table?
243
- @gapi.type == "TABLE"
244
- end
245
-
246
- ##
247
- # Checks if the table's type is "VIEW".
248
- #
249
- # @!group Attributes
250
- #
251
- def view?
252
- @gapi.type == "VIEW"
253
- end
254
-
255
- ##
256
- # The geographic location where the table should reside. Possible
257
- # values include EU and US. The default value is US.
258
- #
259
- # @!group Attributes
260
- #
261
- def location
262
- ensure_full_data!
263
- @gapi.location
264
- end
265
-
266
- ##
267
- # The schema of the view.
268
- #
269
- # @!group Attributes
270
- #
271
- def schema
272
- ensure_full_data!
273
- Schema.from_gapi(@gapi.schema).freeze
274
- end
275
-
276
- ##
277
- # The fields of the view.
278
- #
279
- # @!group Attributes
280
- #
281
- def fields
282
- schema.fields
283
- end
284
-
285
- ##
286
- # The names of the columns in the view.
287
- #
288
- # @!group Attributes
289
- #
290
- def headers
291
- fields.map(&:name)
292
- end
293
-
294
- ##
295
- # The query that executes each time the view is loaded.
296
- #
297
- # @!group Attributes
298
- #
299
- def query
300
- @gapi.view.query if @gapi.view
301
- end
302
-
303
- ##
304
- # Updates the query that executes each time the view is loaded.
305
- #
306
- # @see https://cloud.google.com/bigquery/query-reference BigQuery Query
307
- # Reference
308
- #
309
- # @param [String] new_query The query that defines the view.
310
- #
311
- # @example
312
- # require "gcloud"
313
- #
314
- # gcloud = Gcloud.new
315
- # bigquery = gcloud.bigquery
316
- # dataset = bigquery.dataset "my_dataset"
317
- # view = dataset.table "my_view"
318
- #
319
- # view.query = "SELECT first_name FROM [my_project:my_dataset.my_table]"
320
- #
321
- # @!group Lifecycle
322
- #
323
- def query= new_query
324
- @gapi.view ||= Google::Apis::BigqueryV2::ViewDefinition.new
325
- @gapi.view.update! query: new_query
326
- patch_view_gapi! :query
327
- end
328
-
329
- ##
330
- # Runs a query to retrieve all data from the view.
331
- #
332
- # @param [Integer] max The maximum number of rows of data to return per
333
- # page of results. Setting this flag to a small value such as 1000 and
334
- # then paging through results might improve reliability when the query
335
- # result set is large. In addition to this limit, responses are also
336
- # limited to 10 MB. By default, there is no maximum row count, and only
337
- # the byte limit applies.
338
- # @param [Integer] timeout How long to wait for the query to complete, in
339
- # milliseconds, before the request times out and returns. Note that this
340
- # is only a timeout for the request, not the query. If the query takes
341
- # longer to run than the timeout value, the call returns without any
342
- # results and with QueryData#complete? set to false. The default value
343
- # is 10000 milliseconds (10 seconds).
344
- # @param [Boolean] cache Whether to look for the result in the query
345
- # cache. The query cache is a best-effort cache that will be flushed
346
- # whenever tables in the query are modified. The default value is true.
347
- # For more information, see [query
348
- # caching](https://developers.google.com/bigquery/querying-data).
349
- # @param [Boolean] dryrun If set to `true`, BigQuery doesn't run the job.
350
- # Instead, if the query is valid, BigQuery returns statistics about the
351
- # job such as how many bytes would be processed. If the query is
352
- # invalid, an error returns. The default value is `false`.
353
- #
354
- # @return [Gcloud::Bigquery::QueryData]
355
- #
356
- # @example
357
- # require "gcloud"
358
- #
359
- # gcloud = Gcloud.new
360
- # bigquery = gcloud.bigquery
361
- # dataset = bigquery.dataset "my_dataset"
362
- # view = dataset.table "my_view"
363
- #
364
- # data = view.data
365
- # data.each do |row|
366
- # puts row["first_name"]
367
- # end
368
- # more_data = data.next if data.next?
369
- #
370
- # @!group Data
371
- #
372
- def data max: nil, timeout: 10000, cache: true, dryrun: nil
373
- sql = "SELECT * FROM #{query_id}"
374
- ensure_service!
375
- options = { max: max, timeout: timeout, cache: cache, dryrun: dryrun }
376
- gapi = service.query sql, options
377
- QueryData.from_gapi gapi, service
378
- end
379
-
380
- ##
381
- # Permanently deletes the table.
382
- #
383
- # @return [Boolean] Returns `true` if the table was deleted.
384
- #
385
- # @example
386
- # require "gcloud"
387
- #
388
- # gcloud = Gcloud.new
389
- # bigquery = gcloud.bigquery
390
- # dataset = bigquery.dataset "my_dataset"
391
- # table = dataset.table "my_table"
392
- #
393
- # table.delete
394
- #
395
- # @!group Lifecycle
396
- #
397
- def delete
398
- ensure_service!
399
- service.delete_table dataset_id, table_id
400
- true
401
- end
402
-
403
- ##
404
- # Reloads the table with current data from the BigQuery service.
405
- #
406
- # @!group Lifecycle
407
- #
408
- def reload!
409
- ensure_service!
410
- gapi = service.get_table dataset_id, table_id
411
- @gapi = gapi
412
- end
413
- alias_method :refresh!, :reload!
414
-
415
- ##
416
- # @private New Table from a Google API Client object.
417
- def self.from_gapi gapi, conn
418
- new.tap do |f|
419
- f.gapi = gapi
420
- f.service = conn
421
- end
422
- end
423
-
424
- protected
425
-
426
- ##
427
- # Raise an error unless an active service is available.
428
- def ensure_service!
429
- fail "Must have active connection" unless service
430
- end
431
-
432
- def patch_gapi! *attributes
433
- return if attributes.empty?
434
- patch_args = Hash[attributes.map do |attr|
435
- [attr, @gapi.send(attr)]
436
- end]
437
- patch_table_gapi patch_args
438
- end
439
-
440
- def patch_view_gapi! *attributes
441
- return if attributes.empty?
442
- patch_args = Hash[attributes.map do |attr|
443
- [attr, @gapi.view.send(attr)]
444
- end]
445
- patch_view_args = Google::Apis::BigqueryV2::ViewDefinition.new(
446
- patch_args
447
- )
448
- patch_table_gapi view: patch_view_args
449
- end
450
-
451
- def patch_table_gapi patch_args
452
- ensure_service!
453
- patch_gapi = Google::Apis::BigqueryV2::Table.new patch_args
454
- @gapi = service.patch_table dataset_id, table_id, patch_gapi
455
- end
456
-
457
- ##
458
- # Load the complete representation of the table if it has been
459
- # only partially loaded by a request to the API list method.
460
- def ensure_full_data!
461
- reload_gapi! unless data_complete?
462
- end
463
-
464
- def reload_gapi!
465
- ensure_service!
466
- gapi = service.get_table dataset_id, table_id
467
- @gapi = gapi
468
- end
469
-
470
- def data_complete?
471
- @gapi.is_a? Google::Apis::BigqueryV2::Table
472
- end
473
- end
474
- end
475
- end