Added delete option to database storage.
This commit is contained in:
parent
308604a33c
commit
963b5bc68b
1868 changed files with 192402 additions and 13278 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,156 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2020 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Wrappers for protocol buffer enum types."""
|
||||
|
||||
import enum
|
||||
|
||||
|
||||
class NullValue(enum.IntEnum):
|
||||
"""
|
||||
``NullValue`` is a singleton enumeration to represent the null value
|
||||
for the ``Value`` type union.
|
||||
|
||||
The JSON representation for ``NullValue`` is JSON ``null``.
|
||||
|
||||
Attributes:
|
||||
NULL_VALUE (int): Null value.
|
||||
"""
|
||||
|
||||
NULL_VALUE = 0
|
||||
|
||||
|
||||
class DocumentTransform(object):
|
||||
class FieldTransform(object):
|
||||
class ServerValue(enum.IntEnum):
|
||||
"""
|
||||
A value that is calculated by the server.
|
||||
|
||||
Attributes:
|
||||
SERVER_VALUE_UNSPECIFIED (int): Unspecified. This value must not be used.
|
||||
REQUEST_TIME (int): The time at which the server processed the request, with millisecond
|
||||
precision.
|
||||
"""
|
||||
|
||||
SERVER_VALUE_UNSPECIFIED = 0
|
||||
REQUEST_TIME = 1
|
||||
|
||||
|
||||
class StructuredQuery(object):
|
||||
class Direction(enum.IntEnum):
|
||||
"""
|
||||
A sort direction.
|
||||
|
||||
Attributes:
|
||||
DIRECTION_UNSPECIFIED (int): Unspecified.
|
||||
ASCENDING (int): Ascending.
|
||||
DESCENDING (int): Descending.
|
||||
"""
|
||||
|
||||
DIRECTION_UNSPECIFIED = 0
|
||||
ASCENDING = 1
|
||||
DESCENDING = 2
|
||||
|
||||
class CompositeFilter(object):
|
||||
class Operator(enum.IntEnum):
|
||||
"""
|
||||
A composite filter operator.
|
||||
|
||||
Attributes:
|
||||
OPERATOR_UNSPECIFIED (int): Unspecified. This value must not be used.
|
||||
AND (int): The results are required to satisfy each of the combined filters.
|
||||
"""
|
||||
|
||||
OPERATOR_UNSPECIFIED = 0
|
||||
AND = 1
|
||||
|
||||
class FieldFilter(object):
|
||||
class Operator(enum.IntEnum):
|
||||
"""
|
||||
A field filter operator.
|
||||
|
||||
Attributes:
|
||||
OPERATOR_UNSPECIFIED (int): Unspecified. This value must not be used.
|
||||
LESS_THAN (int): Less than. Requires that the field come first in ``order_by``.
|
||||
LESS_THAN_OR_EQUAL (int): Less than or equal. Requires that the field come first in
|
||||
``order_by``.
|
||||
GREATER_THAN (int): Greater than. Requires that the field come first in ``order_by``.
|
||||
GREATER_THAN_OR_EQUAL (int): Greater than or equal. Requires that the field come first in
|
||||
``order_by``.
|
||||
EQUAL (int): Equal.
|
||||
ARRAY_CONTAINS (int): Contains. Requires that the field is an array.
|
||||
IN (int): In. Requires that ``value`` is a non-empty ArrayValue with at most
|
||||
10 values.
|
||||
ARRAY_CONTAINS_ANY (int): Contains any. Requires that the field is an array and ``value`` is a
|
||||
non-empty ArrayValue with at most 10 values.
|
||||
"""
|
||||
|
||||
OPERATOR_UNSPECIFIED = 0
|
||||
LESS_THAN = 1
|
||||
LESS_THAN_OR_EQUAL = 2
|
||||
GREATER_THAN = 3
|
||||
GREATER_THAN_OR_EQUAL = 4
|
||||
EQUAL = 5
|
||||
ARRAY_CONTAINS = 7
|
||||
IN = 8
|
||||
ARRAY_CONTAINS_ANY = 9
|
||||
|
||||
class UnaryFilter(object):
|
||||
class Operator(enum.IntEnum):
|
||||
"""
|
||||
A unary operator.
|
||||
|
||||
Attributes:
|
||||
OPERATOR_UNSPECIFIED (int): Unspecified. This value must not be used.
|
||||
IS_NAN (int): Test if a field is equal to NaN.
|
||||
IS_NULL (int): Test if an expression evaluates to Null.
|
||||
"""
|
||||
|
||||
OPERATOR_UNSPECIFIED = 0
|
||||
IS_NAN = 2
|
||||
IS_NULL = 3
|
||||
|
||||
|
||||
class TargetChange(object):
|
||||
class TargetChangeType(enum.IntEnum):
|
||||
"""
|
||||
The type of change.
|
||||
|
||||
Attributes:
|
||||
NO_CHANGE (int): No change has occurred. Used only to send an updated
|
||||
``resume_token``.
|
||||
ADD (int): The targets have been added.
|
||||
REMOVE (int): The targets have been removed.
|
||||
CURRENT (int): The targets reflect all changes committed before the targets were
|
||||
added to the stream.
|
||||
|
||||
This will be sent after or with a ``read_time`` that is greater than or
|
||||
equal to the time at which the targets were added.
|
||||
|
||||
Listeners can wait for this change if read-after-write semantics are
|
||||
desired.
|
||||
RESET (int): The targets have been reset, and a new initial state for the targets
|
||||
will be returned in subsequent changes.
|
||||
|
||||
After the initial state is complete, ``CURRENT`` will be returned even
|
||||
if the target was previously indicated to be ``CURRENT``.
|
||||
"""
|
||||
|
||||
NO_CHANGE = 0
|
||||
ADD = 1
|
||||
REMOVE = 2
|
||||
CURRENT = 3
|
||||
RESET = 4
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,97 @@
|
|||
config = {
|
||||
"interfaces": {
|
||||
"google.firestore.v1beta1.Firestore": {
|
||||
"retry_codes": {
|
||||
"idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"],
|
||||
"non_idempotent": [],
|
||||
},
|
||||
"retry_params": {
|
||||
"default": {
|
||||
"initial_retry_delay_millis": 100,
|
||||
"retry_delay_multiplier": 1.3,
|
||||
"max_retry_delay_millis": 60000,
|
||||
"initial_rpc_timeout_millis": 20000,
|
||||
"rpc_timeout_multiplier": 1.0,
|
||||
"max_rpc_timeout_millis": 20000,
|
||||
"total_timeout_millis": 600000,
|
||||
},
|
||||
"streaming": {
|
||||
"initial_retry_delay_millis": 100,
|
||||
"retry_delay_multiplier": 1.3,
|
||||
"max_retry_delay_millis": 60000,
|
||||
"initial_rpc_timeout_millis": 300000,
|
||||
"rpc_timeout_multiplier": 1.0,
|
||||
"max_rpc_timeout_millis": 300000,
|
||||
"total_timeout_millis": 600000,
|
||||
},
|
||||
},
|
||||
"methods": {
|
||||
"DeleteDocument": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"BatchGetDocuments": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "streaming",
|
||||
},
|
||||
"BeginTransaction": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"Rollback": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"RunQuery": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "streaming",
|
||||
},
|
||||
"Write": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "non_idempotent",
|
||||
"retry_params_name": "streaming",
|
||||
},
|
||||
"Listen": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "streaming",
|
||||
},
|
||||
"ListCollectionIds": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"GetDocument": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"ListDocuments": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"CreateDocument": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "non_idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"UpdateDocument": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "non_idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
"Commit": {
|
||||
"timeout_millis": 60000,
|
||||
"retry_codes_name": "non_idempotent",
|
||||
"retry_params_name": "default",
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,283 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2020 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
import google.api_core.grpc_helpers
|
||||
|
||||
from google.cloud.firestore_v1beta1.proto import firestore_pb2_grpc
|
||||
|
||||
|
||||
class FirestoreGrpcTransport(object):
|
||||
"""gRPC transport class providing stubs for
|
||||
google.firestore.v1beta1 Firestore API.
|
||||
|
||||
The transport provides access to the raw gRPC stubs,
|
||||
which can be used to take advantage of advanced
|
||||
features of gRPC.
|
||||
"""
|
||||
|
||||
# The scopes needed to make gRPC calls to all of the methods defined
|
||||
# in this service.
|
||||
_OAUTH_SCOPES = (
|
||||
"https://www.googleapis.com/auth/cloud-platform",
|
||||
"https://www.googleapis.com/auth/datastore",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
self, channel=None, credentials=None, address="firestore.googleapis.com:443"
|
||||
):
|
||||
"""Instantiate the transport class.
|
||||
|
||||
Args:
|
||||
channel (grpc.Channel): A ``Channel`` instance through
|
||||
which to make calls. This argument is mutually exclusive
|
||||
with ``credentials``; providing both will raise an exception.
|
||||
credentials (google.auth.credentials.Credentials): The
|
||||
authorization credentials to attach to requests. These
|
||||
credentials identify this application to the service. If none
|
||||
are specified, the client will attempt to ascertain the
|
||||
credentials from the environment.
|
||||
address (str): The address where the service is hosted.
|
||||
"""
|
||||
# If both `channel` and `credentials` are specified, raise an
|
||||
# exception (channels come with credentials baked in already).
|
||||
if channel is not None and credentials is not None:
|
||||
raise ValueError(
|
||||
"The `channel` and `credentials` arguments are mutually " "exclusive.",
|
||||
)
|
||||
|
||||
# Create the channel.
|
||||
if channel is None:
|
||||
channel = self.create_channel(
|
||||
address=address,
|
||||
credentials=credentials,
|
||||
options={
|
||||
"grpc.max_send_message_length": -1,
|
||||
"grpc.max_receive_message_length": -1,
|
||||
}.items(),
|
||||
)
|
||||
|
||||
self._channel = channel
|
||||
|
||||
# gRPC uses objects called "stubs" that are bound to the
|
||||
# channel and provide a basic method for each RPC.
|
||||
self._stubs = {
|
||||
"firestore_stub": firestore_pb2_grpc.FirestoreStub(channel),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def create_channel(
|
||||
cls, address="firestore.googleapis.com:443", credentials=None, **kwargs
|
||||
):
|
||||
"""Create and return a gRPC channel object.
|
||||
|
||||
Args:
|
||||
address (str): The host for the channel to use.
|
||||
credentials (~.Credentials): The
|
||||
authorization credentials to attach to requests. These
|
||||
credentials identify this application to the service. If
|
||||
none are specified, the client will attempt to ascertain
|
||||
the credentials from the environment.
|
||||
kwargs (dict): Keyword arguments, which are passed to the
|
||||
channel creation.
|
||||
|
||||
Returns:
|
||||
grpc.Channel: A gRPC channel object.
|
||||
"""
|
||||
return google.api_core.grpc_helpers.create_channel(
|
||||
address, credentials=credentials, scopes=cls._OAUTH_SCOPES, **kwargs
|
||||
)
|
||||
|
||||
@property
|
||||
def channel(self):
|
||||
"""The gRPC channel used by the transport.
|
||||
|
||||
Returns:
|
||||
grpc.Channel: A gRPC channel object.
|
||||
"""
|
||||
return self._channel
|
||||
|
||||
@property
|
||||
def delete_document(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.delete_document`.
|
||||
|
||||
Deletes a document.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].DeleteDocument
|
||||
|
||||
@property
|
||||
def batch_get_documents(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.batch_get_documents`.
|
||||
|
||||
Gets multiple documents.
|
||||
|
||||
Documents returned by this method are not guaranteed to be returned in the
|
||||
same order that they were requested.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].BatchGetDocuments
|
||||
|
||||
@property
|
||||
def begin_transaction(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.begin_transaction`.
|
||||
|
||||
Starts a new transaction.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].BeginTransaction
|
||||
|
||||
@property
|
||||
def rollback(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.rollback`.
|
||||
|
||||
Rolls back a transaction.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].Rollback
|
||||
|
||||
@property
|
||||
def run_query(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.run_query`.
|
||||
|
||||
Runs a query.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].RunQuery
|
||||
|
||||
@property
|
||||
def write(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.write`.
|
||||
|
||||
Streams batches of document updates and deletes, in order.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].Write
|
||||
|
||||
@property
|
||||
def listen(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.listen`.
|
||||
|
||||
Listens to changes.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].Listen
|
||||
|
||||
@property
|
||||
def list_collection_ids(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.list_collection_ids`.
|
||||
|
||||
Lists all the collection IDs underneath a document.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].ListCollectionIds
|
||||
|
||||
@property
|
||||
def get_document(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.get_document`.
|
||||
|
||||
Gets a single document.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].GetDocument
|
||||
|
||||
@property
|
||||
def list_documents(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.list_documents`.
|
||||
|
||||
Lists documents.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].ListDocuments
|
||||
|
||||
@property
|
||||
def create_document(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.create_document`.
|
||||
|
||||
Creates a new document.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].CreateDocument
|
||||
|
||||
@property
|
||||
def update_document(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.update_document`.
|
||||
|
||||
Updates or inserts a document.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].UpdateDocument
|
||||
|
||||
@property
|
||||
def commit(self):
|
||||
"""Return the gRPC stub for :meth:`FirestoreClient.commit`.
|
||||
|
||||
Commits a transaction, while optionally updating documents.
|
||||
|
||||
Returns:
|
||||
Callable: A callable which accepts the appropriate
|
||||
deserialized request object and returns a
|
||||
deserialized response object.
|
||||
"""
|
||||
return self._stubs["firestore_stub"].Commit
|
Loading…
Add table
Add a link
Reference in a new issue