google-cloud-firestore 0.22.0 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/README.md +8 -8
- data/lib/google-cloud-firestore.rb +1 -1
- data/lib/google/cloud/firestore.rb +46 -0
- data/lib/google/cloud/firestore/batch.rb +1 -1
- data/lib/google/cloud/firestore/client.rb +18 -13
- data/lib/google/cloud/firestore/convert.rb +78 -35
- data/lib/google/cloud/firestore/credentials.rb +2 -12
- data/lib/google/cloud/firestore/document_change.rb +124 -0
- data/lib/google/cloud/firestore/document_listener.rb +125 -0
- data/lib/google/cloud/firestore/document_reference.rb +35 -0
- data/lib/google/cloud/firestore/document_snapshot.rb +91 -9
- data/lib/google/cloud/firestore/field_path.rb +23 -13
- data/lib/google/cloud/firestore/query.rb +513 -69
- data/lib/google/cloud/firestore/query_listener.rb +118 -0
- data/lib/google/cloud/firestore/query_snapshot.rb +121 -0
- data/lib/google/cloud/firestore/service.rb +8 -0
- data/lib/google/cloud/firestore/transaction.rb +2 -2
- data/lib/google/cloud/firestore/v1beta1.rb +62 -37
- data/lib/google/cloud/firestore/v1beta1/credentials.rb +41 -0
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/common.rb +1 -1
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/document.rb +5 -4
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/firestore.rb +1 -12
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/query.rb +4 -1
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/write.rb +37 -8
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/any.rb +1 -1
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/empty.rb +28 -0
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/timestamp.rb +1 -1
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/wrappers.rb +1 -1
- data/lib/google/cloud/firestore/v1beta1/doc/google/rpc/status.rb +1 -1
- data/lib/google/cloud/firestore/v1beta1/firestore_client.rb +124 -56
- data/lib/google/cloud/firestore/v1beta1/firestore_client_config.json +2 -2
- data/lib/google/cloud/firestore/version.rb +1 -1
- data/lib/google/cloud/firestore/watch/enumerator_queue.rb +47 -0
- data/lib/google/cloud/firestore/watch/inventory.rb +280 -0
- data/lib/google/cloud/firestore/watch/listener.rb +298 -0
- data/lib/google/cloud/firestore/watch/order.rb +98 -0
- data/lib/google/firestore/v1beta1/firestore_services_pb.rb +2 -4
- data/lib/google/firestore/v1beta1/query_pb.rb +1 -0
- data/lib/google/firestore/v1beta1/write_pb.rb +2 -0
- metadata +40 -3
- data/lib/google/cloud/firestore/v1beta1/doc/overview.rb +0 -53
@@ -0,0 +1,118 @@
|
|
1
|
+
# Copyright 2018 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google/cloud/firestore/watch/listener"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module Firestore
|
21
|
+
##
|
22
|
+
# # QueryListener
|
23
|
+
#
|
24
|
+
# An ongoing listen operation on a query. This is returned by calling
|
25
|
+
# {Query#listen}.
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# require "google/cloud/firestore"
|
29
|
+
#
|
30
|
+
# firestore = Google::Cloud::Firestore.new
|
31
|
+
#
|
32
|
+
# # Create a query
|
33
|
+
# query = firestore.col(:cities).order(:population, :desc)
|
34
|
+
#
|
35
|
+
# listener = query.listen do |snapshot|
|
36
|
+
# puts "The query snapshot has #{snapshot.docs.count} documents "
|
37
|
+
# puts "and has #{snapshot.changes.count} changes."
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# # When ready, stop the listen operation and close the stream.
|
41
|
+
# listener.stop
|
42
|
+
#
|
43
|
+
class QueryListener
|
44
|
+
##
|
45
|
+
# @private
|
46
|
+
# Creates the watch stream and listener object.
|
47
|
+
def initialize query, &callback
|
48
|
+
@query = query
|
49
|
+
raise ArgumentError if @query.nil?
|
50
|
+
|
51
|
+
@callback = callback
|
52
|
+
raise ArgumentError if @callback.nil?
|
53
|
+
|
54
|
+
@listener = Watch::Listener.for_query query, &callback
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# @private
|
59
|
+
def start
|
60
|
+
@listener.start
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Stops the client listening for changes.
|
66
|
+
#
|
67
|
+
# @example
|
68
|
+
# require "google/cloud/firestore"
|
69
|
+
#
|
70
|
+
# firestore = Google::Cloud::Firestore.new
|
71
|
+
#
|
72
|
+
# # Create a query
|
73
|
+
# query = firestore.col(:cities).order(:population, :desc)
|
74
|
+
#
|
75
|
+
# listener = query.listen do |snapshot|
|
76
|
+
# puts "The query snapshot has #{snapshot.docs.count} documents "
|
77
|
+
# puts "and has #{snapshot.changes.count} changes."
|
78
|
+
# end
|
79
|
+
#
|
80
|
+
# # When ready, stop the listen operation and close the stream.
|
81
|
+
# listener.stop
|
82
|
+
#
|
83
|
+
def stop
|
84
|
+
@listener.stop
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Whether the client has stopped listening for changes.
|
89
|
+
#
|
90
|
+
# @example
|
91
|
+
# require "google/cloud/firestore"
|
92
|
+
#
|
93
|
+
# firestore = Google::Cloud::Firestore.new
|
94
|
+
#
|
95
|
+
# # Create a query
|
96
|
+
# query = firestore.col(:cities).order(:population, :desc)
|
97
|
+
#
|
98
|
+
# listener = query.listen do |snapshot|
|
99
|
+
# puts "The query snapshot has #{snapshot.docs.count} documents "
|
100
|
+
# puts "and has #{snapshot.changes.count} changes."
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# # Checks if the listener is stopped.
|
104
|
+
# listener.stopped? #=> false
|
105
|
+
#
|
106
|
+
# # When ready, stop the listen operation and close the stream.
|
107
|
+
# listener.stop
|
108
|
+
#
|
109
|
+
# # Checks if the listener is stopped.
|
110
|
+
# listener.stopped? #=> true
|
111
|
+
#
|
112
|
+
def stopped?
|
113
|
+
@listener.stopped?
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# Copyright 2018 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google/cloud/firestore/v1beta1"
|
17
|
+
require "google/cloud/firestore/document_reference"
|
18
|
+
require "google/cloud/firestore/collection_reference"
|
19
|
+
require "google/cloud/firestore/convert"
|
20
|
+
|
21
|
+
module Google
|
22
|
+
module Cloud
|
23
|
+
module Firestore
|
24
|
+
##
|
25
|
+
# # QuerySnapshot
|
26
|
+
#
|
27
|
+
# A query snapshot object is an immutable representation of query results,
|
28
|
+
# including chnages from the previous snapshot.
|
29
|
+
#
|
30
|
+
# See {Query#listen}.
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# require "google/cloud/firestore"
|
34
|
+
#
|
35
|
+
# firestore = Google::Cloud::Firestore.new
|
36
|
+
#
|
37
|
+
# # Create a query
|
38
|
+
# query = firestore.col(:cities).order(:population, :desc)
|
39
|
+
#
|
40
|
+
# listener = query.listen do |snapshot|
|
41
|
+
# puts "The query snapshot has #{snapshot.docs.count} documents "
|
42
|
+
# puts "and has #{snapshot.changes.count} changes."
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# # When ready, stop the listen operation and close the stream.
|
46
|
+
# listener.stop
|
47
|
+
#
|
48
|
+
class QuerySnapshot
|
49
|
+
##
|
50
|
+
# The query producing this snapshot.
|
51
|
+
#
|
52
|
+
# @return [Query] query.
|
53
|
+
#
|
54
|
+
def query
|
55
|
+
@query
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# The documents in the snapshot.
|
60
|
+
#
|
61
|
+
# @return [Array<DocumentSnapshot>] document snapshots.
|
62
|
+
#
|
63
|
+
def docs
|
64
|
+
@docs
|
65
|
+
end
|
66
|
+
alias documents docs
|
67
|
+
|
68
|
+
##
|
69
|
+
# The document change objects for the query snapshot.
|
70
|
+
#
|
71
|
+
# @return [Array<DocumentChange>] document changes.
|
72
|
+
#
|
73
|
+
def changes
|
74
|
+
@changes
|
75
|
+
end
|
76
|
+
alias doc_changes changes
|
77
|
+
alias document_changes changes
|
78
|
+
|
79
|
+
##
|
80
|
+
# Returns the number of documents in this query snapshot.
|
81
|
+
#
|
82
|
+
# @return [Integer] The number of documents.
|
83
|
+
#
|
84
|
+
def size
|
85
|
+
docs.size
|
86
|
+
end
|
87
|
+
alias count size
|
88
|
+
|
89
|
+
##
|
90
|
+
# Determines whether query results exists.
|
91
|
+
#
|
92
|
+
# @return [Boolean] Whether query results exists.
|
93
|
+
#
|
94
|
+
def empty?
|
95
|
+
docs.empty?
|
96
|
+
end
|
97
|
+
|
98
|
+
##
|
99
|
+
# The time at which the snapshot was read.
|
100
|
+
#
|
101
|
+
# @return [Time] The time at which the documents were read.
|
102
|
+
#
|
103
|
+
def read_at
|
104
|
+
@read_at
|
105
|
+
end
|
106
|
+
alias read_time read_at
|
107
|
+
|
108
|
+
##
|
109
|
+
# @private New QuerySnapshot
|
110
|
+
def self.from_docs query, docs, changes, read_at
|
111
|
+
new.tap do |s|
|
112
|
+
s.instance_variable_set :@query, query
|
113
|
+
s.instance_variable_set :@docs, docs
|
114
|
+
s.instance_variable_set :@changes, changes
|
115
|
+
s.instance_variable_set :@read_at, read_at
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -91,6 +91,14 @@ module Google
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
def listen enum
|
95
|
+
options = call_options parent: database_path
|
96
|
+
|
97
|
+
execute do
|
98
|
+
firestore.listen enum, options: options
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
94
102
|
def begin_transaction transaction_opt
|
95
103
|
options = call_options parent: database_path
|
96
104
|
|
@@ -29,9 +29,9 @@ module Google
|
|
29
29
|
# execute atomically at a single logical point in time.
|
30
30
|
#
|
31
31
|
# All changes are accumulated in memory until the block passed to
|
32
|
-
# {
|
32
|
+
# {Client#transaction} completes. Transactions will be automatically
|
33
33
|
# retried when documents change before the transaction is committed. See
|
34
|
-
# {
|
34
|
+
# {Client#transaction}.
|
35
35
|
#
|
36
36
|
# @example
|
37
37
|
# require "google/cloud/firestore"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2018 Google LLC
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -16,33 +16,59 @@ require "google/cloud/firestore/v1beta1/firestore_client"
|
|
16
16
|
|
17
17
|
module Google
|
18
18
|
module Cloud
|
19
|
-
# rubocop:disable LineLength
|
20
|
-
|
21
|
-
##
|
22
|
-
# # Ruby Client for Google Cloud Firestore API ([Beta](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
|
23
|
-
#
|
24
|
-
# [Google Cloud Firestore API][Product Documentation]:
|
25
|
-
#
|
26
|
-
# - [Product Documentation][]
|
27
|
-
#
|
28
|
-
# ## Quick Start
|
29
|
-
# In order to use this library, you first need to go through the following
|
30
|
-
# steps:
|
31
|
-
#
|
32
|
-
# 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
|
33
|
-
# 2. [Enable the Google Cloud Firestore API.](https://console.cloud.google.com/apis/api/firestore)
|
34
|
-
# 3. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
|
35
|
-
#
|
36
|
-
# ### Next Steps
|
37
|
-
# - Read the [Google Cloud Firestore API Product documentation][Product Documentation]
|
38
|
-
# to learn more about the product and see How-to Guides.
|
39
|
-
# - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
|
40
|
-
# to see the full list of Cloud APIs that we cover.
|
41
|
-
#
|
42
|
-
# [Product Documentation]: https://cloud.google.com/firestore
|
43
|
-
#
|
44
|
-
#
|
45
19
|
module Firestore
|
20
|
+
# rubocop:disable LineLength
|
21
|
+
|
22
|
+
##
|
23
|
+
# # Ruby Client for Google Cloud Firestore API ([Beta](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
|
24
|
+
#
|
25
|
+
# [Google Cloud Firestore API][Product Documentation]:
|
26
|
+
#
|
27
|
+
# - [Product Documentation][]
|
28
|
+
#
|
29
|
+
# ## Quick Start
|
30
|
+
# In order to use this library, you first need to go through the following
|
31
|
+
# steps:
|
32
|
+
#
|
33
|
+
# 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
|
34
|
+
# 2. [Enable billing for your project.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
|
35
|
+
# 3. [Enable the Google Cloud Firestore API.](https://console.cloud.google.com/apis/library/firestore.googleapis.com)
|
36
|
+
# 4. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
|
37
|
+
#
|
38
|
+
# ### Next Steps
|
39
|
+
# - Read the [Google Cloud Firestore API Product documentation][Product Documentation]
|
40
|
+
# to learn more about the product and see How-to Guides.
|
41
|
+
# - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
|
42
|
+
# to see the full list of Cloud APIs that we cover.
|
43
|
+
#
|
44
|
+
# [Product Documentation]: https://cloud.google.com/firestore
|
45
|
+
#
|
46
|
+
# ## Enabling Logging
|
47
|
+
#
|
48
|
+
# To enable logging for this library, set the logger for the underlying [gRPC](https://github.com/grpc/grpc/tree/master/src/ruby) library.
|
49
|
+
# The logger that you set may be a Ruby stdlib [`Logger`](https://ruby-doc.org/stdlib-2.5.0/libdoc/logger/rdoc/Logger.html) as shown below,
|
50
|
+
# or a [`Google::Cloud::Logging::Logger`](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-logging/latest/google/cloud/logging/logger)
|
51
|
+
# that will write logs to [Stackdriver Logging](https://cloud.google.com/logging/). See [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
|
52
|
+
# and the gRPC [spec_helper.rb](https://github.com/grpc/grpc/blob/master/src/ruby/spec/spec_helper.rb) for additional information.
|
53
|
+
#
|
54
|
+
# Configuring a Ruby stdlib logger:
|
55
|
+
#
|
56
|
+
# ```ruby
|
57
|
+
# require "logger"
|
58
|
+
#
|
59
|
+
# module MyLogger
|
60
|
+
# LOGGER = Logger.new $stderr, level: Logger::WARN
|
61
|
+
# def logger
|
62
|
+
# LOGGER
|
63
|
+
# end
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# # Define a gRPC module-level logger method before grpc/logconfig.rb loads.
|
67
|
+
# module GRPC
|
68
|
+
# extend MyLogger
|
69
|
+
# end
|
70
|
+
# ```
|
71
|
+
#
|
46
72
|
module V1beta1
|
47
73
|
# rubocop:enable LineLength
|
48
74
|
|
@@ -88,28 +114,27 @@ module Google
|
|
88
114
|
# or the specified config is missing data points.
|
89
115
|
# @param timeout [Numeric]
|
90
116
|
# The default timeout, in seconds, for calls made through this client.
|
117
|
+
# @param metadata [Hash]
|
118
|
+
# Default metadata to be sent with each request. This can be overridden on a per call basis.
|
119
|
+
# @param exception_transformer [Proc]
|
120
|
+
# An optional proc that intercepts any exceptions raised during an API call to inject
|
121
|
+
# custom error handling.
|
91
122
|
def self.new \
|
92
|
-
service_path: nil,
|
93
|
-
port: nil,
|
94
|
-
channel: nil,
|
95
|
-
chan_creds: nil,
|
96
|
-
updater_proc: nil,
|
97
123
|
credentials: nil,
|
98
124
|
scopes: nil,
|
99
125
|
client_config: nil,
|
100
126
|
timeout: nil,
|
127
|
+
metadata: nil,
|
128
|
+
exception_transformer: nil,
|
101
129
|
lib_name: nil,
|
102
130
|
lib_version: nil
|
103
131
|
kwargs = {
|
104
|
-
service_path: service_path,
|
105
|
-
port: port,
|
106
|
-
channel: channel,
|
107
|
-
chan_creds: chan_creds,
|
108
|
-
updater_proc: updater_proc,
|
109
132
|
credentials: credentials,
|
110
133
|
scopes: scopes,
|
111
134
|
client_config: client_config,
|
112
135
|
timeout: timeout,
|
136
|
+
metadata: metadata,
|
137
|
+
exception_transformer: exception_transformer,
|
113
138
|
lib_name: lib_name,
|
114
139
|
lib_version: lib_version
|
115
140
|
}.select { |_, v| v != nil }
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright 2018 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require "googleauth"
|
16
|
+
|
17
|
+
module Google
|
18
|
+
module Cloud
|
19
|
+
module Firestore
|
20
|
+
module V1beta1
|
21
|
+
class Credentials < Google::Auth::Credentials
|
22
|
+
SCOPE = [
|
23
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
24
|
+
"https://www.googleapis.com/auth/datastore"
|
25
|
+
].freeze
|
26
|
+
PATH_ENV_VARS = %w(FIRESTORE_CREDENTIALS
|
27
|
+
FIRESTORE_KEYFILE
|
28
|
+
GOOGLE_CLOUD_CREDENTIALS
|
29
|
+
GOOGLE_CLOUD_KEYFILE
|
30
|
+
GCLOUD_KEYFILE)
|
31
|
+
JSON_ENV_VARS = %w(FIRESTORE_CREDENTIALS_JSON
|
32
|
+
FIRESTORE_KEYFILE_JSON
|
33
|
+
GOOGLE_CLOUD_CREDENTIALS_JSON
|
34
|
+
GOOGLE_CLOUD_KEYFILE_JSON
|
35
|
+
GCLOUD_KEYFILE_JSON)
|
36
|
+
DEFAULT_PATHS = ["~/.config/gcloud/application_default_credentials.json"]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2018 Google LLC
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -29,7 +29,7 @@ module Google
|
|
29
29
|
# The map keys represent field names.
|
30
30
|
#
|
31
31
|
# A simple field name contains only characters +a+ to +z+, +A+ to +Z+,
|
32
|
-
# +0+ to +9+, or +_+, and must not start with +0+ to +9
|
32
|
+
# +0+ to +9+, or +_+, and must not start with +0+ to +9+. For example,
|
33
33
|
# +foo_bar_17+.
|
34
34
|
#
|
35
35
|
# Field names matching the regular expression +__.*__+ are reserved. Reserved
|
@@ -59,7 +59,7 @@ module Google
|
|
59
59
|
# @return [Google::Protobuf::Timestamp]
|
60
60
|
# Output only. The time at which the document was last changed.
|
61
61
|
#
|
62
|
-
# This value is
|
62
|
+
# This value is initially set to the +create_time+ then increases
|
63
63
|
# monotonically with each change to the document. It can also be
|
64
64
|
# compared to values from other documents and the +read_time+ of a query.
|
65
65
|
class Document; end
|
@@ -107,7 +107,8 @@ module Google
|
|
107
107
|
# @return [Google::Firestore::V1beta1::ArrayValue]
|
108
108
|
# An array value.
|
109
109
|
#
|
110
|
-
# Cannot contain another array value
|
110
|
+
# Cannot directly contain another array value, though can contain an
|
111
|
+
# map which contains another array.
|
111
112
|
# @!attribute [rw] map_value
|
112
113
|
# @return [Google::Firestore::V1beta1::MapValue]
|
113
114
|
# A map value.
|