google-cloud-datastore 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84e32dc83d15b1968b75bce2847502aaf2bd391a67f7dc19ba704c3d9af9b245
4
- data.tar.gz: 213483d73df19c3babf7d45f654ec2c7e7c7c596b9b56be1e0b1da1c4b7a11ac
3
+ metadata.gz: 72ce967e2225a7f45b099b3183e72b450e2a424540423ccdbcecd3f04d4df5a7
4
+ data.tar.gz: 7bc5dc5ef826d16c6e3732ed496deacb53e239c3a0583fa46babeeb5253bc91c
5
5
  SHA512:
6
- metadata.gz: bbf78ed2bc3775acf045de75cf42681382a236a3285cf05b950b0e75a7dd1c92d7fb95dfd3cef3f097273be974afd74c118b3b7b782526ea26c848bc03a6e406
7
- data.tar.gz: 86698b32f18c809a98d4089b73eb8c1cc1490c5ec6c5680799849f7ace763efa8c2330e34cb72ad214275d7ced5bd769b596e8aff20a7aea6a00a63b3c6aa3ae
6
+ metadata.gz: 0babd961bc284b94502cb3dcccfa5da0fea60fd6277ca5c8da2a5527e9cde189d0d18eb1ac6d3b66f0f1676e81d0eddfdd5e068cbfe3a3da0c1f07e05651fb34
7
+ data.tar.gz: 03d6099865662209ce9824bfd3601391b78996d62377b34d80bbaff2c8f9b25fe04ff8c8563aa8fcdf24a000850d20df1243ddd96b963ca80a2906475ea1f421
@@ -1,5 +1,12 @@
1
1
  # Release History
2
2
 
3
+ ### 1.5.1 / 2019-02-13
4
+
5
+ * Add `ReadOnlyTransaction` convenience methods:
6
+ * Add `ReadOnlyTransaction#query`
7
+ * Add `ReadOnlyTransaction#gql`
8
+ * Add `ReadOnlyTransaction#key`
9
+
3
10
  ### 1.5.0 / 2019-02-01
4
11
 
5
12
  * Make use of Credentials#project_id
@@ -8,7 +15,7 @@
8
15
  This value was added in googleauth 0.7.0.
9
16
  * Loosen googleauth dependency
10
17
  Allow for new releases up to 0.10.
11
- The googleauth devs have committed to maintanining the current API
18
+ The googleauth devs have committed to maintaining the current API
12
19
  and will not make backwards compatible changes before 0.10.
13
20
 
14
21
  ### 1.4.4 / 2018-09-20
@@ -139,9 +139,9 @@ module Google
139
139
  #
140
140
  # datastore = Google::Cloud::Datastore.new
141
141
  #
142
- # query = datastore.query("Task").
143
- # where("done", "=", false)
144
142
  # datastore.read_only_transaction do |tx|
143
+ # query = tx.query("Task").
144
+ # where("done", "=", false)
145
145
  # tasks = tx.run query
146
146
  # end
147
147
  #
@@ -179,12 +179,12 @@ module Google
179
179
  # datastore = Google::Cloud::Datastore.new
180
180
  #
181
181
  # task_list_key = datastore.key "TaskList", "default"
182
- # query = datastore.query("Task").
183
- # ancestor(task_list_key)
184
182
  #
185
183
  # tx = datastore.transaction
186
184
  # task_list = tx.find task_list_key
187
185
  # if task_list
186
+ # query = tx.query("Task").
187
+ # ancestor(task_list_key)
188
188
  # tasks = tx.run query
189
189
  # end
190
190
  # tx.commit
@@ -209,12 +209,12 @@ module Google
209
209
  # datastore = Google::Cloud::Datastore.new
210
210
  #
211
211
  # task_list_key = datastore.key "TaskList", "default"
212
- # query = datastore.query("Task").
213
- # ancestor(task_list_key)
214
212
  #
215
213
  # tx = datastore.transaction
216
214
  # task_list = tx.find task_list_key
217
215
  # if task_list
216
+ # query = tx.query("Task").
217
+ # ancestor(task_list_key)
218
218
  # tasks = tx.run query
219
219
  # end
220
220
  # tx.rollback
@@ -236,6 +236,152 @@ module Google
236
236
  @id = nil
237
237
  end
238
238
 
239
+ ##
240
+ # Create a new Query instance. This is a convenience method to make the
241
+ # creation of Query objects easier.
242
+ #
243
+ # @param [String] kinds The kind of entities to query. This is optional.
244
+ #
245
+ # @return [Google::Cloud::Datastore::Query]
246
+ #
247
+ # @example
248
+ # require "google/cloud/datastore"
249
+ #
250
+ # datastore = Google::Cloud::Datastore.new
251
+ #
252
+ # datastore.read_only_transaction do |tx|
253
+ # query = tx.query("Task").
254
+ # where("done", "=", false)
255
+ # tasks = tx.run query
256
+ # end
257
+ #
258
+ def query *kinds
259
+ query = Query.new
260
+ query.kind(*kinds) unless kinds.empty?
261
+ query
262
+ end
263
+
264
+ ##
265
+ # Create a new GqlQuery instance. This is a convenience method to make
266
+ # the creation of GqlQuery objects easier.
267
+ #
268
+ # @param [String] query The GQL query string.
269
+ # @param [Hash] bindings Named bindings for the GQL query string, each
270
+ # key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match
271
+ # regex `__.*__`, and must not be `""`. The value must be an `Object`
272
+ # that can be stored as an Entity property value, or a `Cursor`.
273
+ #
274
+ # @return [Google::Cloud::Datastore::GqlQuery]
275
+ #
276
+ # @example
277
+ # require "google/cloud/datastore"
278
+ #
279
+ # datastore = Google::Cloud::Datastore.new
280
+ #
281
+ # datastore.read_only_transaction do |tx|
282
+ # gql_query = tx.gql "SELECT * FROM Task WHERE done = @done",
283
+ # done: false
284
+ # tasks = tx.run gql_query
285
+ # end
286
+ #
287
+ # @example The previous example is equivalent to:
288
+ # require "google/cloud/datastore"
289
+ #
290
+ # datastore = Google::Cloud::Datastore.new
291
+ #
292
+ # datastore.read_only_transaction do |tx|
293
+ # gql_query = Google::Cloud::Datastore::GqlQuery.new
294
+ # gql_query.query_string = "SELECT * FROM Task WHERE done = @done"
295
+ # gql_query.named_bindings = {done: false}
296
+ # tasks = tx.run gql_query
297
+ # end
298
+ #
299
+ def gql query, bindings = {}
300
+ gql = GqlQuery.new
301
+ gql.query_string = query
302
+ gql.named_bindings = bindings unless bindings.empty?
303
+ gql
304
+ end
305
+
306
+ ##
307
+ # Create a new Key instance. This is a convenience method to make the
308
+ # creation of Key objects easier.
309
+ #
310
+ # @param [Array<Array(String,(String|Integer|nil))>] path An optional
311
+ # list of pairs for the key's path. Each pair may include the key's
312
+ # kind (String) and an id (Integer) or name (String). This is
313
+ # optional.
314
+ # @param [String] project The project of the Key. This is optional.
315
+ # @param [String] namespace namespace kind of the Key. This is optional.
316
+ #
317
+ # @return [Google::Cloud::Datastore::Key]
318
+ #
319
+ # @example
320
+ # require "google/cloud/datastore"
321
+ #
322
+ # datastore = Google::Cloud::Datastore.new
323
+ #
324
+ # datastore.read_only_transaction do |tx|
325
+ # task_key = tx.key "Task", "sampleTask"
326
+ # end
327
+ #
328
+ # @example The previous example is equivalent to:
329
+ # require "google/cloud/datastore"
330
+ #
331
+ # datastore = Google::Cloud::Datastore.new
332
+ #
333
+ # datastore.read_only_transaction do |tx|
334
+ # task_key = Google::Cloud::Datastore::Key.new "Task", "sampleTask"
335
+ # end
336
+ #
337
+ # @example Create a key with a parent:
338
+ # require "google/cloud/datastore"
339
+ #
340
+ # datastore = Google::Cloud::Datastore.new
341
+ #
342
+ # datastore.read_only_transaction do |tx|
343
+ # key = tx.key [["TaskList", "default"], ["Task", "sampleTask"]]
344
+ # results = tx.find_all key
345
+ # end
346
+ #
347
+ # @example Create a key with multi-level ancestry:
348
+ # require "google/cloud/datastore"
349
+ #
350
+ # datastore = Google::Cloud::Datastore.new
351
+ #
352
+ # datastore.read_only_transaction do |tx|
353
+ # key = tx.key([
354
+ # ["User", "alice"],
355
+ # ["TaskList", "default"],
356
+ # ["Task", "sampleTask"]
357
+ # ])
358
+ # results = tx.find_all key
359
+ # end
360
+ #
361
+ # @example Create a key with a project and namespace:
362
+ # require "google/cloud/datastore"
363
+ #
364
+ # datastore = Google::Cloud::Datastore.new
365
+ #
366
+ # datastore.read_only_transaction do |tx|
367
+ # key = tx.key ["TaskList", "default"], ["Task", "sampleTask"],
368
+ # project: "my-todo-project",
369
+ # namespace: "example-ns"
370
+ # results = tx.find_all key
371
+ # end
372
+ #
373
+ def key *path, project: nil, namespace: nil
374
+ path = path.flatten.each_slice(2).to_a # group in pairs
375
+ kind, id_or_name = path.pop
376
+ Key.new(kind, id_or_name).tap do |k|
377
+ k.project = project
378
+ k.namespace = namespace
379
+ unless path.empty?
380
+ k.parent = key path, project: project, namespace: namespace
381
+ end
382
+ end
383
+ end
384
+
239
385
  protected
240
386
 
241
387
  ##
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Datastore
19
- VERSION = "1.5.0".freeze
19
+ VERSION = "1.5.1".freeze
20
20
  end
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-datastore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-01 00:00:00.000000000 Z
12
+ date: 2019-02-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core