google-cloud-firestore 1.4.0 → 1.4.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: 889cb510f153ac1dd619ffddc1cac4c2dce575eef604576ffffdaf801be49568
4
- data.tar.gz: 8a3aa5693f9e4e972048d663904f49744a8a6a03c122c8bac1c50c5aa77a50e8
3
+ metadata.gz: 7c6817bc0ec1113059a7a310bf96f92272d0947d2602c511796c2c921c325f41
4
+ data.tar.gz: 2b0835c6d9d67b03b1bfc00b7d03fde70f2696612194d51b7dec55f64066b246
5
5
  SHA512:
6
- metadata.gz: ab41a1196f01e81a2a1a4b7a35422aadee0b9174d729592aeae98247a8b736e559219df95276e4d35a2ff623dc7afa259b665cd9d66d619587b3be05a12f4688
7
- data.tar.gz: 5c721933e97977aa82cb2ff4de9a04efd2b1f4230aafb11348b24def72f40ede03f6ac877f42af113d31a6c74063d735753190bfc211a33ebc1b23516cd8540e
6
+ metadata.gz: c40af10bf4ffd742dc9b889d4591d23197526ab4b5f0246bcd5b166ac0b913aaff2e78c41b3ccf1d1a8328c1e59075cb317616e2bb655e4ad105a20a8df9c9a2
7
+ data.tar.gz: b4f8e9c5d553951f49b42013247f665dd454be9b93c2edb329b9e7ac223275b1828d004a123faa98e65d357c4692cfd2f5dc3ecdfb0702fce044a67c2dcc82bf
@@ -1,5 +1,11 @@
1
1
  # Release History
2
2
 
3
+ ### 1.4.1 / 2020-04-14
4
+
5
+ #### Bug Fixes
6
+
7
+ * Update the low-level interface to match service changes
8
+
3
9
  ### 1.4.0 / 2020-03-11
4
10
 
5
11
  #### Features
@@ -24,6 +24,8 @@ require "json"
24
24
  require "pathname"
25
25
 
26
26
  require "google/gax"
27
+ require "google/gax/operation"
28
+ require "google/longrunning/operations_client"
27
29
 
28
30
  require "google/firestore/admin/v1/firestore_admin_pb"
29
31
  require "google/cloud/firestore/admin/v1/credentials"
@@ -74,6 +76,16 @@ module Google
74
76
  "https://www.googleapis.com/auth/datastore"
75
77
  ].freeze
76
78
 
79
+ class OperationsClient < Google::Longrunning::OperationsClient
80
+ self::SERVICE_ADDRESS = FirestoreAdminClient::SERVICE_ADDRESS
81
+ self::GRPC_INTERCEPTORS = FirestoreAdminClient::GRPC_INTERCEPTORS
82
+ end
83
+
84
+ COLLECTION_GROUP_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
85
+ "projects/{project}/databases/{database}/collectionGroups/{collection}"
86
+ )
87
+
88
+ private_constant :COLLECTION_GROUP_PATH_TEMPLATE
77
89
 
78
90
  DATABASE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
79
91
  "projects/{project}/databases/{database}"
@@ -82,22 +94,29 @@ module Google
82
94
  private_constant :DATABASE_PATH_TEMPLATE
83
95
 
84
96
  FIELD_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
85
- "projects/{project}/databases/{database}/collectionGroups/{collection_id}/fields/{field_id}"
97
+ "projects/{project}/databases/{database}/collectionGroups/{collection}/fields/{field}"
86
98
  )
87
99
 
88
100
  private_constant :FIELD_PATH_TEMPLATE
89
101
 
90
102
  INDEX_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
91
- "projects/{project}/databases/{database}/collectionGroups/{collection_id}/indexes/{index_id}"
103
+ "projects/{project}/databases/{database}/collectionGroups/{collection}/indexes/{index}"
92
104
  )
93
105
 
94
106
  private_constant :INDEX_PATH_TEMPLATE
95
107
 
96
- PARENT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
97
- "projects/{project}/databases/{database}/collectionGroups/{collection_id}"
98
- )
99
-
100
- private_constant :PARENT_PATH_TEMPLATE
108
+ # Returns a fully-qualified collection_group resource name string.
109
+ # @param project [String]
110
+ # @param database [String]
111
+ # @param collection [String]
112
+ # @return [String]
113
+ def self.collection_group_path project, database, collection
114
+ COLLECTION_GROUP_PATH_TEMPLATE.render(
115
+ :"project" => project,
116
+ :"database" => database,
117
+ :"collection" => collection
118
+ )
119
+ end
101
120
 
102
121
  # Returns a fully-qualified database resource name string.
103
122
  # @param project [String]
@@ -113,43 +132,30 @@ module Google
113
132
  # Returns a fully-qualified field resource name string.
114
133
  # @param project [String]
115
134
  # @param database [String]
116
- # @param collection_id [String]
117
- # @param field_id [String]
135
+ # @param collection [String]
136
+ # @param field [String]
118
137
  # @return [String]
119
- def self.field_path project, database, collection_id, field_id
138
+ def self.field_path project, database, collection, field
120
139
  FIELD_PATH_TEMPLATE.render(
121
140
  :"project" => project,
122
141
  :"database" => database,
123
- :"collection_id" => collection_id,
124
- :"field_id" => field_id
142
+ :"collection" => collection,
143
+ :"field" => field
125
144
  )
126
145
  end
127
146
 
128
147
  # Returns a fully-qualified index resource name string.
129
148
  # @param project [String]
130
149
  # @param database [String]
131
- # @param collection_id [String]
132
- # @param index_id [String]
150
+ # @param collection [String]
151
+ # @param index [String]
133
152
  # @return [String]
134
- def self.index_path project, database, collection_id, index_id
153
+ def self.index_path project, database, collection, index
135
154
  INDEX_PATH_TEMPLATE.render(
136
155
  :"project" => project,
137
156
  :"database" => database,
138
- :"collection_id" => collection_id,
139
- :"index_id" => index_id
140
- )
141
- end
142
-
143
- # Returns a fully-qualified parent resource name string.
144
- # @param project [String]
145
- # @param database [String]
146
- # @param collection_id [String]
147
- # @return [String]
148
- def self.parent_path project, database, collection_id
149
- PARENT_PATH_TEMPLATE.render(
150
- :"project" => project,
151
- :"database" => database,
152
- :"collection_id" => collection_id
157
+ :"collection" => collection,
158
+ :"index" => index
153
159
  )
154
160
  end
155
161
 
@@ -205,6 +211,18 @@ module Google
205
211
 
206
212
  credentials ||= Google::Cloud::Firestore::Admin::V1::Credentials.default
207
213
 
214
+ @operations_client = OperationsClient.new(
215
+ credentials: credentials,
216
+ scopes: scopes,
217
+ client_config: client_config,
218
+ timeout: timeout,
219
+ lib_name: lib_name,
220
+ service_address: service_address,
221
+ service_port: service_port,
222
+ lib_version: lib_version,
223
+ metadata: metadata,
224
+ )
225
+
208
226
  if credentials.is_a?(String) || credentials.is_a?(Hash)
209
227
  updater_proc = Google::Cloud::Firestore::Admin::V1::Credentials.new(credentials).updater_proc
210
228
  end
@@ -265,6 +283,22 @@ module Google
265
283
  &Google::Firestore::Admin::V1::FirestoreAdmin::Stub.method(:new)
266
284
  )
267
285
 
286
+ @delete_index = Google::Gax.create_api_call(
287
+ @firestore_admin_stub.method(:delete_index),
288
+ defaults["delete_index"],
289
+ exception_transformer: exception_transformer,
290
+ params_extractor: proc do |request|
291
+ {'name' => request.name}
292
+ end
293
+ )
294
+ @update_field = Google::Gax.create_api_call(
295
+ @firestore_admin_stub.method(:update_field),
296
+ defaults["update_field"],
297
+ exception_transformer: exception_transformer,
298
+ params_extractor: proc do |request|
299
+ {'field.name' => request.field.name}
300
+ end
301
+ )
268
302
  @create_index = Google::Gax.create_api_call(
269
303
  @firestore_admin_stub.method(:create_index),
270
304
  defaults["create_index"],
@@ -289,20 +323,20 @@ module Google
289
323
  {'name' => request.name}
290
324
  end
291
325
  )
292
- @delete_index = Google::Gax.create_api_call(
293
- @firestore_admin_stub.method(:delete_index),
294
- defaults["delete_index"],
326
+ @get_field = Google::Gax.create_api_call(
327
+ @firestore_admin_stub.method(:get_field),
328
+ defaults["get_field"],
295
329
  exception_transformer: exception_transformer,
296
330
  params_extractor: proc do |request|
297
331
  {'name' => request.name}
298
332
  end
299
333
  )
300
- @import_documents = Google::Gax.create_api_call(
301
- @firestore_admin_stub.method(:import_documents),
302
- defaults["import_documents"],
334
+ @list_fields = Google::Gax.create_api_call(
335
+ @firestore_admin_stub.method(:list_fields),
336
+ defaults["list_fields"],
303
337
  exception_transformer: exception_transformer,
304
338
  params_extractor: proc do |request|
305
- {'name' => request.name}
339
+ {'parent' => request.parent}
306
340
  end
307
341
  )
308
342
  @export_documents = Google::Gax.create_api_call(
@@ -313,34 +347,132 @@ module Google
313
347
  {'name' => request.name}
314
348
  end
315
349
  )
316
- @get_field = Google::Gax.create_api_call(
317
- @firestore_admin_stub.method(:get_field),
318
- defaults["get_field"],
350
+ @import_documents = Google::Gax.create_api_call(
351
+ @firestore_admin_stub.method(:import_documents),
352
+ defaults["import_documents"],
319
353
  exception_transformer: exception_transformer,
320
354
  params_extractor: proc do |request|
321
355
  {'name' => request.name}
322
356
  end
323
357
  )
324
- @list_fields = Google::Gax.create_api_call(
325
- @firestore_admin_stub.method(:list_fields),
326
- defaults["list_fields"],
327
- exception_transformer: exception_transformer,
328
- params_extractor: proc do |request|
329
- {'parent' => request.parent}
330
- end
331
- )
332
- @update_field = Google::Gax.create_api_call(
333
- @firestore_admin_stub.method(:update_field),
334
- defaults["update_field"],
335
- exception_transformer: exception_transformer,
336
- params_extractor: proc do |request|
337
- {'field.name' => request.field.name}
338
- end
339
- )
340
358
  end
341
359
 
342
360
  # Service calls
343
361
 
362
+ # Deletes a composite index.
363
+ #
364
+ # @param name [String]
365
+ # Required. A name of the form
366
+ # `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
367
+ # @param options [Google::Gax::CallOptions]
368
+ # Overrides the default settings for this call, e.g, timeout,
369
+ # retries, etc.
370
+ # @yield [result, operation] Access the result along with the RPC operation
371
+ # @yieldparam result []
372
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
373
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
374
+ # @example
375
+ # require "google/cloud/firestore/admin"
376
+ #
377
+ # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
378
+ # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[INDEX]")
379
+ # firestore_admin_client.delete_index(formatted_name)
380
+
381
+ def delete_index \
382
+ name,
383
+ options: nil,
384
+ &block
385
+ req = {
386
+ name: name
387
+ }.delete_if { |_, v| v.nil? }
388
+ req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::DeleteIndexRequest)
389
+ @delete_index.call(req, options, &block)
390
+ nil
391
+ end
392
+
393
+ # Updates a field configuration. Currently, field updates apply only to
394
+ # single field index configuration. However, calls to
395
+ # {Google::Firestore::Admin::V1::FirestoreAdmin::UpdateField FirestoreAdmin::UpdateField} should provide a field mask to avoid
396
+ # changing any configuration that the caller isn't aware of. The field mask
397
+ # should be specified as: `{ paths: "index_config" }`.
398
+ #
399
+ # This call returns a {Google::Longrunning::Operation} which may be used to
400
+ # track the status of the field update. The metadata for
401
+ # the operation will be the type {Google::Firestore::Admin::V1::FieldOperationMetadata FieldOperationMetadata}.
402
+ #
403
+ # To configure the default field settings for the database, use
404
+ # the special `Field` with resource name:
405
+ # `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/*`.
406
+ #
407
+ # @param field [Google::Firestore::Admin::V1::Field | Hash]
408
+ # Required. The field to be updated.
409
+ # A hash of the same form as `Google::Firestore::Admin::V1::Field`
410
+ # can also be provided.
411
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
412
+ # A mask, relative to the field. If specified, only configuration specified
413
+ # by this field_mask will be updated in the field.
414
+ # A hash of the same form as `Google::Protobuf::FieldMask`
415
+ # can also be provided.
416
+ # @param options [Google::Gax::CallOptions]
417
+ # Overrides the default settings for this call, e.g, timeout,
418
+ # retries, etc.
419
+ # @return [Google::Gax::Operation]
420
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
421
+ # @example
422
+ # require "google/cloud/firestore/admin"
423
+ #
424
+ # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
425
+ #
426
+ # # TODO: Initialize `field`:
427
+ # field = {}
428
+ #
429
+ # # Register a callback during the method call.
430
+ # operation = firestore_admin_client.update_field(field) do |op|
431
+ # raise op.results.message if op.error?
432
+ # op_results = op.results
433
+ # # Process the results.
434
+ #
435
+ # metadata = op.metadata
436
+ # # Process the metadata.
437
+ # end
438
+ #
439
+ # # Or use the return value to register a callback.
440
+ # operation.on_done do |op|
441
+ # raise op.results.message if op.error?
442
+ # op_results = op.results
443
+ # # Process the results.
444
+ #
445
+ # metadata = op.metadata
446
+ # # Process the metadata.
447
+ # end
448
+ #
449
+ # # Manually reload the operation.
450
+ # operation.reload!
451
+ #
452
+ # # Or block until the operation completes, triggering callbacks on
453
+ # # completion.
454
+ # operation.wait_until_done!
455
+
456
+ def update_field \
457
+ field,
458
+ update_mask: nil,
459
+ options: nil
460
+ req = {
461
+ field: field,
462
+ update_mask: update_mask
463
+ }.delete_if { |_, v| v.nil? }
464
+ req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::UpdateFieldRequest)
465
+ operation = Google::Gax::Operation.new(
466
+ @update_field.call(req, options),
467
+ @operations_client,
468
+ Google::Firestore::Admin::V1::Field,
469
+ Google::Firestore::Admin::V1::FieldOperationMetadata,
470
+ call_options: options
471
+ )
472
+ operation.on_done { |operation| yield(operation) } if block_given?
473
+ operation
474
+ end
475
+
344
476
  # Creates a composite index. This returns a {Google::Longrunning::Operation}
345
477
  # which may be used to track the status of the creation. The metadata for
346
478
  # the operation will be the type {Google::Firestore::Admin::V1::IndexOperationMetadata IndexOperationMetadata}.
@@ -355,32 +487,62 @@ module Google
355
487
  # @param options [Google::Gax::CallOptions]
356
488
  # Overrides the default settings for this call, e.g, timeout,
357
489
  # retries, etc.
358
- # @yield [result, operation] Access the result along with the RPC operation
359
- # @yieldparam result [Google::Longrunning::Operation]
360
- # @yieldparam operation [GRPC::ActiveCall::Operation]
361
- # @return [Google::Longrunning::Operation]
490
+ # @return [Google::Gax::Operation]
362
491
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
363
492
  # @example
364
493
  # require "google/cloud/firestore/admin"
365
494
  #
366
495
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
367
- # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.parent_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]")
496
+ # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")
368
497
  #
369
498
  # # TODO: Initialize `index`:
370
499
  # index = {}
371
- # response = firestore_admin_client.create_index(formatted_parent, index)
500
+ #
501
+ # # Register a callback during the method call.
502
+ # operation = firestore_admin_client.create_index(formatted_parent, index) do |op|
503
+ # raise op.results.message if op.error?
504
+ # op_results = op.results
505
+ # # Process the results.
506
+ #
507
+ # metadata = op.metadata
508
+ # # Process the metadata.
509
+ # end
510
+ #
511
+ # # Or use the return value to register a callback.
512
+ # operation.on_done do |op|
513
+ # raise op.results.message if op.error?
514
+ # op_results = op.results
515
+ # # Process the results.
516
+ #
517
+ # metadata = op.metadata
518
+ # # Process the metadata.
519
+ # end
520
+ #
521
+ # # Manually reload the operation.
522
+ # operation.reload!
523
+ #
524
+ # # Or block until the operation completes, triggering callbacks on
525
+ # # completion.
526
+ # operation.wait_until_done!
372
527
 
373
528
  def create_index \
374
529
  parent,
375
530
  index,
376
- options: nil,
377
- &block
531
+ options: nil
378
532
  req = {
379
533
  parent: parent,
380
534
  index: index
381
535
  }.delete_if { |_, v| v.nil? }
382
536
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::CreateIndexRequest)
383
- @create_index.call(req, options, &block)
537
+ operation = Google::Gax::Operation.new(
538
+ @create_index.call(req, options),
539
+ @operations_client,
540
+ Google::Firestore::Admin::V1::Index,
541
+ Google::Firestore::Admin::V1::IndexOperationMetadata,
542
+ call_options: options
543
+ )
544
+ operation.on_done { |operation| yield(operation) } if block_given?
545
+ operation
384
546
  end
385
547
 
386
548
  # Lists composite indexes.
@@ -412,7 +574,7 @@ module Google
412
574
  # require "google/cloud/firestore/admin"
413
575
  #
414
576
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
415
- # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.parent_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]")
577
+ # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")
416
578
  #
417
579
  # # Iterate over all results.
418
580
  # firestore_admin_client.list_indexes(formatted_parent).each do |element|
@@ -459,7 +621,7 @@ module Google
459
621
  # require "google/cloud/firestore/admin"
460
622
  #
461
623
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
462
- # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]", "[INDEX_ID]")
624
+ # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[INDEX]")
463
625
  # response = firestore_admin_client.get_index(formatted_name)
464
626
 
465
627
  def get_index \
@@ -473,138 +635,6 @@ module Google
473
635
  @get_index.call(req, options, &block)
474
636
  end
475
637
 
476
- # Deletes a composite index.
477
- #
478
- # @param name [String]
479
- # Required. A name of the form
480
- # `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
481
- # @param options [Google::Gax::CallOptions]
482
- # Overrides the default settings for this call, e.g, timeout,
483
- # retries, etc.
484
- # @yield [result, operation] Access the result along with the RPC operation
485
- # @yieldparam result []
486
- # @yieldparam operation [GRPC::ActiveCall::Operation]
487
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
488
- # @example
489
- # require "google/cloud/firestore/admin"
490
- #
491
- # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
492
- # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]", "[INDEX_ID]")
493
- # firestore_admin_client.delete_index(formatted_name)
494
-
495
- def delete_index \
496
- name,
497
- options: nil,
498
- &block
499
- req = {
500
- name: name
501
- }.delete_if { |_, v| v.nil? }
502
- req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::DeleteIndexRequest)
503
- @delete_index.call(req, options, &block)
504
- nil
505
- end
506
-
507
- # Imports documents into Google Cloud Firestore. Existing documents with the
508
- # same name are overwritten. The import occurs in the background and its
509
- # progress can be monitored and managed via the Operation resource that is
510
- # created. If an ImportDocuments operation is cancelled, it is possible
511
- # that a subset of the data has already been imported to Cloud Firestore.
512
- #
513
- # @param name [String]
514
- # Required. Database to import into. Should be of the form:
515
- # `projects/{project_id}/databases/{database_id}`.
516
- # @param collection_ids [Array<String>]
517
- # Which collection ids to import. Unspecified means all collections included
518
- # in the import.
519
- # @param input_uri_prefix [String]
520
- # Location of the exported files.
521
- # This must match the output_uri_prefix of an ExportDocumentsResponse from
522
- # an export that has completed successfully.
523
- # See:
524
- # {Google::Firestore::Admin::V1::ExportDocumentsResponse#output_uri_prefix}.
525
- # @param options [Google::Gax::CallOptions]
526
- # Overrides the default settings for this call, e.g, timeout,
527
- # retries, etc.
528
- # @yield [result, operation] Access the result along with the RPC operation
529
- # @yieldparam result [Google::Longrunning::Operation]
530
- # @yieldparam operation [GRPC::ActiveCall::Operation]
531
- # @return [Google::Longrunning::Operation]
532
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
533
- # @example
534
- # require "google/cloud/firestore/admin"
535
- #
536
- # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
537
- # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")
538
- # response = firestore_admin_client.import_documents(formatted_name)
539
-
540
- def import_documents \
541
- name,
542
- collection_ids: nil,
543
- input_uri_prefix: nil,
544
- options: nil,
545
- &block
546
- req = {
547
- name: name,
548
- collection_ids: collection_ids,
549
- input_uri_prefix: input_uri_prefix
550
- }.delete_if { |_, v| v.nil? }
551
- req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ImportDocumentsRequest)
552
- @import_documents.call(req, options, &block)
553
- end
554
-
555
- # Exports a copy of all or a subset of documents from Google Cloud Firestore
556
- # to another storage system, such as Google Cloud Storage. Recent updates to
557
- # documents may not be reflected in the export. The export occurs in the
558
- # background and its progress can be monitored and managed via the
559
- # Operation resource that is created. The output of an export may only be
560
- # used once the associated operation is done. If an export operation is
561
- # cancelled before completion it may leave partial data behind in Google
562
- # Cloud Storage.
563
- #
564
- # @param name [String]
565
- # Required. Database to export. Should be of the form:
566
- # `projects/{project_id}/databases/{database_id}`.
567
- # @param collection_ids [Array<String>]
568
- # Which collection ids to export. Unspecified means all collections.
569
- # @param output_uri_prefix [String]
570
- # The output URI. Currently only supports Google Cloud Storage URIs of the
571
- # form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the name
572
- # of the Google Cloud Storage bucket and `NAMESPACE_PATH` is an optional
573
- # Google Cloud Storage namespace path. When
574
- # choosing a name, be sure to consider Google Cloud Storage naming
575
- # guidelines: https://cloud.google.com/storage/docs/naming.
576
- # If the URI is a bucket (without a namespace path), a prefix will be
577
- # generated based on the start time.
578
- # @param options [Google::Gax::CallOptions]
579
- # Overrides the default settings for this call, e.g, timeout,
580
- # retries, etc.
581
- # @yield [result, operation] Access the result along with the RPC operation
582
- # @yieldparam result [Google::Longrunning::Operation]
583
- # @yieldparam operation [GRPC::ActiveCall::Operation]
584
- # @return [Google::Longrunning::Operation]
585
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
586
- # @example
587
- # require "google/cloud/firestore/admin"
588
- #
589
- # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
590
- # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")
591
- # response = firestore_admin_client.export_documents(formatted_name)
592
-
593
- def export_documents \
594
- name,
595
- collection_ids: nil,
596
- output_uri_prefix: nil,
597
- options: nil,
598
- &block
599
- req = {
600
- name: name,
601
- collection_ids: collection_ids,
602
- output_uri_prefix: output_uri_prefix
603
- }.delete_if { |_, v| v.nil? }
604
- req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ExportDocumentsRequest)
605
- @export_documents.call(req, options, &block)
606
- end
607
-
608
638
  # Gets the metadata and configuration for a Field.
609
639
  #
610
640
  # @param name [String]
@@ -622,7 +652,7 @@ module Google
622
652
  # require "google/cloud/firestore/admin"
623
653
  #
624
654
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
625
- # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.field_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]", "[FIELD_ID]")
655
+ # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.field_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[FIELD]")
626
656
  # response = firestore_admin_client.get_field(formatted_name)
627
657
 
628
658
  def get_field \
@@ -674,7 +704,7 @@ module Google
674
704
  # require "google/cloud/firestore/admin"
675
705
  #
676
706
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
677
- # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.parent_path("[PROJECT]", "[DATABASE]", "[COLLECTION_ID]")
707
+ # formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")
678
708
  #
679
709
  # # Iterate over all results.
680
710
  # firestore_admin_client.list_fields(formatted_parent).each do |element|
@@ -704,57 +734,165 @@ module Google
704
734
  @list_fields.call(req, options, &block)
705
735
  end
706
736
 
707
- # Updates a field configuration. Currently, field updates apply only to
708
- # single field index configuration. However, calls to
709
- # {Google::Firestore::Admin::V1::FirestoreAdmin::UpdateField FirestoreAdmin::UpdateField} should provide a field mask to avoid
710
- # changing any configuration that the caller isn't aware of. The field mask
711
- # should be specified as: `{ paths: "index_config" }`.
737
+ # Exports a copy of all or a subset of documents from Google Cloud Firestore
738
+ # to another storage system, such as Google Cloud Storage. Recent updates to
739
+ # documents may not be reflected in the export. The export occurs in the
740
+ # background and its progress can be monitored and managed via the
741
+ # Operation resource that is created. The output of an export may only be
742
+ # used once the associated operation is done. If an export operation is
743
+ # cancelled before completion it may leave partial data behind in Google
744
+ # Cloud Storage.
712
745
  #
713
- # This call returns a {Google::Longrunning::Operation} which may be used to
714
- # track the status of the field update. The metadata for
715
- # the operation will be the type {Google::Firestore::Admin::V1::FieldOperationMetadata FieldOperationMetadata}.
746
+ # @param name [String]
747
+ # Required. Database to export. Should be of the form:
748
+ # `projects/{project_id}/databases/{database_id}`.
749
+ # @param collection_ids [Array<String>]
750
+ # Which collection ids to export. Unspecified means all collections.
751
+ # @param output_uri_prefix [String]
752
+ # The output URI. Currently only supports Google Cloud Storage URIs of the
753
+ # form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the name
754
+ # of the Google Cloud Storage bucket and `NAMESPACE_PATH` is an optional
755
+ # Google Cloud Storage namespace path. When
756
+ # choosing a name, be sure to consider Google Cloud Storage naming
757
+ # guidelines: https://cloud.google.com/storage/docs/naming.
758
+ # If the URI is a bucket (without a namespace path), a prefix will be
759
+ # generated based on the start time.
760
+ # @param options [Google::Gax::CallOptions]
761
+ # Overrides the default settings for this call, e.g, timeout,
762
+ # retries, etc.
763
+ # @return [Google::Gax::Operation]
764
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
765
+ # @example
766
+ # require "google/cloud/firestore/admin"
716
767
  #
717
- # To configure the default field settings for the database, use
718
- # the special `Field` with resource name:
719
- # `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/*`.
768
+ # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
769
+ # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")
720
770
  #
721
- # @param field [Google::Firestore::Admin::V1::Field | Hash]
722
- # Required. The field to be updated.
723
- # A hash of the same form as `Google::Firestore::Admin::V1::Field`
724
- # can also be provided.
725
- # @param update_mask [Google::Protobuf::FieldMask | Hash]
726
- # A mask, relative to the field. If specified, only configuration specified
727
- # by this field_mask will be updated in the field.
728
- # A hash of the same form as `Google::Protobuf::FieldMask`
729
- # can also be provided.
771
+ # # Register a callback during the method call.
772
+ # operation = firestore_admin_client.export_documents(formatted_name) do |op|
773
+ # raise op.results.message if op.error?
774
+ # op_results = op.results
775
+ # # Process the results.
776
+ #
777
+ # metadata = op.metadata
778
+ # # Process the metadata.
779
+ # end
780
+ #
781
+ # # Or use the return value to register a callback.
782
+ # operation.on_done do |op|
783
+ # raise op.results.message if op.error?
784
+ # op_results = op.results
785
+ # # Process the results.
786
+ #
787
+ # metadata = op.metadata
788
+ # # Process the metadata.
789
+ # end
790
+ #
791
+ # # Manually reload the operation.
792
+ # operation.reload!
793
+ #
794
+ # # Or block until the operation completes, triggering callbacks on
795
+ # # completion.
796
+ # operation.wait_until_done!
797
+
798
+ def export_documents \
799
+ name,
800
+ collection_ids: nil,
801
+ output_uri_prefix: nil,
802
+ options: nil
803
+ req = {
804
+ name: name,
805
+ collection_ids: collection_ids,
806
+ output_uri_prefix: output_uri_prefix
807
+ }.delete_if { |_, v| v.nil? }
808
+ req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ExportDocumentsRequest)
809
+ operation = Google::Gax::Operation.new(
810
+ @export_documents.call(req, options),
811
+ @operations_client,
812
+ Google::Firestore::Admin::V1::ExportDocumentsResponse,
813
+ Google::Firestore::Admin::V1::ExportDocumentsMetadata,
814
+ call_options: options
815
+ )
816
+ operation.on_done { |operation| yield(operation) } if block_given?
817
+ operation
818
+ end
819
+
820
+ # Imports documents into Google Cloud Firestore. Existing documents with the
821
+ # same name are overwritten. The import occurs in the background and its
822
+ # progress can be monitored and managed via the Operation resource that is
823
+ # created. If an ImportDocuments operation is cancelled, it is possible
824
+ # that a subset of the data has already been imported to Cloud Firestore.
825
+ #
826
+ # @param name [String]
827
+ # Required. Database to import into. Should be of the form:
828
+ # `projects/{project_id}/databases/{database_id}`.
829
+ # @param collection_ids [Array<String>]
830
+ # Which collection ids to import. Unspecified means all collections included
831
+ # in the import.
832
+ # @param input_uri_prefix [String]
833
+ # Location of the exported files.
834
+ # This must match the output_uri_prefix of an ExportDocumentsResponse from
835
+ # an export that has completed successfully.
836
+ # See:
837
+ # {Google::Firestore::Admin::V1::ExportDocumentsResponse#output_uri_prefix}.
730
838
  # @param options [Google::Gax::CallOptions]
731
839
  # Overrides the default settings for this call, e.g, timeout,
732
840
  # retries, etc.
733
- # @yield [result, operation] Access the result along with the RPC operation
734
- # @yieldparam result [Google::Longrunning::Operation]
735
- # @yieldparam operation [GRPC::ActiveCall::Operation]
736
- # @return [Google::Longrunning::Operation]
841
+ # @return [Google::Gax::Operation]
737
842
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
738
843
  # @example
739
844
  # require "google/cloud/firestore/admin"
740
845
  #
741
846
  # firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
847
+ # formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")
742
848
  #
743
- # # TODO: Initialize `field`:
744
- # field = {}
745
- # response = firestore_admin_client.update_field(field)
849
+ # # Register a callback during the method call.
850
+ # operation = firestore_admin_client.import_documents(formatted_name) do |op|
851
+ # raise op.results.message if op.error?
852
+ # op_results = op.results
853
+ # # Process the results.
854
+ #
855
+ # metadata = op.metadata
856
+ # # Process the metadata.
857
+ # end
858
+ #
859
+ # # Or use the return value to register a callback.
860
+ # operation.on_done do |op|
861
+ # raise op.results.message if op.error?
862
+ # op_results = op.results
863
+ # # Process the results.
864
+ #
865
+ # metadata = op.metadata
866
+ # # Process the metadata.
867
+ # end
868
+ #
869
+ # # Manually reload the operation.
870
+ # operation.reload!
871
+ #
872
+ # # Or block until the operation completes, triggering callbacks on
873
+ # # completion.
874
+ # operation.wait_until_done!
746
875
 
747
- def update_field \
748
- field,
749
- update_mask: nil,
750
- options: nil,
751
- &block
876
+ def import_documents \
877
+ name,
878
+ collection_ids: nil,
879
+ input_uri_prefix: nil,
880
+ options: nil
752
881
  req = {
753
- field: field,
754
- update_mask: update_mask
882
+ name: name,
883
+ collection_ids: collection_ids,
884
+ input_uri_prefix: input_uri_prefix
755
885
  }.delete_if { |_, v| v.nil? }
756
- req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::UpdateFieldRequest)
757
- @update_field.call(req, options, &block)
886
+ req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ImportDocumentsRequest)
887
+ operation = Google::Gax::Operation.new(
888
+ @import_documents.call(req, options),
889
+ @operations_client,
890
+ Google::Protobuf::Empty,
891
+ Google::Firestore::Admin::V1::ImportDocumentsMetadata,
892
+ call_options: options
893
+ )
894
+ operation.on_done { |operation| yield(operation) } if block_given?
895
+ operation
758
896
  end
759
897
  end
760
898
  end