/// Cloud Firestore indexes enable simple and complex queries against /// documents in a database. #[derive(Clone, PartialEq, ::prost::Message)] pub struct Index { /// Output only. A server defined name for this index. /// The form of this name for composite indexes will be: /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}` /// For single field indexes, this field will be empty. #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, /// Indexes with a collection query scope specified allow queries /// against a collection that is the child of a specific document, specified at /// query time, and that has the same collection id. /// /// Indexes with a collection group query scope specified allow queries against /// all collections descended from a specific document, specified at query /// time, and that have the same collection id as this index. #[prost(enumeration = "index::QueryScope", tag = "2")] pub query_scope: i32, /// The fields supported by this index. /// /// For composite indexes, this is always 2 or more fields. /// The last field entry is always for the field path `__name__`. If, on /// creation, `__name__` was not specified as the last field, it will be added /// automatically with the same direction as that of the last field defined. If /// the final field in a composite index is not directional, the `__name__` /// will be ordered ASCENDING (unless explicitly specified). /// /// For single field indexes, this will always be exactly one entry with a /// field path equal to the field path of the associated field. #[prost(message, repeated, tag = "3")] pub fields: ::prost::alloc::vec::Vec, /// Output only. The serving state of the index. #[prost(enumeration = "index::State", tag = "4")] pub state: i32, } /// Nested message and enum types in `Index`. pub mod index { /// A field in an index. /// The field_path describes which field is indexed, the value_mode describes /// how the field value is indexed. #[derive(Clone, PartialEq, ::prost::Message)] pub struct IndexField { /// Can be __name__. /// For single field indexes, this must match the name of the field or may /// be omitted. #[prost(string, tag = "1")] pub field_path: ::prost::alloc::string::String, /// How the field value is indexed. #[prost(oneof = "index_field::ValueMode", tags = "2, 3")] pub value_mode: ::core::option::Option, } /// Nested message and enum types in `IndexField`. pub mod index_field { /// The supported orderings. #[derive( Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration, )] #[repr(i32)] pub enum Order { /// The ordering is unspecified. Not a valid option. Unspecified = 0, /// The field is ordered by ascending field value. Ascending = 1, /// The field is ordered by descending field value. Descending = 2, } /// The supported array value configurations. #[derive( Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration, )] #[repr(i32)] pub enum ArrayConfig { /// The index does not support additional array queries. Unspecified = 0, /// The index supports array containment queries. Contains = 1, } /// How the field value is indexed. #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum ValueMode { /// Indicates that this field supports ordering by the specified order or /// comparing using =, <, <=, >, >=. #[prost(enumeration = "Order", tag = "2")] Order(i32), /// Indicates that this field supports operations on `array_value`s. #[prost(enumeration = "ArrayConfig", tag = "3")] ArrayConfig(i32), } } /// Query Scope defines the scope at which a query is run. This is specified on /// a StructuredQuery's `from` field. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum QueryScope { /// The query scope is unspecified. Not a valid option. Unspecified = 0, /// Indexes with a collection query scope specified allow queries /// against a collection that is the child of a specific document, specified /// at query time, and that has the collection id specified by the index. Collection = 1, /// Indexes with a collection group query scope specified allow queries /// against all collections that has the collection id specified by the /// index. CollectionGroup = 2, } /// The state of an index. During index creation, an index will be in the /// `CREATING` state. If the index is created successfully, it will transition /// to the `READY` state. If the index creation encounters a problem, the index /// will transition to the `NEEDS_REPAIR` state. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum State { /// The state is unspecified. Unspecified = 0, /// The index is being created. /// There is an active long-running operation for the index. /// The index is updated when writing a document. /// Some index data may exist. Creating = 1, /// The index is ready to be used. /// The index is updated when writing a document. /// The index is fully populated from all stored documents it applies to. Ready = 2, /// The index was being created, but something went wrong. /// There is no active long-running operation for the index, /// and the most recently finished long-running operation failed. /// The index is not updated when writing a document. /// Some index data may exist. /// Use the google.longrunning.Operations API to determine why the operation /// that last attempted to create this index failed, then re-create the /// index. NeedsRepair = 3, } } /// Represents a single field in the database. /// /// Fields are grouped by their "Collection Group", which represent all /// collections in the database with the same id. #[derive(Clone, PartialEq, ::prost::Message)] pub struct Field { /// A field name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}` /// /// A field path may be a simple field name, e.g. `address` or a path to fields /// within map_value , e.g. `address.city`, /// or a special field path. The only valid special field is `*`, which /// represents any field. /// /// Field paths may be quoted using ` (backtick). The only character that needs /// to be escaped within a quoted field path is the backtick character itself, /// escaped using a backslash. Special characters in field paths that /// must be quoted include: `*`, `.`, /// ``` (backtick), `[`, `]`, as well as any ascii symbolic characters. /// /// Examples: /// (Note: Comments here are written in markdown syntax, so there is an /// additional layer of backticks to represent a code block) /// `\`address.city\`` represents a field named `address.city`, not the map key /// `city` in the field `address`. /// `\`*\`` represents a field named `*`, not any field. /// /// A special `Field` contains the default indexing settings for all fields. /// This field's resource name is: /// `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/*` /// Indexes defined on this `Field` will be applied to all fields which do not /// have their own `Field` index configuration. #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, /// The index configuration for this field. If unset, field indexing will /// revert to the configuration defined by the `ancestor_field`. To /// explicitly remove all indexes for this field, specify an index config /// with an empty list of indexes. #[prost(message, optional, tag = "2")] pub index_config: ::core::option::Option, } /// Nested message and enum types in `Field`. pub mod field { /// The index configuration for this field. #[derive(Clone, PartialEq, ::prost::Message)] pub struct IndexConfig { /// The indexes supported for this field. #[prost(message, repeated, tag = "1")] pub indexes: ::prost::alloc::vec::Vec, /// Output only. When true, the `Field`'s index configuration is set from the /// configuration specified by the `ancestor_field`. /// When false, the `Field`'s index configuration is defined explicitly. #[prost(bool, tag = "2")] pub uses_ancestor_config: bool, /// Output only. Specifies the resource name of the `Field` from which this field's /// index configuration is set (when `uses_ancestor_config` is true), /// or from which it *would* be set if this field had no index configuration /// (when `uses_ancestor_config` is false). #[prost(string, tag = "3")] pub ancestor_field: ::prost::alloc::string::String, /// Output only /// When true, the `Field`'s index configuration is in the process of being /// reverted. Once complete, the index config will transition to the same /// state as the field specified by `ancestor_field`, at which point /// `uses_ancestor_config` will be `true` and `reverting` will be `false`. #[prost(bool, tag = "4")] pub reverting: bool, } } /// The request for \[FirestoreAdmin.CreateIndex][google.firestore.admin.v1.FirestoreAdmin.CreateIndex\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct CreateIndexRequest { /// Required. A parent name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}` #[prost(string, tag = "1")] pub parent: ::prost::alloc::string::String, /// Required. The composite index to create. #[prost(message, optional, tag = "2")] pub index: ::core::option::Option, } /// The request for \[FirestoreAdmin.ListIndexes][google.firestore.admin.v1.FirestoreAdmin.ListIndexes\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListIndexesRequest { /// Required. A parent name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}` #[prost(string, tag = "1")] pub parent: ::prost::alloc::string::String, /// The filter to apply to list results. #[prost(string, tag = "2")] pub filter: ::prost::alloc::string::String, /// The number of results to return. #[prost(int32, tag = "3")] pub page_size: i32, /// A page token, returned from a previous call to /// \[FirestoreAdmin.ListIndexes][google.firestore.admin.v1.FirestoreAdmin.ListIndexes\], that may be used to get the next /// page of results. #[prost(string, tag = "4")] pub page_token: ::prost::alloc::string::String, } /// The response for \[FirestoreAdmin.ListIndexes][google.firestore.admin.v1.FirestoreAdmin.ListIndexes\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListIndexesResponse { /// The requested indexes. #[prost(message, repeated, tag = "1")] pub indexes: ::prost::alloc::vec::Vec, /// A page token that may be used to request another page of results. If blank, /// this is the last page. #[prost(string, tag = "2")] pub next_page_token: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.GetIndex][google.firestore.admin.v1.FirestoreAdmin.GetIndex\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetIndexRequest { /// Required. A name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}` #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.DeleteIndex][google.firestore.admin.v1.FirestoreAdmin.DeleteIndex\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct DeleteIndexRequest { /// Required. A name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}` #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.UpdateField][google.firestore.admin.v1.FirestoreAdmin.UpdateField\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct UpdateFieldRequest { /// Required. The field to be updated. #[prost(message, optional, tag = "1")] pub field: ::core::option::Option, /// A mask, relative to the field. If specified, only configuration specified /// by this field_mask will be updated in the field. #[prost(message, optional, tag = "2")] pub update_mask: ::core::option::Option<::prost_types::FieldMask>, } /// The request for \[FirestoreAdmin.GetField][google.firestore.admin.v1.FirestoreAdmin.GetField\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetFieldRequest { /// Required. A name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_id}` #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListFieldsRequest { /// Required. A parent name of the form /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}` #[prost(string, tag = "1")] pub parent: ::prost::alloc::string::String, /// The filter to apply to list results. Currently, /// \[FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields\] only supports listing fields /// that have been explicitly overridden. To issue this query, call /// \[FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields\] with the filter set to /// `indexConfig.usesAncestorConfig:false`. #[prost(string, tag = "2")] pub filter: ::prost::alloc::string::String, /// The number of results to return. #[prost(int32, tag = "3")] pub page_size: i32, /// A page token, returned from a previous call to /// \[FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields\], that may be used to get the next /// page of results. #[prost(string, tag = "4")] pub page_token: ::prost::alloc::string::String, } /// The response for \[FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListFieldsResponse { /// The requested fields. #[prost(message, repeated, tag = "1")] pub fields: ::prost::alloc::vec::Vec, /// A page token that may be used to request another page of results. If blank, /// this is the last page. #[prost(string, tag = "2")] pub next_page_token: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.ExportDocuments][google.firestore.admin.v1.FirestoreAdmin.ExportDocuments\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ExportDocumentsRequest { /// Required. Database to export. Should be of the form: /// `projects/{project_id}/databases/{database_id}`. #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, /// Which collection ids to export. Unspecified means all collections. #[prost(string, repeated, tag = "2")] pub collection_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// 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: /// If the URI is a bucket (without a namespace path), a prefix will be /// generated based on the start time. #[prost(string, tag = "3")] pub output_uri_prefix: ::prost::alloc::string::String, } /// The request for \[FirestoreAdmin.ImportDocuments][google.firestore.admin.v1.FirestoreAdmin.ImportDocuments\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ImportDocumentsRequest { /// Required. Database to import into. Should be of the form: /// `projects/{project_id}/databases/{database_id}`. #[prost(string, tag = "1")] pub name: ::prost::alloc::string::String, /// Which collection ids to import. Unspecified means all collections included /// in the import. #[prost(string, repeated, tag = "2")] pub collection_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// Location of the exported files. /// This must match the output_uri_prefix of an ExportDocumentsResponse from /// an export that has completed successfully. /// See: /// \[google.firestore.admin.v1.ExportDocumentsResponse.output_uri_prefix][google.firestore.admin.v1.ExportDocumentsResponse.output_uri_prefix\]. #[prost(string, tag = "3")] pub input_uri_prefix: ::prost::alloc::string::String, } #[doc = r" Generated client implementations."] pub mod firestore_admin_client { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; #[doc = " Operations are created by service `FirestoreAdmin`, but are accessed via"] #[doc = " service `google.longrunning.Operations`."] #[derive(Debug, Clone)] pub struct FirestoreAdminClient { inner: tonic::client::Grpc, } impl FirestoreAdminClient where T: tonic::client::GrpcService, T::ResponseBody: Body + Send + 'static, T::Error: Into, ::Error: Into + Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); Self { inner } } pub fn with_interceptor( inner: T, interceptor: F, ) -> FirestoreAdminClient> where F: tonic::service::Interceptor, T: tonic::codegen::Service< http::Request, Response = http::Response< >::ResponseBody, >, >, >>::Error: Into + Send + Sync, { FirestoreAdminClient::new(InterceptedService::new(inner, interceptor)) } #[doc = r" Compress requests with `gzip`."] #[doc = r""] #[doc = r" This requires the server to support it otherwise it might respond with an"] #[doc = r" error."] pub fn send_gzip(mut self) -> Self { self.inner = self.inner.send_gzip(); self } #[doc = r" Enable decompressing responses with `gzip`."] pub fn accept_gzip(mut self) -> Self { self.inner = self.inner.accept_gzip(); self } #[doc = " Creates a composite index. This returns a [google.longrunning.Operation][google.longrunning.Operation]"] #[doc = " which may be used to track the status of the creation. The metadata for"] #[doc = " the operation will be the type [IndexOperationMetadata][google.firestore.admin.v1.IndexOperationMetadata]."] pub async fn create_index( &mut self, request: impl tonic::IntoRequest, ) -> Result< tonic::Response, tonic::Status, > { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/CreateIndex", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Lists composite indexes."] pub async fn list_indexes( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/ListIndexes", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Gets a composite index."] pub async fn get_index( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/GetIndex", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Deletes a composite index."] pub async fn delete_index( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/DeleteIndex", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Gets the metadata and configuration for a Field."] pub async fn get_field( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/GetField", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Updates a field configuration. Currently, field updates apply only to"] #[doc = " single field index configuration. However, calls to"] #[doc = " [FirestoreAdmin.UpdateField][google.firestore.admin.v1.FirestoreAdmin.UpdateField] should provide a field mask to avoid"] #[doc = " changing any configuration that the caller isn't aware of. The field mask"] #[doc = " should be specified as: `{ paths: \"index_config\" }`."] #[doc = ""] #[doc = " This call returns a [google.longrunning.Operation][google.longrunning.Operation] which may be used to"] #[doc = " track the status of the field update. The metadata for"] #[doc = " the operation will be the type [FieldOperationMetadata][google.firestore.admin.v1.FieldOperationMetadata]."] #[doc = ""] #[doc = " To configure the default field settings for the database, use"] #[doc = " the special `Field` with resource name:"] #[doc = " `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/*`."] pub async fn update_field( &mut self, request: impl tonic::IntoRequest, ) -> Result< tonic::Response, tonic::Status, > { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/UpdateField", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Lists the field configuration and metadata for this database."] #[doc = ""] #[doc = " Currently, [FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields] only supports listing fields"] #[doc = " that have been explicitly overridden. To issue this query, call"] #[doc = " [FirestoreAdmin.ListFields][google.firestore.admin.v1.FirestoreAdmin.ListFields] with the filter set to"] #[doc = " `indexConfig.usesAncestorConfig:false`."] pub async fn list_fields( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/ListFields", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Exports a copy of all or a subset of documents from Google Cloud Firestore"] #[doc = " to another storage system, such as Google Cloud Storage. Recent updates to"] #[doc = " documents may not be reflected in the export. The export occurs in the"] #[doc = " background and its progress can be monitored and managed via the"] #[doc = " Operation resource that is created. The output of an export may only be"] #[doc = " used once the associated operation is done. If an export operation is"] #[doc = " cancelled before completion it may leave partial data behind in Google"] #[doc = " Cloud Storage."] pub async fn export_documents( &mut self, request: impl tonic::IntoRequest, ) -> Result< tonic::Response, tonic::Status, > { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/ExportDocuments", ); self.inner.unary(request.into_request(), path, codec).await } #[doc = " Imports documents into Google Cloud Firestore. Existing documents with the"] #[doc = " same name are overwritten. The import occurs in the background and its"] #[doc = " progress can be monitored and managed via the Operation resource that is"] #[doc = " created. If an ImportDocuments operation is cancelled, it is possible"] #[doc = " that a subset of the data has already been imported to Cloud Firestore."] pub async fn import_documents( &mut self, request: impl tonic::IntoRequest, ) -> Result< tonic::Response, tonic::Status, > { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/google.firestore.admin.v1.FirestoreAdmin/ImportDocuments", ); self.inner.unary(request.into_request(), path, codec).await } } } /// The metadata message for \[google.cloud.location.Location.metadata][google.cloud.location.Location.metadata\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct LocationMetadata {} /// Metadata for \[google.longrunning.Operation][google.longrunning.Operation\] results from /// \[FirestoreAdmin.CreateIndex][google.firestore.admin.v1.FirestoreAdmin.CreateIndex\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct IndexOperationMetadata { /// The time this operation started. #[prost(message, optional, tag = "1")] pub start_time: ::core::option::Option<::prost_types::Timestamp>, /// The time this operation completed. Will be unset if operation still in /// progress. #[prost(message, optional, tag = "2")] pub end_time: ::core::option::Option<::prost_types::Timestamp>, /// The index resource that this operation is acting on. For example: /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}` #[prost(string, tag = "3")] pub index: ::prost::alloc::string::String, /// The state of the operation. #[prost(enumeration = "OperationState", tag = "4")] pub state: i32, /// The progress, in documents, of this operation. #[prost(message, optional, tag = "5")] pub progress_documents: ::core::option::Option, /// The progress, in bytes, of this operation. #[prost(message, optional, tag = "6")] pub progress_bytes: ::core::option::Option, } /// Metadata for \[google.longrunning.Operation][google.longrunning.Operation\] results from /// \[FirestoreAdmin.UpdateField][google.firestore.admin.v1.FirestoreAdmin.UpdateField\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct FieldOperationMetadata { /// The time this operation started. #[prost(message, optional, tag = "1")] pub start_time: ::core::option::Option<::prost_types::Timestamp>, /// The time this operation completed. Will be unset if operation still in /// progress. #[prost(message, optional, tag = "2")] pub end_time: ::core::option::Option<::prost_types::Timestamp>, /// The field resource that this operation is acting on. For example: /// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}` #[prost(string, tag = "3")] pub field: ::prost::alloc::string::String, /// A list of \[IndexConfigDelta][google.firestore.admin.v1.FieldOperationMetadata.IndexConfigDelta\], which describe the intent of this /// operation. #[prost(message, repeated, tag = "4")] pub index_config_deltas: ::prost::alloc::vec::Vec, /// The state of the operation. #[prost(enumeration = "OperationState", tag = "5")] pub state: i32, /// The progress, in documents, of this operation. #[prost(message, optional, tag = "6")] pub progress_documents: ::core::option::Option, /// The progress, in bytes, of this operation. #[prost(message, optional, tag = "7")] pub progress_bytes: ::core::option::Option, } /// Nested message and enum types in `FieldOperationMetadata`. pub mod field_operation_metadata { /// Information about an index configuration change. #[derive(Clone, PartialEq, ::prost::Message)] pub struct IndexConfigDelta { /// Specifies how the index is changing. #[prost(enumeration = "index_config_delta::ChangeType", tag = "1")] pub change_type: i32, /// The index being changed. #[prost(message, optional, tag = "2")] pub index: ::core::option::Option, } /// Nested message and enum types in `IndexConfigDelta`. pub mod index_config_delta { /// Specifies how the index is changing. #[derive( Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration, )] #[repr(i32)] pub enum ChangeType { /// The type of change is not specified or known. Unspecified = 0, /// The single field index is being added. Add = 1, /// The single field index is being removed. Remove = 2, } } } /// Metadata for \[google.longrunning.Operation][google.longrunning.Operation\] results from /// \[FirestoreAdmin.ExportDocuments][google.firestore.admin.v1.FirestoreAdmin.ExportDocuments\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ExportDocumentsMetadata { /// The time this operation started. #[prost(message, optional, tag = "1")] pub start_time: ::core::option::Option<::prost_types::Timestamp>, /// The time this operation completed. Will be unset if operation still in /// progress. #[prost(message, optional, tag = "2")] pub end_time: ::core::option::Option<::prost_types::Timestamp>, /// The state of the export operation. #[prost(enumeration = "OperationState", tag = "3")] pub operation_state: i32, /// The progress, in documents, of this operation. #[prost(message, optional, tag = "4")] pub progress_documents: ::core::option::Option, /// The progress, in bytes, of this operation. #[prost(message, optional, tag = "5")] pub progress_bytes: ::core::option::Option, /// Which collection ids are being exported. #[prost(string, repeated, tag = "6")] pub collection_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// Where the entities are being exported to. #[prost(string, tag = "7")] pub output_uri_prefix: ::prost::alloc::string::String, } /// Metadata for \[google.longrunning.Operation][google.longrunning.Operation\] results from /// \[FirestoreAdmin.ImportDocuments][google.firestore.admin.v1.FirestoreAdmin.ImportDocuments\]. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ImportDocumentsMetadata { /// The time this operation started. #[prost(message, optional, tag = "1")] pub start_time: ::core::option::Option<::prost_types::Timestamp>, /// The time this operation completed. Will be unset if operation still in /// progress. #[prost(message, optional, tag = "2")] pub end_time: ::core::option::Option<::prost_types::Timestamp>, /// The state of the import operation. #[prost(enumeration = "OperationState", tag = "3")] pub operation_state: i32, /// The progress, in documents, of this operation. #[prost(message, optional, tag = "4")] pub progress_documents: ::core::option::Option, /// The progress, in bytes, of this operation. #[prost(message, optional, tag = "5")] pub progress_bytes: ::core::option::Option, /// Which collection ids are being imported. #[prost(string, repeated, tag = "6")] pub collection_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// The location of the documents being imported. #[prost(string, tag = "7")] pub input_uri_prefix: ::prost::alloc::string::String, } /// Returned in the \[google.longrunning.Operation][google.longrunning.Operation\] response field. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ExportDocumentsResponse { /// Location of the output files. This can be used to begin an import /// into Cloud Firestore (this project or another project) after the operation /// completes successfully. #[prost(string, tag = "1")] pub output_uri_prefix: ::prost::alloc::string::String, } /// Describes the progress of the operation. /// Unit of work is generic and must be interpreted based on where \[Progress][google.firestore.admin.v1.Progress\] /// is used. #[derive(Clone, PartialEq, ::prost::Message)] pub struct Progress { /// The amount of work estimated. #[prost(int64, tag = "1")] pub estimated_work: i64, /// The amount of work completed. #[prost(int64, tag = "2")] pub completed_work: i64, } /// Describes the state of the operation. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum OperationState { /// Unspecified. Unspecified = 0, /// Request is being prepared for processing. Initializing = 1, /// Request is actively being processed. Processing = 2, /// Request is in the process of being cancelled after user called /// google.longrunning.Operations.CancelOperation on the operation. Cancelling = 3, /// Request has been processed and is in its finalization stage. Finalizing = 4, /// Request has completed successfully. Successful = 5, /// Request has finished being processed, but encountered an error. Failed = 6, /// Request has finished being cancelled after user called /// google.longrunning.Operations.CancelOperation. Cancelled = 7, }