google-cloud-firestore 1.3.0 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,7 +7,11 @@
7
7
  "INTERNAL",
8
8
  "UNAVAILABLE"
9
9
  ],
10
- "non_idempotent": []
10
+ "non_idempotent": [],
11
+ "idempotent2": [
12
+ "DEADLINE_EXCEEDED",
13
+ "UNAVAILABLE"
14
+ ]
11
15
  },
12
16
  "retry_params": {
13
17
  "default": {
@@ -32,12 +36,12 @@
32
36
  "methods": {
33
37
  "GetDocument": {
34
38
  "timeout_millis": 60000,
35
- "retry_codes_name": "idempotent",
39
+ "retry_codes_name": "idempotent2",
36
40
  "retry_params_name": "default"
37
41
  },
38
42
  "ListDocuments": {
39
43
  "timeout_millis": 60000,
40
- "retry_codes_name": "idempotent",
44
+ "retry_codes_name": "idempotent2",
41
45
  "retry_params_name": "default"
42
46
  },
43
47
  "CreateDocument": {
@@ -56,7 +60,7 @@
56
60
  "retry_params_name": "default"
57
61
  },
58
62
  "BatchGetDocuments": {
59
- "timeout_millis": 300000,
63
+ "timeout_millis": 60000,
60
64
  "retry_codes_name": "idempotent",
61
65
  "retry_params_name": "streaming"
62
66
  },
@@ -81,12 +85,12 @@
81
85
  "retry_params_name": "streaming"
82
86
  },
83
87
  "Write": {
84
- "timeout_millis": 86400000,
88
+ "timeout_millis": 60000,
85
89
  "retry_codes_name": "non_idempotent",
86
90
  "retry_params_name": "streaming"
87
91
  },
88
92
  "Listen": {
89
- "timeout_millis": 86400000,
93
+ "timeout_millis": 60000,
90
94
  "retry_codes_name": "idempotent",
91
95
  "retry_params_name": "streaming"
92
96
  },
@@ -21,6 +21,8 @@ module Google
21
21
  # rubocop:disable LineLength
22
22
 
23
23
  ##
24
+ # @deprecated Use Google::Cloud::Firestore::V1 instead.
25
+ #
24
26
  # # Ruby Client for Google Cloud Firestore API
25
27
  #
26
28
  # [Google Cloud Firestore API][Product Documentation]:
@@ -33,6 +33,8 @@ module Google
33
33
  module Cloud
34
34
  module Firestore
35
35
  module V1beta1
36
+ # @deprecated Use Google::Cloud::Firestore::V1::FirestoreClient instead.
37
+ #
36
38
  # The Cloud Firestore service.
37
39
  #
38
40
  # This service exposes several types of comparable timestamps:
@@ -68,14 +70,14 @@ module Google
68
70
  DEFAULT_TIMEOUT = 30
69
71
 
70
72
  PAGE_DESCRIPTORS = {
71
- "list_documents" => Google::Gax::PageDescriptor.new(
73
+ "list_collection_ids" => Google::Gax::PageDescriptor.new(
72
74
  "page_token",
73
75
  "next_page_token",
74
- "documents"),
75
- "list_collection_ids" => Google::Gax::PageDescriptor.new(
76
+ "collection_ids"),
77
+ "list_documents" => Google::Gax::PageDescriptor.new(
76
78
  "page_token",
77
79
  "next_page_token",
78
- "collection_ids")
80
+ "documents")
79
81
  }.freeze
80
82
 
81
83
  private_constant :PAGE_DESCRIPTORS
@@ -88,80 +90,6 @@ module Google
88
90
  ].freeze
89
91
 
90
92
 
91
- ANY_PATH_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
92
- "projects/{project}/databases/{database}/documents/{document}/{any_path=**}"
93
- )
94
-
95
- private_constant :ANY_PATH_PATH_TEMPLATE
96
-
97
- DATABASE_ROOT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
98
- "projects/{project}/databases/{database}"
99
- )
100
-
101
- private_constant :DATABASE_ROOT_PATH_TEMPLATE
102
-
103
- DOCUMENT_PATH_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
104
- "projects/{project}/databases/{database}/documents/{document_path=**}"
105
- )
106
-
107
- private_constant :DOCUMENT_PATH_PATH_TEMPLATE
108
-
109
- DOCUMENT_ROOT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
110
- "projects/{project}/databases/{database}/documents"
111
- )
112
-
113
- private_constant :DOCUMENT_ROOT_PATH_TEMPLATE
114
-
115
- # Returns a fully-qualified any_path resource name string.
116
- # @param project [String]
117
- # @param database [String]
118
- # @param document [String]
119
- # @param any_path [String]
120
- # @return [String]
121
- def self.any_path_path project, database, document, any_path
122
- ANY_PATH_PATH_TEMPLATE.render(
123
- :"project" => project,
124
- :"database" => database,
125
- :"document" => document,
126
- :"any_path" => any_path
127
- )
128
- end
129
-
130
- # Returns a fully-qualified database_root resource name string.
131
- # @param project [String]
132
- # @param database [String]
133
- # @return [String]
134
- def self.database_root_path project, database
135
- DATABASE_ROOT_PATH_TEMPLATE.render(
136
- :"project" => project,
137
- :"database" => database
138
- )
139
- end
140
-
141
- # Returns a fully-qualified document_path resource name string.
142
- # @param project [String]
143
- # @param database [String]
144
- # @param document_path [String]
145
- # @return [String]
146
- def self.document_path_path project, database, document_path
147
- DOCUMENT_PATH_PATH_TEMPLATE.render(
148
- :"project" => project,
149
- :"database" => database,
150
- :"document_path" => document_path
151
- )
152
- end
153
-
154
- # Returns a fully-qualified document_root resource name string.
155
- # @param project [String]
156
- # @param database [String]
157
- # @return [String]
158
- def self.document_root_path project, database
159
- DOCUMENT_ROOT_PATH_TEMPLATE.render(
160
- :"project" => project,
161
- :"database" => database
162
- )
163
- end
164
-
165
93
  # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
166
94
  # Provides the means for authenticating requests made by the client. This parameter can
167
95
  # be many types.
@@ -239,6 +167,9 @@ module Google
239
167
  google_api_client.freeze
240
168
 
241
169
  headers = { :"x-goog-api-client" => google_api_client }
170
+ if credentials.respond_to?(:quota_project_id) && credentials.quota_project_id
171
+ headers[:"x-goog-user-project"] = credentials.quota_project_id
172
+ end
242
173
  headers.merge!(metadata) unless metadata.nil?
243
174
  client_config_file = Pathname.new(__dir__).join(
244
175
  "firestore_client_config.json"
@@ -271,32 +202,6 @@ module Google
271
202
  &Google::Firestore::V1beta1::Firestore::Stub.method(:new)
272
203
  )
273
204
 
274
- @get_document = Google::Gax.create_api_call(
275
- @firestore_stub.method(:get_document),
276
- defaults["get_document"],
277
- exception_transformer: exception_transformer,
278
- params_extractor: proc do |request|
279
- {'name' => request.name}
280
- end
281
- )
282
- @list_documents = Google::Gax.create_api_call(
283
- @firestore_stub.method(:list_documents),
284
- defaults["list_documents"],
285
- exception_transformer: exception_transformer
286
- )
287
- @create_document = Google::Gax.create_api_call(
288
- @firestore_stub.method(:create_document),
289
- defaults["create_document"],
290
- exception_transformer: exception_transformer
291
- )
292
- @update_document = Google::Gax.create_api_call(
293
- @firestore_stub.method(:update_document),
294
- defaults["update_document"],
295
- exception_transformer: exception_transformer,
296
- params_extractor: proc do |request|
297
- {'document.name' => request.document.name}
298
- end
299
- )
300
205
  @delete_document = Google::Gax.create_api_call(
301
206
  @firestore_stub.method(:delete_document),
302
207
  defaults["delete_document"],
@@ -321,14 +226,6 @@ module Google
321
226
  {'database' => request.database}
322
227
  end
323
228
  )
324
- @commit = Google::Gax.create_api_call(
325
- @firestore_stub.method(:commit),
326
- defaults["commit"],
327
- exception_transformer: exception_transformer,
328
- params_extractor: proc do |request|
329
- {'database' => request.database}
330
- end
331
- )
332
229
  @rollback = Google::Gax.create_api_call(
333
230
  @firestore_stub.method(:rollback),
334
231
  defaults["rollback"],
@@ -363,351 +260,248 @@ module Google
363
260
  {'parent' => request.parent}
364
261
  end
365
262
  )
263
+ @get_document = Google::Gax.create_api_call(
264
+ @firestore_stub.method(:get_document),
265
+ defaults["get_document"],
266
+ exception_transformer: exception_transformer,
267
+ params_extractor: proc do |request|
268
+ {'name' => request.name}
269
+ end
270
+ )
271
+ @list_documents = Google::Gax.create_api_call(
272
+ @firestore_stub.method(:list_documents),
273
+ defaults["list_documents"],
274
+ exception_transformer: exception_transformer
275
+ )
276
+ @create_document = Google::Gax.create_api_call(
277
+ @firestore_stub.method(:create_document),
278
+ defaults["create_document"],
279
+ exception_transformer: exception_transformer
280
+ )
281
+ @update_document = Google::Gax.create_api_call(
282
+ @firestore_stub.method(:update_document),
283
+ defaults["update_document"],
284
+ exception_transformer: exception_transformer,
285
+ params_extractor: proc do |request|
286
+ {'document.name' => request.document.name}
287
+ end
288
+ )
289
+ @commit = Google::Gax.create_api_call(
290
+ @firestore_stub.method(:commit),
291
+ defaults["commit"],
292
+ exception_transformer: exception_transformer,
293
+ params_extractor: proc do |request|
294
+ {'database' => request.database}
295
+ end
296
+ )
366
297
  end
367
298
 
368
299
  # Service calls
369
300
 
370
- # Gets a single document.
301
+ # Deletes a document.
371
302
  #
372
303
  # @param name [String]
373
- # Required. The resource name of the Document to get. In the format:
304
+ # Required. The resource name of the Document to delete. In the format:
374
305
  # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
375
- # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
376
- # The fields to return. If not set, returns all fields.
377
- #
378
- # If the document has a field that is not present in this mask, that field
379
- # will not be returned in the response.
380
- # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
381
- # can also be provided.
382
- # @param transaction [String]
383
- # Reads the document in a transaction.
384
- # @param read_time [Google::Protobuf::Timestamp | Hash]
385
- # Reads the version of the document at the given time.
386
- # This may not be older than 60 seconds.
387
- # A hash of the same form as `Google::Protobuf::Timestamp`
306
+ # @param current_document [Google::Firestore::V1beta1::Precondition | Hash]
307
+ # An optional precondition on the document.
308
+ # The request will fail if this is set and not met by the target document.
309
+ # A hash of the same form as `Google::Firestore::V1beta1::Precondition`
388
310
  # can also be provided.
389
311
  # @param options [Google::Gax::CallOptions]
390
312
  # Overrides the default settings for this call, e.g, timeout,
391
313
  # retries, etc.
392
314
  # @yield [result, operation] Access the result along with the RPC operation
393
- # @yieldparam result [Google::Firestore::V1beta1::Document]
315
+ # @yieldparam result []
394
316
  # @yieldparam operation [GRPC::ActiveCall::Operation]
395
- # @return [Google::Firestore::V1beta1::Document]
396
317
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
397
318
  # @example
398
319
  # require "google/cloud/firestore/v1beta1"
399
320
  #
400
321
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
401
- # formatted_name = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
402
- # response = firestore_client.get_document(formatted_name)
322
+ #
323
+ # # TODO: Initialize `name`:
324
+ # name = ''
325
+ # firestore_client.delete_document(name)
403
326
 
404
- def get_document \
327
+ def delete_document \
405
328
  name,
406
- mask: nil,
407
- transaction: nil,
408
- read_time: nil,
329
+ current_document: nil,
409
330
  options: nil,
410
331
  &block
411
332
  req = {
412
333
  name: name,
413
- mask: mask,
414
- transaction: transaction,
415
- read_time: read_time
334
+ current_document: current_document
416
335
  }.delete_if { |_, v| v.nil? }
417
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::GetDocumentRequest)
418
- @get_document.call(req, options, &block)
336
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::DeleteDocumentRequest)
337
+ @delete_document.call(req, options, &block)
338
+ nil
419
339
  end
420
340
 
421
- # Lists documents.
341
+ # Gets multiple documents.
422
342
  #
423
- # @param parent [String]
424
- # Required. The parent resource name. In the format:
425
- # `projects/{project_id}/databases/{database_id}/documents` or
343
+ # Documents returned by this method are not guaranteed to be returned in the
344
+ # same order that they were requested.
345
+ #
346
+ # @param database [String]
347
+ # Required. The database name. In the format:
348
+ # `projects/{project_id}/databases/{database_id}`.
349
+ # @param documents [Array<String>]
350
+ # The names of the documents to retrieve. In the format:
426
351
  # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
427
- # For example:
428
- # `projects/my-project/databases/my-database/documents` or
429
- # `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
430
- # @param collection_id [String]
431
- # Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`
432
- # or `messages`.
433
- # @param page_size [Integer]
434
- # The maximum number of resources contained in the underlying API
435
- # response. If page streaming is performed per-resource, this
436
- # parameter does not affect the return value. If page streaming is
437
- # performed per-page, this determines the maximum number of
438
- # resources in a page.
439
- # @param order_by [String]
440
- # The order to sort results by. For example: `priority desc, name`.
352
+ # The request will fail if any of the document is not a child resource of the
353
+ # given `database`. Duplicate names will be elided.
441
354
  # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
442
355
  # The fields to return. If not set, returns all fields.
443
356
  #
444
- # If a document has a field that is not present in this mask, that field
445
- # will not be returned in the response.
357
+ # If a document has a field that is not present in this mask, that field will
358
+ # not be returned in the response.
446
359
  # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
447
360
  # can also be provided.
448
361
  # @param transaction [String]
449
362
  # Reads documents in a transaction.
363
+ # @param new_transaction [Google::Firestore::V1beta1::TransactionOptions | Hash]
364
+ # Starts a new transaction and reads the documents.
365
+ # Defaults to a read-only transaction.
366
+ # The new transaction ID will be returned as the first response in the
367
+ # stream.
368
+ # A hash of the same form as `Google::Firestore::V1beta1::TransactionOptions`
369
+ # can also be provided.
450
370
  # @param read_time [Google::Protobuf::Timestamp | Hash]
451
371
  # Reads documents as they were at the given time.
452
372
  # This may not be older than 60 seconds.
453
373
  # A hash of the same form as `Google::Protobuf::Timestamp`
454
374
  # can also be provided.
455
- # @param show_missing [true, false]
456
- # If the list should show missing documents. A missing document is a
457
- # document that does not exist but has sub-documents. These documents will
458
- # be returned with a key but will not have fields, {Google::Firestore::V1beta1::Document#create_time Document#create_time},
459
- # or {Google::Firestore::V1beta1::Document#update_time Document#update_time} set.
460
- #
461
- # Requests with `show_missing` may not specify `where` or
462
- # `order_by`.
463
375
  # @param options [Google::Gax::CallOptions]
464
376
  # Overrides the default settings for this call, e.g, timeout,
465
377
  # retries, etc.
466
- # @yield [result, operation] Access the result along with the RPC operation
467
- # @yieldparam result [Google::Gax::PagedEnumerable<Google::Firestore::V1beta1::Document>]
468
- # @yieldparam operation [GRPC::ActiveCall::Operation]
469
- # @return [Google::Gax::PagedEnumerable<Google::Firestore::V1beta1::Document>]
470
- # An enumerable of Google::Firestore::V1beta1::Document instances.
471
- # See Google::Gax::PagedEnumerable documentation for other
472
- # operations such as per-page iteration or access to the response
473
- # object.
378
+ # @return [Enumerable<Google::Firestore::V1beta1::BatchGetDocumentsResponse>]
379
+ # An enumerable of Google::Firestore::V1beta1::BatchGetDocumentsResponse instances.
380
+ #
474
381
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
475
382
  # @example
476
383
  # require "google/cloud/firestore/v1beta1"
477
384
  #
478
385
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
479
- # formatted_parent = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
480
- #
481
- # # TODO: Initialize `collection_id`:
482
- # collection_id = ''
483
386
  #
484
- # # Iterate over all results.
485
- # firestore_client.list_documents(formatted_parent, collection_id).each do |element|
387
+ # # TODO: Initialize `database`:
388
+ # database = ''
389
+ # firestore_client.batch_get_documents(database).each do |element|
486
390
  # # Process element.
487
391
  # end
488
- #
489
- # # Or iterate over results one page at a time.
490
- # firestore_client.list_documents(formatted_parent, collection_id).each_page do |page|
491
- # # Process each page at a time.
492
- # page.each do |element|
493
- # # Process element.
494
- # end
495
- # end
496
392
 
497
- def list_documents \
498
- parent,
499
- collection_id,
500
- page_size: nil,
501
- order_by: nil,
393
+ def batch_get_documents \
394
+ database,
395
+ documents: nil,
502
396
  mask: nil,
503
397
  transaction: nil,
398
+ new_transaction: nil,
504
399
  read_time: nil,
505
- show_missing: nil,
506
- options: nil,
507
- &block
400
+ options: nil
508
401
  req = {
509
- parent: parent,
510
- collection_id: collection_id,
511
- page_size: page_size,
512
- order_by: order_by,
402
+ database: database,
403
+ documents: documents,
513
404
  mask: mask,
514
405
  transaction: transaction,
515
- read_time: read_time,
516
- show_missing: show_missing
406
+ new_transaction: new_transaction,
407
+ read_time: read_time
517
408
  }.delete_if { |_, v| v.nil? }
518
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListDocumentsRequest)
519
- @list_documents.call(req, options, &block)
409
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::BatchGetDocumentsRequest)
410
+ @batch_get_documents.call(req, options)
520
411
  end
521
412
 
522
- # Creates a new document.
523
- #
524
- # @param parent [String]
525
- # Required. The parent resource. For example:
526
- # `projects/{project_id}/databases/{database_id}/documents` or
527
- # `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`
528
- # @param collection_id [String]
529
- # Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`.
530
- # @param document_id [String]
531
- # The client-assigned document ID to use for this document.
413
+ # Starts a new transaction.
532
414
  #
533
- # Optional. If not specified, an ID will be assigned by the service.
534
- # @param document [Google::Firestore::V1beta1::Document | Hash]
535
- # Required. The document to create. `name` must not be set.
536
- # A hash of the same form as `Google::Firestore::V1beta1::Document`
537
- # can also be provided.
538
- # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
539
- # The fields to return. If not set, returns all fields.
540
- #
541
- # If the document has a field that is not present in this mask, that field
542
- # will not be returned in the response.
543
- # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
415
+ # @param database [String]
416
+ # Required. The database name. In the format:
417
+ # `projects/{project_id}/databases/{database_id}`.
418
+ # @param options_ [Google::Firestore::V1beta1::TransactionOptions | Hash]
419
+ # The options for the transaction.
420
+ # Defaults to a read-write transaction.
421
+ # A hash of the same form as `Google::Firestore::V1beta1::TransactionOptions`
544
422
  # can also be provided.
545
423
  # @param options [Google::Gax::CallOptions]
546
424
  # Overrides the default settings for this call, e.g, timeout,
547
425
  # retries, etc.
548
426
  # @yield [result, operation] Access the result along with the RPC operation
549
- # @yieldparam result [Google::Firestore::V1beta1::Document]
427
+ # @yieldparam result [Google::Firestore::V1beta1::BeginTransactionResponse]
550
428
  # @yieldparam operation [GRPC::ActiveCall::Operation]
551
- # @return [Google::Firestore::V1beta1::Document]
429
+ # @return [Google::Firestore::V1beta1::BeginTransactionResponse]
552
430
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
553
431
  # @example
554
432
  # require "google/cloud/firestore/v1beta1"
555
433
  #
556
434
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
557
- # formatted_parent = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
558
- #
559
- # # TODO: Initialize `collection_id`:
560
- # collection_id = ''
561
435
  #
562
- # # TODO: Initialize `document_id`:
563
- # document_id = ''
564
- #
565
- # # TODO: Initialize `document`:
566
- # document = {}
567
- # response = firestore_client.create_document(formatted_parent, collection_id, document_id, document)
436
+ # # TODO: Initialize `database`:
437
+ # database = ''
438
+ # response = firestore_client.begin_transaction(database)
568
439
 
569
- def create_document \
570
- parent,
571
- collection_id,
572
- document_id,
573
- document,
574
- mask: nil,
440
+ def begin_transaction \
441
+ database,
442
+ options_: nil,
575
443
  options: nil,
576
444
  &block
577
445
  req = {
578
- parent: parent,
579
- collection_id: collection_id,
580
- document_id: document_id,
581
- document: document,
582
- mask: mask
446
+ database: database,
447
+ options: options_
583
448
  }.delete_if { |_, v| v.nil? }
584
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::CreateDocumentRequest)
585
- @create_document.call(req, options, &block)
449
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::BeginTransactionRequest)
450
+ @begin_transaction.call(req, options, &block)
586
451
  end
587
452
 
588
- # Updates or inserts a document.
589
- #
590
- # @param document [Google::Firestore::V1beta1::Document | Hash]
591
- # Required. The updated document.
592
- # Creates the document if it does not already exist.
593
- # A hash of the same form as `Google::Firestore::V1beta1::Document`
594
- # can also be provided.
595
- # @param update_mask [Google::Firestore::V1beta1::DocumentMask | Hash]
596
- # The fields to update.
597
- # None of the field paths in the mask may contain a reserved name.
598
- #
599
- # If the document exists on the server and has fields not referenced in the
600
- # mask, they are left unchanged.
601
- # Fields referenced in the mask, but not present in the input document, are
602
- # deleted from the document on the server.
603
- # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
604
- # can also be provided.
605
- # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
606
- # The fields to return. If not set, returns all fields.
453
+ # Rolls back a transaction.
607
454
  #
608
- # If the document has a field that is not present in this mask, that field
609
- # will not be returned in the response.
610
- # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
611
- # can also be provided.
612
- # @param current_document [Google::Firestore::V1beta1::Precondition | Hash]
613
- # An optional precondition on the document.
614
- # The request will fail if this is set and not met by the target document.
615
- # A hash of the same form as `Google::Firestore::V1beta1::Precondition`
616
- # can also be provided.
455
+ # @param database [String]
456
+ # Required. The database name. In the format:
457
+ # `projects/{project_id}/databases/{database_id}`.
458
+ # @param transaction [String]
459
+ # Required. The transaction to roll back.
617
460
  # @param options [Google::Gax::CallOptions]
618
461
  # Overrides the default settings for this call, e.g, timeout,
619
462
  # retries, etc.
620
463
  # @yield [result, operation] Access the result along with the RPC operation
621
- # @yieldparam result [Google::Firestore::V1beta1::Document]
464
+ # @yieldparam result []
622
465
  # @yieldparam operation [GRPC::ActiveCall::Operation]
623
- # @return [Google::Firestore::V1beta1::Document]
624
466
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
625
467
  # @example
626
468
  # require "google/cloud/firestore/v1beta1"
627
469
  #
628
470
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
629
471
  #
630
- # # TODO: Initialize `document`:
631
- # document = {}
632
- #
633
- # # TODO: Initialize `update_mask`:
634
- # update_mask = {}
635
- # response = firestore_client.update_document(document, update_mask)
636
-
637
- def update_document \
638
- document,
639
- update_mask,
640
- mask: nil,
641
- current_document: nil,
642
- options: nil,
643
- &block
644
- req = {
645
- document: document,
646
- update_mask: update_mask,
647
- mask: mask,
648
- current_document: current_document
649
- }.delete_if { |_, v| v.nil? }
650
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::UpdateDocumentRequest)
651
- @update_document.call(req, options, &block)
652
- end
653
-
654
- # Deletes a document.
655
- #
656
- # @param name [String]
657
- # Required. The resource name of the Document to delete. In the format:
658
- # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
659
- # @param current_document [Google::Firestore::V1beta1::Precondition | Hash]
660
- # An optional precondition on the document.
661
- # The request will fail if this is set and not met by the target document.
662
- # A hash of the same form as `Google::Firestore::V1beta1::Precondition`
663
- # can also be provided.
664
- # @param options [Google::Gax::CallOptions]
665
- # Overrides the default settings for this call, e.g, timeout,
666
- # retries, etc.
667
- # @yield [result, operation] Access the result along with the RPC operation
668
- # @yieldparam result []
669
- # @yieldparam operation [GRPC::ActiveCall::Operation]
670
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
671
- # @example
672
- # require "google/cloud/firestore/v1beta1"
472
+ # # TODO: Initialize `database`:
473
+ # database = ''
673
474
  #
674
- # firestore_client = Google::Cloud::Firestore::V1beta1.new
675
- # formatted_name = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
676
- # firestore_client.delete_document(formatted_name)
475
+ # # TODO: Initialize `transaction`:
476
+ # transaction = ''
477
+ # firestore_client.rollback(database, transaction)
677
478
 
678
- def delete_document \
679
- name,
680
- current_document: nil,
479
+ def rollback \
480
+ database,
481
+ transaction,
681
482
  options: nil,
682
483
  &block
683
484
  req = {
684
- name: name,
685
- current_document: current_document
485
+ database: database,
486
+ transaction: transaction
686
487
  }.delete_if { |_, v| v.nil? }
687
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::DeleteDocumentRequest)
688
- @delete_document.call(req, options, &block)
488
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::RollbackRequest)
489
+ @rollback.call(req, options, &block)
689
490
  nil
690
491
  end
691
492
 
692
- # Gets multiple documents.
693
- #
694
- # Documents returned by this method are not guaranteed to be returned in the
695
- # same order that they were requested.
493
+ # Runs a query.
696
494
  #
697
- # @param database [String]
698
- # Required. The database name. In the format:
699
- # `projects/{project_id}/databases/{database_id}`.
700
- # @param documents [Array<String>]
701
- # The names of the documents to retrieve. In the format:
495
+ # @param parent [String]
496
+ # Required. The parent resource name. In the format:
497
+ # `projects/{project_id}/databases/{database_id}/documents` or
702
498
  # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
703
- # The request will fail if any of the document is not a child resource of the
704
- # given `database`. Duplicate names will be elided.
705
- # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
706
- # The fields to return. If not set, returns all fields.
707
- #
708
- # If a document has a field that is not present in this mask, that field will
709
- # not be returned in the response.
710
- # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
499
+ # For example:
500
+ # `projects/my-project/databases/my-database/documents` or
501
+ # `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
502
+ # @param structured_query [Google::Firestore::V1beta1::StructuredQuery | Hash]
503
+ # A structured query.
504
+ # A hash of the same form as `Google::Firestore::V1beta1::StructuredQuery`
711
505
  # can also be provided.
712
506
  # @param transaction [String]
713
507
  # Reads documents in a transaction.
@@ -726,165 +520,226 @@ module Google
726
520
  # @param options [Google::Gax::CallOptions]
727
521
  # Overrides the default settings for this call, e.g, timeout,
728
522
  # retries, etc.
729
- # @return [Enumerable<Google::Firestore::V1beta1::BatchGetDocumentsResponse>]
730
- # An enumerable of Google::Firestore::V1beta1::BatchGetDocumentsResponse instances.
523
+ # @return [Enumerable<Google::Firestore::V1beta1::RunQueryResponse>]
524
+ # An enumerable of Google::Firestore::V1beta1::RunQueryResponse instances.
731
525
  #
732
526
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
733
527
  # @example
734
528
  # require "google/cloud/firestore/v1beta1"
735
529
  #
736
530
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
737
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
738
531
  #
739
- # # TODO: Initialize `documents`:
740
- # documents = []
741
- # firestore_client.batch_get_documents(formatted_database, documents).each do |element|
532
+ # # TODO: Initialize `parent`:
533
+ # parent = ''
534
+ # firestore_client.run_query(parent).each do |element|
742
535
  # # Process element.
743
536
  # end
744
537
 
745
- def batch_get_documents \
746
- database,
747
- documents,
748
- mask: nil,
538
+ def run_query \
539
+ parent,
540
+ structured_query: nil,
749
541
  transaction: nil,
750
542
  new_transaction: nil,
751
543
  read_time: nil,
752
544
  options: nil
753
545
  req = {
754
- database: database,
755
- documents: documents,
756
- mask: mask,
546
+ parent: parent,
547
+ structured_query: structured_query,
757
548
  transaction: transaction,
758
549
  new_transaction: new_transaction,
759
550
  read_time: read_time
760
551
  }.delete_if { |_, v| v.nil? }
761
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::BatchGetDocumentsRequest)
762
- @batch_get_documents.call(req, options)
552
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::RunQueryRequest)
553
+ @run_query.call(req, options)
763
554
  end
764
555
 
765
- # Starts a new transaction.
556
+ # Streams batches of document updates and deletes, in order.
766
557
  #
767
- # @param database [String]
768
- # Required. The database name. In the format:
769
- # `projects/{project_id}/databases/{database_id}`.
770
- # @param options_ [Google::Firestore::V1beta1::TransactionOptions | Hash]
771
- # The options for the transaction.
772
- # Defaults to a read-write transaction.
773
- # A hash of the same form as `Google::Firestore::V1beta1::TransactionOptions`
774
- # can also be provided.
558
+ # @param reqs [Enumerable<Google::Firestore::V1beta1::WriteRequest>]
559
+ # The input requests.
775
560
  # @param options [Google::Gax::CallOptions]
776
561
  # Overrides the default settings for this call, e.g, timeout,
777
562
  # retries, etc.
778
- # @yield [result, operation] Access the result along with the RPC operation
779
- # @yieldparam result [Google::Firestore::V1beta1::BeginTransactionResponse]
780
- # @yieldparam operation [GRPC::ActiveCall::Operation]
781
- # @return [Google::Firestore::V1beta1::BeginTransactionResponse]
563
+ # @return [Enumerable<Google::Firestore::V1beta1::WriteResponse>]
564
+ # An enumerable of Google::Firestore::V1beta1::WriteResponse instances.
565
+ #
782
566
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
567
+ #
568
+ # @note
569
+ # EXPERIMENTAL:
570
+ # Streaming requests are still undergoing review.
571
+ # This method interface might change in the future.
572
+ #
783
573
  # @example
784
574
  # require "google/cloud/firestore/v1beta1"
785
575
  #
786
576
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
787
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
788
- # response = firestore_client.begin_transaction(formatted_database)
577
+ #
578
+ # # TODO: Initialize `database`:
579
+ # database = ''
580
+ # request = { database: database }
581
+ # requests = [request]
582
+ # firestore_client.write(requests).each do |element|
583
+ # # Process element.
584
+ # end
789
585
 
790
- def begin_transaction \
791
- database,
792
- options_: nil,
793
- options: nil,
794
- &block
795
- req = {
796
- database: database,
797
- options: options_
798
- }.delete_if { |_, v| v.nil? }
799
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::BeginTransactionRequest)
800
- @begin_transaction.call(req, options, &block)
586
+ def write reqs, options: nil
587
+ request_protos = reqs.lazy.map do |req|
588
+ Google::Gax::to_proto(req, Google::Firestore::V1beta1::WriteRequest)
589
+ end
590
+ @write.call(request_protos, options)
801
591
  end
802
592
 
803
- # Commits a transaction, while optionally updating documents.
804
- #
805
- # @param database [String]
806
- # Required. The database name. In the format:
807
- # `projects/{project_id}/databases/{database_id}`.
808
- # @param writes [Array<Google::Firestore::V1beta1::Write | Hash>]
809
- # The writes to apply.
593
+ # Listens to changes.
810
594
  #
811
- # Always executed atomically and in order.
812
- # A hash of the same form as `Google::Firestore::V1beta1::Write`
813
- # can also be provided.
814
- # @param transaction [String]
815
- # If set, applies all writes in this transaction, and commits it.
595
+ # @param reqs [Enumerable<Google::Firestore::V1beta1::ListenRequest>]
596
+ # The input requests.
816
597
  # @param options [Google::Gax::CallOptions]
817
598
  # Overrides the default settings for this call, e.g, timeout,
818
599
  # retries, etc.
819
- # @yield [result, operation] Access the result along with the RPC operation
820
- # @yieldparam result [Google::Firestore::V1beta1::CommitResponse]
821
- # @yieldparam operation [GRPC::ActiveCall::Operation]
822
- # @return [Google::Firestore::V1beta1::CommitResponse]
600
+ # @return [Enumerable<Google::Firestore::V1beta1::ListenResponse>]
601
+ # An enumerable of Google::Firestore::V1beta1::ListenResponse instances.
602
+ #
823
603
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
604
+ #
605
+ # @note
606
+ # EXPERIMENTAL:
607
+ # Streaming requests are still undergoing review.
608
+ # This method interface might change in the future.
609
+ #
824
610
  # @example
825
611
  # require "google/cloud/firestore/v1beta1"
826
612
  #
827
613
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
828
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
829
614
  #
830
- # # TODO: Initialize `writes`:
831
- # writes = []
832
- # response = firestore_client.commit(formatted_database, writes)
615
+ # # TODO: Initialize `database`:
616
+ # database = ''
617
+ # request = { database: database }
618
+ # requests = [request]
619
+ # firestore_client.listen(requests).each do |element|
620
+ # # Process element.
621
+ # end
833
622
 
834
- def commit \
835
- database,
836
- writes,
837
- transaction: nil,
623
+ def listen reqs, options: nil
624
+ request_protos = reqs.lazy.map do |req|
625
+ Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListenRequest)
626
+ end
627
+ @listen.call(request_protos, options)
628
+ end
629
+
630
+ # Lists all the collection IDs underneath a document.
631
+ #
632
+ # @param parent [String]
633
+ # Required. The parent document. In the format:
634
+ # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
635
+ # For example:
636
+ # `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
637
+ # @param page_size [Integer]
638
+ # The maximum number of resources contained in the underlying API
639
+ # response. If page streaming is performed per-resource, this
640
+ # parameter does not affect the return value. If page streaming is
641
+ # performed per-page, this determines the maximum number of
642
+ # resources in a page.
643
+ # @param options [Google::Gax::CallOptions]
644
+ # Overrides the default settings for this call, e.g, timeout,
645
+ # retries, etc.
646
+ # @yield [result, operation] Access the result along with the RPC operation
647
+ # @yieldparam result [Google::Gax::PagedEnumerable<String>]
648
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
649
+ # @return [Google::Gax::PagedEnumerable<String>]
650
+ # An enumerable of String instances.
651
+ # See Google::Gax::PagedEnumerable documentation for other
652
+ # operations such as per-page iteration or access to the response
653
+ # object.
654
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
655
+ # @example
656
+ # require "google/cloud/firestore/v1beta1"
657
+ #
658
+ # firestore_client = Google::Cloud::Firestore::V1beta1.new
659
+ #
660
+ # # TODO: Initialize `parent`:
661
+ # parent = ''
662
+ #
663
+ # # Iterate over all results.
664
+ # firestore_client.list_collection_ids(parent).each do |element|
665
+ # # Process element.
666
+ # end
667
+ #
668
+ # # Or iterate over results one page at a time.
669
+ # firestore_client.list_collection_ids(parent).each_page do |page|
670
+ # # Process each page at a time.
671
+ # page.each do |element|
672
+ # # Process element.
673
+ # end
674
+ # end
675
+
676
+ def list_collection_ids \
677
+ parent,
678
+ page_size: nil,
838
679
  options: nil,
839
680
  &block
840
681
  req = {
841
- database: database,
842
- writes: writes,
843
- transaction: transaction
682
+ parent: parent,
683
+ page_size: page_size
844
684
  }.delete_if { |_, v| v.nil? }
845
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::CommitRequest)
846
- @commit.call(req, options, &block)
685
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListCollectionIdsRequest)
686
+ @list_collection_ids.call(req, options, &block)
847
687
  end
848
688
 
849
- # Rolls back a transaction.
689
+ # Gets a single document.
850
690
  #
851
- # @param database [String]
852
- # Required. The database name. In the format:
853
- # `projects/{project_id}/databases/{database_id}`.
691
+ # @param name [String]
692
+ # Required. The resource name of the Document to get. In the format:
693
+ # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
694
+ # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
695
+ # The fields to return. If not set, returns all fields.
696
+ #
697
+ # If the document has a field that is not present in this mask, that field
698
+ # will not be returned in the response.
699
+ # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
700
+ # can also be provided.
854
701
  # @param transaction [String]
855
- # Required. The transaction to roll back.
702
+ # Reads the document in a transaction.
703
+ # @param read_time [Google::Protobuf::Timestamp | Hash]
704
+ # Reads the version of the document at the given time.
705
+ # This may not be older than 60 seconds.
706
+ # A hash of the same form as `Google::Protobuf::Timestamp`
707
+ # can also be provided.
856
708
  # @param options [Google::Gax::CallOptions]
857
709
  # Overrides the default settings for this call, e.g, timeout,
858
710
  # retries, etc.
859
711
  # @yield [result, operation] Access the result along with the RPC operation
860
- # @yieldparam result []
712
+ # @yieldparam result [Google::Firestore::V1beta1::Document]
861
713
  # @yieldparam operation [GRPC::ActiveCall::Operation]
714
+ # @return [Google::Firestore::V1beta1::Document]
862
715
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
863
716
  # @example
864
717
  # require "google/cloud/firestore/v1beta1"
865
718
  #
866
719
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
867
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
868
720
  #
869
- # # TODO: Initialize `transaction`:
870
- # transaction = ''
871
- # firestore_client.rollback(formatted_database, transaction)
721
+ # # TODO: Initialize `name`:
722
+ # name = ''
723
+ # response = firestore_client.get_document(name)
872
724
 
873
- def rollback \
874
- database,
875
- transaction,
725
+ def get_document \
726
+ name,
727
+ mask: nil,
728
+ transaction: nil,
729
+ read_time: nil,
876
730
  options: nil,
877
731
  &block
878
732
  req = {
879
- database: database,
880
- transaction: transaction
733
+ name: name,
734
+ mask: mask,
735
+ transaction: transaction,
736
+ read_time: read_time
881
737
  }.delete_if { |_, v| v.nil? }
882
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::RollbackRequest)
883
- @rollback.call(req, options, &block)
884
- nil
738
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::GetDocumentRequest)
739
+ @get_document.call(req, options, &block)
885
740
  end
886
741
 
887
- # Runs a query.
742
+ # Lists documents.
888
743
  #
889
744
  # @param parent [String]
890
745
  # Required. The parent resource name. In the format:
@@ -893,183 +748,271 @@ module Google
893
748
  # For example:
894
749
  # `projects/my-project/databases/my-database/documents` or
895
750
  # `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
896
- # @param structured_query [Google::Firestore::V1beta1::StructuredQuery | Hash]
897
- # A structured query.
898
- # A hash of the same form as `Google::Firestore::V1beta1::StructuredQuery`
751
+ # @param collection_id [String]
752
+ # Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`
753
+ # or `messages`.
754
+ # @param page_size [Integer]
755
+ # The maximum number of resources contained in the underlying API
756
+ # response. If page streaming is performed per-resource, this
757
+ # parameter does not affect the return value. If page streaming is
758
+ # performed per-page, this determines the maximum number of
759
+ # resources in a page.
760
+ # @param order_by [String]
761
+ # The order to sort results by. For example: `priority desc, name`.
762
+ # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
763
+ # The fields to return. If not set, returns all fields.
764
+ #
765
+ # If a document has a field that is not present in this mask, that field
766
+ # will not be returned in the response.
767
+ # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
899
768
  # can also be provided.
900
769
  # @param transaction [String]
901
770
  # Reads documents in a transaction.
902
- # @param new_transaction [Google::Firestore::V1beta1::TransactionOptions | Hash]
903
- # Starts a new transaction and reads the documents.
904
- # Defaults to a read-only transaction.
905
- # The new transaction ID will be returned as the first response in the
906
- # stream.
907
- # A hash of the same form as `Google::Firestore::V1beta1::TransactionOptions`
908
- # can also be provided.
909
771
  # @param read_time [Google::Protobuf::Timestamp | Hash]
910
772
  # Reads documents as they were at the given time.
911
773
  # This may not be older than 60 seconds.
912
774
  # A hash of the same form as `Google::Protobuf::Timestamp`
913
775
  # can also be provided.
776
+ # @param show_missing [true, false]
777
+ # If the list should show missing documents. A missing document is a
778
+ # document that does not exist but has sub-documents. These documents will
779
+ # be returned with a key but will not have fields, {Google::Firestore::V1beta1::Document#create_time Document#create_time},
780
+ # or {Google::Firestore::V1beta1::Document#update_time Document#update_time} set.
781
+ #
782
+ # Requests with `show_missing` may not specify `where` or
783
+ # `order_by`.
914
784
  # @param options [Google::Gax::CallOptions]
915
785
  # Overrides the default settings for this call, e.g, timeout,
916
786
  # retries, etc.
917
- # @return [Enumerable<Google::Firestore::V1beta1::RunQueryResponse>]
918
- # An enumerable of Google::Firestore::V1beta1::RunQueryResponse instances.
919
- #
787
+ # @yield [result, operation] Access the result along with the RPC operation
788
+ # @yieldparam result [Google::Gax::PagedEnumerable<Google::Firestore::V1beta1::Document>]
789
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
790
+ # @return [Google::Gax::PagedEnumerable<Google::Firestore::V1beta1::Document>]
791
+ # An enumerable of Google::Firestore::V1beta1::Document instances.
792
+ # See Google::Gax::PagedEnumerable documentation for other
793
+ # operations such as per-page iteration or access to the response
794
+ # object.
920
795
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
921
796
  # @example
922
797
  # require "google/cloud/firestore/v1beta1"
923
798
  #
924
799
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
925
- # formatted_parent = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
926
- # firestore_client.run_query(formatted_parent).each do |element|
800
+ #
801
+ # # TODO: Initialize `parent`:
802
+ # parent = ''
803
+ #
804
+ # # TODO: Initialize `collection_id`:
805
+ # collection_id = ''
806
+ #
807
+ # # Iterate over all results.
808
+ # firestore_client.list_documents(parent, collection_id).each do |element|
927
809
  # # Process element.
928
810
  # end
811
+ #
812
+ # # Or iterate over results one page at a time.
813
+ # firestore_client.list_documents(parent, collection_id).each_page do |page|
814
+ # # Process each page at a time.
815
+ # page.each do |element|
816
+ # # Process element.
817
+ # end
818
+ # end
929
819
 
930
- def run_query \
820
+ def list_documents \
931
821
  parent,
932
- structured_query: nil,
822
+ collection_id,
823
+ page_size: nil,
824
+ order_by: nil,
825
+ mask: nil,
933
826
  transaction: nil,
934
- new_transaction: nil,
935
827
  read_time: nil,
936
- options: nil
828
+ show_missing: nil,
829
+ options: nil,
830
+ &block
937
831
  req = {
938
832
  parent: parent,
939
- structured_query: structured_query,
833
+ collection_id: collection_id,
834
+ page_size: page_size,
835
+ order_by: order_by,
836
+ mask: mask,
940
837
  transaction: transaction,
941
- new_transaction: new_transaction,
942
- read_time: read_time
838
+ read_time: read_time,
839
+ show_missing: show_missing
943
840
  }.delete_if { |_, v| v.nil? }
944
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::RunQueryRequest)
945
- @run_query.call(req, options)
841
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListDocumentsRequest)
842
+ @list_documents.call(req, options, &block)
946
843
  end
947
844
 
948
- # Streams batches of document updates and deletes, in order.
845
+ # Creates a new document.
949
846
  #
950
- # @param reqs [Enumerable<Google::Firestore::V1beta1::WriteRequest>]
951
- # The input requests.
847
+ # @param parent [String]
848
+ # Required. The parent resource. For example:
849
+ # `projects/{project_id}/databases/{database_id}/documents` or
850
+ # `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`
851
+ # @param collection_id [String]
852
+ # Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`.
853
+ # @param document [Google::Firestore::V1beta1::Document | Hash]
854
+ # Required. The document to create. `name` must not be set.
855
+ # A hash of the same form as `Google::Firestore::V1beta1::Document`
856
+ # can also be provided.
857
+ # @param document_id [String]
858
+ # The client-assigned document ID to use for this document.
859
+ #
860
+ # Optional. If not specified, an ID will be assigned by the service.
861
+ # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
862
+ # The fields to return. If not set, returns all fields.
863
+ #
864
+ # If the document has a field that is not present in this mask, that field
865
+ # will not be returned in the response.
866
+ # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
867
+ # can also be provided.
952
868
  # @param options [Google::Gax::CallOptions]
953
869
  # Overrides the default settings for this call, e.g, timeout,
954
870
  # retries, etc.
955
- # @return [Enumerable<Google::Firestore::V1beta1::WriteResponse>]
956
- # An enumerable of Google::Firestore::V1beta1::WriteResponse instances.
957
- #
871
+ # @yield [result, operation] Access the result along with the RPC operation
872
+ # @yieldparam result [Google::Firestore::V1beta1::Document]
873
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
874
+ # @return [Google::Firestore::V1beta1::Document]
958
875
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
959
- #
960
- # @note
961
- # EXPERIMENTAL:
962
- # Streaming requests are still undergoing review.
963
- # This method interface might change in the future.
964
- #
965
876
  # @example
966
877
  # require "google/cloud/firestore/v1beta1"
967
878
  #
968
879
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
969
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
970
- # request = { database: formatted_database }
971
- # requests = [request]
972
- # firestore_client.write(requests).each do |element|
973
- # # Process element.
974
- # end
880
+ #
881
+ # # TODO: Initialize `parent`:
882
+ # parent = ''
883
+ #
884
+ # # TODO: Initialize `collection_id`:
885
+ # collection_id = ''
886
+ #
887
+ # # TODO: Initialize `document`:
888
+ # document = {}
889
+ # response = firestore_client.create_document(parent, collection_id, document)
975
890
 
976
- def write reqs, options: nil
977
- request_protos = reqs.lazy.map do |req|
978
- Google::Gax::to_proto(req, Google::Firestore::V1beta1::WriteRequest)
979
- end
980
- @write.call(request_protos, options)
891
+ def create_document \
892
+ parent,
893
+ collection_id,
894
+ document,
895
+ document_id: nil,
896
+ mask: nil,
897
+ options: nil,
898
+ &block
899
+ req = {
900
+ parent: parent,
901
+ collection_id: collection_id,
902
+ document: document,
903
+ document_id: document_id,
904
+ mask: mask
905
+ }.delete_if { |_, v| v.nil? }
906
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::CreateDocumentRequest)
907
+ @create_document.call(req, options, &block)
981
908
  end
982
909
 
983
- # Listens to changes.
910
+ # Updates or inserts a document.
984
911
  #
985
- # @param reqs [Enumerable<Google::Firestore::V1beta1::ListenRequest>]
986
- # The input requests.
912
+ # @param document [Google::Firestore::V1beta1::Document | Hash]
913
+ # Required. The updated document.
914
+ # Creates the document if it does not already exist.
915
+ # A hash of the same form as `Google::Firestore::V1beta1::Document`
916
+ # can also be provided.
917
+ # @param update_mask [Google::Firestore::V1beta1::DocumentMask | Hash]
918
+ # The fields to update.
919
+ # None of the field paths in the mask may contain a reserved name.
920
+ #
921
+ # If the document exists on the server and has fields not referenced in the
922
+ # mask, they are left unchanged.
923
+ # Fields referenced in the mask, but not present in the input document, are
924
+ # deleted from the document on the server.
925
+ # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
926
+ # can also be provided.
927
+ # @param mask [Google::Firestore::V1beta1::DocumentMask | Hash]
928
+ # The fields to return. If not set, returns all fields.
929
+ #
930
+ # If the document has a field that is not present in this mask, that field
931
+ # will not be returned in the response.
932
+ # A hash of the same form as `Google::Firestore::V1beta1::DocumentMask`
933
+ # can also be provided.
934
+ # @param current_document [Google::Firestore::V1beta1::Precondition | Hash]
935
+ # An optional precondition on the document.
936
+ # The request will fail if this is set and not met by the target document.
937
+ # A hash of the same form as `Google::Firestore::V1beta1::Precondition`
938
+ # can also be provided.
987
939
  # @param options [Google::Gax::CallOptions]
988
940
  # Overrides the default settings for this call, e.g, timeout,
989
941
  # retries, etc.
990
- # @return [Enumerable<Google::Firestore::V1beta1::ListenResponse>]
991
- # An enumerable of Google::Firestore::V1beta1::ListenResponse instances.
992
- #
942
+ # @yield [result, operation] Access the result along with the RPC operation
943
+ # @yieldparam result [Google::Firestore::V1beta1::Document]
944
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
945
+ # @return [Google::Firestore::V1beta1::Document]
993
946
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
994
- #
995
- # @note
996
- # EXPERIMENTAL:
997
- # Streaming requests are still undergoing review.
998
- # This method interface might change in the future.
999
- #
1000
947
  # @example
1001
948
  # require "google/cloud/firestore/v1beta1"
1002
949
  #
1003
950
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
1004
- # formatted_database = Google::Cloud::Firestore::V1beta1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
1005
- # request = { database: formatted_database }
1006
- # requests = [request]
1007
- # firestore_client.listen(requests).each do |element|
1008
- # # Process element.
1009
- # end
951
+ #
952
+ # # TODO: Initialize `document`:
953
+ # document = {}
954
+ # response = firestore_client.update_document(document)
1010
955
 
1011
- def listen reqs, options: nil
1012
- request_protos = reqs.lazy.map do |req|
1013
- Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListenRequest)
1014
- end
1015
- @listen.call(request_protos, options)
956
+ def update_document \
957
+ document,
958
+ update_mask: nil,
959
+ mask: nil,
960
+ current_document: nil,
961
+ options: nil,
962
+ &block
963
+ req = {
964
+ document: document,
965
+ update_mask: update_mask,
966
+ mask: mask,
967
+ current_document: current_document
968
+ }.delete_if { |_, v| v.nil? }
969
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::UpdateDocumentRequest)
970
+ @update_document.call(req, options, &block)
1016
971
  end
1017
972
 
1018
- # Lists all the collection IDs underneath a document.
973
+ # Commits a transaction, while optionally updating documents.
1019
974
  #
1020
- # @param parent [String]
1021
- # Required. The parent document. In the format:
1022
- # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
1023
- # For example:
1024
- # `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
1025
- # @param page_size [Integer]
1026
- # The maximum number of resources contained in the underlying API
1027
- # response. If page streaming is performed per-resource, this
1028
- # parameter does not affect the return value. If page streaming is
1029
- # performed per-page, this determines the maximum number of
1030
- # resources in a page.
975
+ # @param database [String]
976
+ # Required. The database name. In the format:
977
+ # `projects/{project_id}/databases/{database_id}`.
978
+ # @param writes [Array<Google::Firestore::V1beta1::Write | Hash>]
979
+ # The writes to apply.
980
+ #
981
+ # Always executed atomically and in order.
982
+ # A hash of the same form as `Google::Firestore::V1beta1::Write`
983
+ # can also be provided.
984
+ # @param transaction [String]
985
+ # If set, applies all writes in this transaction, and commits it.
1031
986
  # @param options [Google::Gax::CallOptions]
1032
987
  # Overrides the default settings for this call, e.g, timeout,
1033
988
  # retries, etc.
1034
989
  # @yield [result, operation] Access the result along with the RPC operation
1035
- # @yieldparam result [Google::Gax::PagedEnumerable<String>]
990
+ # @yieldparam result [Google::Firestore::V1beta1::CommitResponse]
1036
991
  # @yieldparam operation [GRPC::ActiveCall::Operation]
1037
- # @return [Google::Gax::PagedEnumerable<String>]
1038
- # An enumerable of String instances.
1039
- # See Google::Gax::PagedEnumerable documentation for other
1040
- # operations such as per-page iteration or access to the response
1041
- # object.
992
+ # @return [Google::Firestore::V1beta1::CommitResponse]
1042
993
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
1043
994
  # @example
1044
995
  # require "google/cloud/firestore/v1beta1"
1045
996
  #
1046
997
  # firestore_client = Google::Cloud::Firestore::V1beta1.new
1047
- # formatted_parent = Google::Cloud::Firestore::V1beta1::FirestoreClient.any_path_path("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
1048
- #
1049
- # # Iterate over all results.
1050
- # firestore_client.list_collection_ids(formatted_parent).each do |element|
1051
- # # Process element.
1052
- # end
1053
998
  #
1054
- # # Or iterate over results one page at a time.
1055
- # firestore_client.list_collection_ids(formatted_parent).each_page do |page|
1056
- # # Process each page at a time.
1057
- # page.each do |element|
1058
- # # Process element.
1059
- # end
1060
- # end
999
+ # # TODO: Initialize `database`:
1000
+ # database = ''
1001
+ # response = firestore_client.commit(database)
1061
1002
 
1062
- def list_collection_ids \
1063
- parent,
1064
- page_size: nil,
1003
+ def commit \
1004
+ database,
1005
+ writes: nil,
1006
+ transaction: nil,
1065
1007
  options: nil,
1066
1008
  &block
1067
1009
  req = {
1068
- parent: parent,
1069
- page_size: page_size
1010
+ database: database,
1011
+ writes: writes,
1012
+ transaction: transaction
1070
1013
  }.delete_if { |_, v| v.nil? }
1071
- req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::ListCollectionIdsRequest)
1072
- @list_collection_ids.call(req, options, &block)
1014
+ req = Google::Gax::to_proto(req, Google::Firestore::V1beta1::CommitRequest)
1015
+ @commit.call(req, options, &block)
1073
1016
  end
1074
1017
  end
1075
1018
  end