Class: Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb

Overview

Operations are created by service FirestoreAdmin, but are accessed via service google.longrunning.Operations.

Defined Under Namespace

Classes: OperationsClient

Constant Summary collapse

SERVICE_ADDRESS =

The default address of the service.

"firestore.googleapis.com".freeze
DEFAULT_SERVICE_PORT =

The default port of the service.

443
GRPC_INTERCEPTORS =

The default set of gRPC interceptors.

[]
DEFAULT_TIMEOUT =
30
ALL_SCOPES =

The scopes needed to make gRPC calls to all of the methods defined in this service.

[
  "https://www.googleapis.com/auth/cloud-platform",
  "https://www.googleapis.com/auth/datastore"
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials: nil, scopes: ALL_SCOPES, client_config: {}, timeout: DEFAULT_TIMEOUT, metadata: nil, service_address: nil, service_port: nil, exception_transformer: nil, lib_name: nil, lib_version: "") ⇒ FirestoreAdminClient

Returns a new instance of FirestoreAdminClient.

Parameters:

  • credentials (Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc) (defaults to: nil)

    Provides the means for authenticating requests made by the client. This parameter can be many types. A Google::Auth::Credentials uses a the properties of its represented keyfile for authenticating requests made by this client. A String will be treated as the path to the keyfile to be used for the construction of credentials for this client. A Hash will be treated as the contents of a keyfile to be used for the construction of credentials for this client. A GRPC::Core::Channel will be used to make calls through. A GRPC::Core::ChannelCredentials for the setting up the RPC client. The channel credentials should already be composed with a GRPC::Core::CallCredentials object. A Proc will be used as an updater_proc for the Grpc channel. The proc transforms the metadata for requests, generally, to give OAuth credentials.

  • scopes (Array<String>) (defaults to: ALL_SCOPES)

    The OAuth scopes for this service. This parameter is ignored if an updater_proc is supplied.

  • client_config (Hash) (defaults to: {})

    A Hash for call options for each method. See Google::Gax#construct_settings for the structure of this data. Falls back to the default config if not specified or the specified config is missing data points.

  • timeout (Numeric) (defaults to: DEFAULT_TIMEOUT)

    The default timeout, in seconds, for calls made through this client.

  • metadata (Hash) (defaults to: nil)

    Default metadata to be sent with each request. This can be overridden on a per call basis.

  • service_address (String) (defaults to: nil)

    Override for the service hostname, or nil to leave as the default.

  • service_port (Integer) (defaults to: nil)

    Override for the service port, or nil to leave as the default.

  • exception_transformer (Proc) (defaults to: nil)

    An optional proc that intercepts any exceptions raised during an API call to inject custom error handling.



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 195

def initialize \
    credentials: nil,
    scopes: ALL_SCOPES,
    client_config: {},
    timeout: DEFAULT_TIMEOUT,
    metadata: nil,
    service_address: nil,
    service_port: nil,
    exception_transformer: nil,
    lib_name: nil,
    lib_version: ""
  # These require statements are intentionally placed here to initialize
  # the gRPC module only when it's required.
  # See https://github.com/googleapis/toolkit/issues/446
  require "google/gax/grpc"
  require "google/firestore/admin/v1/firestore_admin_services_pb"

  credentials ||= Google::Cloud::Firestore::Admin::V1::Credentials.default

  @operations_client = OperationsClient.new(
    credentials: credentials,
    scopes: scopes,
    client_config: client_config,
    timeout: timeout,
    lib_name: lib_name,
    service_address: service_address,
    service_port: service_port,
    lib_version: lib_version,
    metadata: ,
  )

  if credentials.is_a?(String) || credentials.is_a?(Hash)
    updater_proc = Google::Cloud::Firestore::Admin::V1::Credentials.new(credentials).updater_proc
  end
  if credentials.is_a?(GRPC::Core::Channel)
    channel = credentials
  end
  if credentials.is_a?(GRPC::Core::ChannelCredentials)
    chan_creds = credentials
  end
  if credentials.is_a?(Proc)
    updater_proc = credentials
  end
  if credentials.is_a?(Google::Auth::Credentials)
    updater_proc = credentials.updater_proc
  end

  package_version = Google::Cloud::Firestore::VERSION

  google_api_client = "gl-ruby/#{RUBY_VERSION}"
  google_api_client << " #{lib_name}/#{lib_version}" if lib_name
  google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
  google_api_client << " grpc/#{GRPC::VERSION}"
  google_api_client.freeze

  headers = { :"x-goog-api-client" => google_api_client }
  if credentials.respond_to?(:quota_project_id) && credentials.quota_project_id
    headers[:"x-goog-user-project"] = credentials.quota_project_id
  end
  headers.merge!() unless .nil?
  client_config_file = Pathname.new(__dir__).join(
    "firestore_admin_client_config.json"
  )
  defaults = client_config_file.open do |f|
    Google::Gax.construct_settings(
      "google.firestore.admin.v1.FirestoreAdmin",
      JSON.parse(f.read),
      client_config,
      Google::Gax::Grpc::STATUS_CODE_NAMES,
      timeout,
      page_descriptors: PAGE_DESCRIPTORS,
      errors: Google::Gax::Grpc::API_ERRORS,
      metadata: headers
    )
  end

  # Allow overriding the service path/port in subclasses.
  service_path = service_address || self.class::SERVICE_ADDRESS
  port = service_port || self.class::DEFAULT_SERVICE_PORT
  interceptors = self.class::GRPC_INTERCEPTORS
  @firestore_admin_stub = Google::Gax::Grpc.create_stub(
    service_path,
    port,
    chan_creds: chan_creds,
    channel: channel,
    updater_proc: updater_proc,
    scopes: scopes,
    interceptors: interceptors,
    &Google::Firestore::Admin::V1::FirestoreAdmin::Stub.method(:new)
  )

  @delete_index = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:delete_index),
    defaults["delete_index"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'name' => request.name}
    end
  )
  @update_field = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:update_field),
    defaults["update_field"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'field.name' => request.field.name}
    end
  )
  @create_index = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:create_index),
    defaults["create_index"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'parent' => request.parent}
    end
  )
  @list_indexes = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:list_indexes),
    defaults["list_indexes"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'parent' => request.parent}
    end
  )
  @get_index = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:get_index),
    defaults["get_index"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'name' => request.name}
    end
  )
  @get_field = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:get_field),
    defaults["get_field"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'name' => request.name}
    end
  )
  @list_fields = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:list_fields),
    defaults["list_fields"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'parent' => request.parent}
    end
  )
  @export_documents = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:export_documents),
    defaults["export_documents"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'name' => request.name}
    end
  )
  @import_documents = Google::Gax.create_api_call(
    @firestore_admin_stub.method(:import_documents),
    defaults["import_documents"],
    exception_transformer: exception_transformer,
    params_extractor: proc do |request|
      {'name' => request.name}
    end
  )
end

Class Method Details

.collection_group_path(project, database, collection) ⇒ String

Returns a fully-qualified collection_group resource name string.

Parameters:

  • project (String)
  • database (String)
  • collection (String)

Returns:

  • (String)


113
114
115
116
117
118
119
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 113

def self.collection_group_path project, database, collection
  COLLECTION_GROUP_PATH_TEMPLATE.render(
    :"project" => project,
    :"database" => database,
    :"collection" => collection
  )
end

.database_path(project, database) ⇒ String

Returns a fully-qualified database resource name string.

Parameters:

  • project (String)
  • database (String)

Returns:

  • (String)


125
126
127
128
129
130
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 125

def self.database_path project, database
  DATABASE_PATH_TEMPLATE.render(
    :"project" => project,
    :"database" => database
  )
end

.field_path(project, database, collection, field) ⇒ String

Returns a fully-qualified field resource name string.

Parameters:

  • project (String)
  • database (String)
  • collection (String)
  • field (String)

Returns:

  • (String)


138
139
140
141
142
143
144
145
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 138

def self.field_path project, database, collection, field
  FIELD_PATH_TEMPLATE.render(
    :"project" => project,
    :"database" => database,
    :"collection" => collection,
    :"field" => field
  )
end

.index_path(project, database, collection, index) ⇒ String

Returns a fully-qualified index resource name string.

Parameters:

  • project (String)
  • database (String)
  • collection (String)
  • index (String)

Returns:

  • (String)


153
154
155
156
157
158
159
160
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 153

def self.index_path project, database, collection, index
  INDEX_PATH_TEMPLATE.render(
    :"project" => project,
    :"database" => database,
    :"collection" => collection,
    :"index" => index
  )
end

Instance Method Details

#create_index(parent, index, options: nil) ⇒ Google::Gax::Operation

Creates a composite index. This returns a Longrunning::Operation which may be used to track the status of the creation. The metadata for the operation will be the type IndexOperationMetadata.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")

# TODO: Initialize `index`:
index = {}

# Register a callback during the method call.
operation = firestore_admin_client.create_index(formatted_parent, index) do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Or use the return value to register a callback.
operation.on_done do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Manually reload the operation.
operation.reload!

# Or block until the operation completes, triggering callbacks on
# completion.
operation.wait_until_done!

Parameters:

  • parent (String)

    Required. A parent name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}

  • index (Google::Firestore::Admin::V1::Index | Hash)

    Required. The composite index to create. A hash of the same form as Google::Firestore::Admin::V1::Index can also be provided.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Returns:

  • (Google::Gax::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 528

def create_index \
    parent,
    index,
    options: nil
  req = {
    parent: parent,
    index: index
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::CreateIndexRequest)
  operation = Google::Gax::Operation.new(
    @create_index.call(req, options),
    @operations_client,
    Google::Firestore::Admin::V1::Index,
    Google::Firestore::Admin::V1::IndexOperationMetadata,
    call_options: options
  )
  operation.on_done { |operation| yield(operation) } if block_given?
  operation
end

#delete_index(name, options: nil) {|result, operation| ... } ⇒ Object

Deletes a composite index.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[INDEX]")
firestore_admin_client.delete_index(formatted_name)

Parameters:

  • name (String)

    Required. A name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

  • result

    []

  • operation (GRPC::ActiveCall::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



381
382
383
384
385
386
387
388
389
390
391
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 381

def delete_index \
    name,
    options: nil,
    &block
  req = {
    name: name
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::DeleteIndexRequest)
  @delete_index.call(req, options, &block)
  nil
end

#export_documents(name, collection_ids: nil, output_uri_prefix: nil, options: nil) ⇒ Google::Gax::Operation

Exports a copy of all or a subset of documents from Google Cloud Firestore to another storage system, such as Google Cloud Storage. Recent updates to documents may not be reflected in the export. The export occurs in the background and its progress can be monitored and managed via the Operation resource that is created. The output of an export may only be used once the associated operation is done. If an export operation is cancelled before completion it may leave partial data behind in Google Cloud Storage.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")

# Register a callback during the method call.
operation = firestore_admin_client.export_documents(formatted_name) do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Or use the return value to register a callback.
operation.on_done do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Manually reload the operation.
operation.reload!

# Or block until the operation completes, triggering callbacks on
# completion.
operation.wait_until_done!

Parameters:

  • name (String)

    Required. Database to export. Should be of the form: projects/{project_id}/databases/{database_id}.

  • collection_ids (Array<String>) (defaults to: nil)

    Which collection ids to export. Unspecified means all collections.

  • output_uri_prefix (String) (defaults to: nil)

    The output URI. Currently only supports Google Cloud Storage URIs of the form: gs://BUCKET_NAME[/NAMESPACE_PATH], where BUCKET_NAME is the name of the Google Cloud Storage bucket and NAMESPACE_PATH is an optional Google Cloud Storage namespace path. When choosing a name, be sure to consider Google Cloud Storage naming guidelines: https://cloud.google.com/storage/docs/naming. If the URI is a bucket (without a namespace path), a prefix will be generated based on the start time.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Returns:

  • (Google::Gax::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 798

def export_documents \
    name,
    collection_ids: nil,
    output_uri_prefix: nil,
    options: nil
  req = {
    name: name,
    collection_ids: collection_ids,
    output_uri_prefix: output_uri_prefix
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ExportDocumentsRequest)
  operation = Google::Gax::Operation.new(
    @export_documents.call(req, options),
    @operations_client,
    Google::Firestore::Admin::V1::ExportDocumentsResponse,
    Google::Firestore::Admin::V1::ExportDocumentsMetadata,
    call_options: options
  )
  operation.on_done { |operation| yield(operation) } if block_given?
  operation
end

#get_field(name, options: nil) {|result, operation| ... } ⇒ Google::Firestore::Admin::V1::Field

Gets the metadata and configuration for a Field.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.field_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[FIELD]")
response = firestore_admin_client.get_field(formatted_name)

Parameters:

  • name (String)

    Required. A name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_id}

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

Returns:

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



658
659
660
661
662
663
664
665
666
667
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 658

def get_field \
    name,
    options: nil,
    &block
  req = {
    name: name
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::GetFieldRequest)
  @get_field.call(req, options, &block)
end

#get_index(name, options: nil) {|result, operation| ... } ⇒ Google::Firestore::Admin::V1::Index

Gets a composite index.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.index_path("[PROJECT]", "[DATABASE]", "[COLLECTION]", "[INDEX]")
response = firestore_admin_client.get_index(formatted_name)

Parameters:

  • name (String)

    Required. A name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

Returns:

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



627
628
629
630
631
632
633
634
635
636
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 627

def get_index \
    name,
    options: nil,
    &block
  req = {
    name: name
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::GetIndexRequest)
  @get_index.call(req, options, &block)
end

#import_documents(name, collection_ids: nil, input_uri_prefix: nil, options: nil) ⇒ Google::Gax::Operation

Imports documents into Google Cloud Firestore. Existing documents with the same name are overwritten. The import occurs in the background and its progress can be monitored and managed via the Operation resource that is created. If an ImportDocuments operation is cancelled, it is possible that a subset of the data has already been imported to Cloud Firestore.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_name = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.database_path("[PROJECT]", "[DATABASE]")

# Register a callback during the method call.
operation = firestore_admin_client.import_documents(formatted_name) do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Or use the return value to register a callback.
operation.on_done do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Manually reload the operation.
operation.reload!

# Or block until the operation completes, triggering callbacks on
# completion.
operation.wait_until_done!

Parameters:

  • name (String)

    Required. Database to import into. Should be of the form: projects/{project_id}/databases/{database_id}.

  • collection_ids (Array<String>) (defaults to: nil)

    Which collection ids to import. Unspecified means all collections included in the import.

  • input_uri_prefix (String) (defaults to: nil)

    Location of the exported files. This must match the output_uri_prefix of an ExportDocumentsResponse from an export that has completed successfully. See: Firestore::Admin::V1::ExportDocumentsResponse#output_uri_prefix.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Returns:

  • (Google::Gax::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 876

def import_documents \
    name,
    collection_ids: nil,
    input_uri_prefix: nil,
    options: nil
  req = {
    name: name,
    collection_ids: collection_ids,
    input_uri_prefix: input_uri_prefix
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ImportDocumentsRequest)
  operation = Google::Gax::Operation.new(
    @import_documents.call(req, options),
    @operations_client,
    Google::Protobuf::Empty,
    Google::Firestore::Admin::V1::ImportDocumentsMetadata,
    call_options: options
  )
  operation.on_done { |operation| yield(operation) } if block_given?
  operation
end

#list_fields(parent, filter: nil, page_size: nil, options: nil) {|result, operation| ... } ⇒ Google::Gax::PagedEnumerable<Google::Firestore::Admin::V1::Field>

Lists the field configuration and metadata for this database.

Currently, FirestoreAdmin::ListFields only supports listing fields that have been explicitly overridden. To issue this query, call FirestoreAdmin::ListFields with the filter set to indexConfig.usesAncestorConfig:false.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")

# Iterate over all results.
firestore_admin_client.list_fields(formatted_parent).each do |element|
  # Process element.
end

# Or iterate over results one page at a time.
firestore_admin_client.list_fields(formatted_parent).each_page do |page|
  # Process each page at a time.
  page.each do |element|
    # Process element.
  end
end

Parameters:

  • parent (String)

    Required. A parent name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}

  • filter (String) (defaults to: nil)

    The filter to apply to list results. Currently, FirestoreAdmin::ListFields only supports listing fields that have been explicitly overridden. To issue this query, call FirestoreAdmin::ListFields with the filter set to indexConfig.usesAncestorConfig:false.

  • page_size (Integer) (defaults to: nil)

    The maximum number of resources contained in the underlying API response. If page streaming is performed per-resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

Returns:

  • (Google::Gax::PagedEnumerable<Google::Firestore::Admin::V1::Field>)

    An enumerable of Google::Firestore::Admin::V1::Field instances. See Google::Gax::PagedEnumerable documentation for other operations such as per-page iteration or access to the response object.

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



722
723
724
725
726
727
728
729
730
731
732
733
734
735
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 722

def list_fields \
    parent,
    filter: nil,
    page_size: nil,
    options: nil,
    &block
  req = {
    parent: parent,
    filter: filter,
    page_size: page_size
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ListFieldsRequest)
  @list_fields.call(req, options, &block)
end

#list_indexes(parent, filter: nil, page_size: nil, options: nil) {|result, operation| ... } ⇒ Google::Gax::PagedEnumerable<Google::Firestore::Admin::V1::Index>

Lists composite indexes.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)
formatted_parent = Google::Cloud::Firestore::Admin::V1::FirestoreAdminClient.collection_group_path("[PROJECT]", "[DATABASE]", "[COLLECTION]")

# Iterate over all results.
firestore_admin_client.list_indexes(formatted_parent).each do |element|
  # Process element.
end

# Or iterate over results one page at a time.
firestore_admin_client.list_indexes(formatted_parent).each_page do |page|
  # Process each page at a time.
  page.each do |element|
    # Process element.
  end
end

Parameters:

  • parent (String)

    Required. A parent name of the form projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}

  • filter (String) (defaults to: nil)

    The filter to apply to list results.

  • page_size (Integer) (defaults to: nil)

    The maximum number of resources contained in the underlying API response. If page streaming is performed per-resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Yields:

  • (result, operation)

    Access the result along with the RPC operation

Yield Parameters:

Returns:

  • (Google::Gax::PagedEnumerable<Google::Firestore::Admin::V1::Index>)

    An enumerable of Google::Firestore::Admin::V1::Index instances. See Google::Gax::PagedEnumerable documentation for other operations such as per-page iteration or access to the response object.

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



592
593
594
595
596
597
598
599
600
601
602
603
604
605
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 592

def list_indexes \
    parent,
    filter: nil,
    page_size: nil,
    options: nil,
    &block
  req = {
    parent: parent,
    filter: filter,
    page_size: page_size
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::ListIndexesRequest)
  @list_indexes.call(req, options, &block)
end

#update_field(field, update_mask: nil, options: nil) ⇒ Google::Gax::Operation

Updates a field configuration. Currently, field updates apply only to single field index configuration. However, calls to FirestoreAdmin::UpdateField should provide a field mask to avoid changing any configuration that the caller isn't aware of. The field mask should be specified as: { paths: "index_config" }.

This call returns a Longrunning::Operation which may be used to track the status of the field update. The metadata for the operation will be the type FieldOperationMetadata.

To configure the default field settings for the database, use the special Field with resource name: projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/*.

Examples:

require "google/cloud/firestore/admin"

firestore_admin_client = Google::Cloud::Firestore::Admin.new(version: :v1)

# TODO: Initialize `field`:
field = {}

# Register a callback during the method call.
operation = firestore_admin_client.update_field(field) do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Or use the return value to register a callback.
operation.on_done do |op|
  raise op.results.message if op.error?
  op_results = op.results
  # Process the results.

   = op.
  # Process the metadata.
end

# Manually reload the operation.
operation.reload!

# Or block until the operation completes, triggering callbacks on
# completion.
operation.wait_until_done!

Parameters:

  • field (Google::Firestore::Admin::V1::Field | Hash)

    Required. The field to be updated. A hash of the same form as Google::Firestore::Admin::V1::Field can also be provided.

  • update_mask (Google::Protobuf::FieldMask | Hash) (defaults to: nil)

    A mask, relative to the field. If specified, only configuration specified by this field_mask will be updated in the field. A hash of the same form as Google::Protobuf::FieldMask can also be provided.

  • options (Google::Gax::CallOptions) (defaults to: nil)

    Overrides the default settings for this call, e.g, timeout, retries, etc.

Returns:

  • (Google::Gax::Operation)

Raises:

  • (Google::Gax::GaxError)

    if the RPC is aborted.



456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
# File 'lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb', line 456

def update_field \
    field,
    update_mask: nil,
    options: nil
  req = {
    field: field,
    update_mask: update_mask
  }.delete_if { |_, v| v.nil? }
  req = Google::Gax::to_proto(req, Google::Firestore::Admin::V1::UpdateFieldRequest)
  operation = Google::Gax::Operation.new(
    @update_field.call(req, options),
    @operations_client,
    Google::Firestore::Admin::V1::Field,
    Google::Firestore::Admin::V1::FieldOperationMetadata,
    call_options: options
  )
  operation.on_done { |operation| yield(operation) } if block_given?
  operation
end