google-cloud-firestore 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +1 -1
- data/CHANGELOG.md +47 -0
- data/TROUBLESHOOTING.md +2 -8
- data/lib/google-cloud-firestore.rb +14 -21
- data/lib/google/cloud/firestore.rb +12 -23
- data/lib/google/cloud/firestore/client.rb +12 -14
- data/lib/google/cloud/firestore/collection_reference.rb +1 -0
- data/lib/google/cloud/firestore/collection_reference_list.rb +137 -0
- data/lib/google/cloud/firestore/convert.rb +39 -39
- data/lib/google/cloud/firestore/credentials.rb +2 -2
- data/lib/google/cloud/firestore/document_reference.rb +8 -8
- data/lib/google/cloud/firestore/document_reference/list.rb +2 -2
- data/lib/google/cloud/firestore/document_snapshot.rb +4 -4
- data/lib/google/cloud/firestore/query.rb +4 -4
- data/lib/google/cloud/firestore/service.rb +71 -106
- data/lib/google/cloud/firestore/transaction.rb +2 -2
- data/lib/google/cloud/firestore/version.rb +1 -1
- data/lib/google/cloud/firestore/watch/listener.rb +9 -9
- data/lib/google/cloud/firestore/watch/order.rb +1 -1
- metadata +11 -109
- data/lib/google/cloud/firestore/admin.rb +0 -144
- data/lib/google/cloud/firestore/admin/v1.rb +0 -151
- data/lib/google/cloud/firestore/admin/v1/credentials.rb +0 -44
- data/lib/google/cloud/firestore/admin/v1/doc/google/firestore/admin/v1/field.rb +0 -86
- data/lib/google/cloud/firestore/admin/v1/doc/google/firestore/admin/v1/firestore_admin.rb +0 -161
- data/lib/google/cloud/firestore/admin/v1/doc/google/firestore/admin/v1/index.rb +0 -142
- data/lib/google/cloud/firestore/admin/v1/doc/google/longrunning/operations.rb +0 -51
- data/lib/google/cloud/firestore/admin/v1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/firestore/admin/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/firestore/admin/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/firestore/admin/v1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb +0 -764
- data/lib/google/cloud/firestore/admin/v1/firestore_admin_client_config.json +0 -72
- data/lib/google/cloud/firestore/v1.rb +0 -152
- data/lib/google/cloud/firestore/v1/credentials.rb +0 -42
- data/lib/google/cloud/firestore/v1/doc/google/firestore/v1/common.rb +0 -64
- data/lib/google/cloud/firestore/v1/doc/google/firestore/v1/document.rb +0 -136
- data/lib/google/cloud/firestore/v1/doc/google/firestore/v1/firestore.rb +0 -566
- data/lib/google/cloud/firestore/v1/doc/google/firestore/v1/query.rb +0 -227
- data/lib/google/cloud/firestore/v1/doc/google/firestore/v1/write.rb +0 -241
- data/lib/google/cloud/firestore/v1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/firestore/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/firestore/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/firestore/v1/doc/google/protobuf/wrappers.rb +0 -26
- data/lib/google/cloud/firestore/v1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/firestore/v1/firestore_client.rb +0 -1073
- data/lib/google/cloud/firestore/v1/firestore_client_config.json +0 -101
- data/lib/google/cloud/firestore/v1beta1.rb +0 -160
- data/lib/google/cloud/firestore/v1beta1/credentials.rb +0 -42
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/common.rb +0 -64
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/document.rb +0 -136
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/firestore.rb +0 -564
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/query.rb +0 -227
- data/lib/google/cloud/firestore/v1beta1/doc/google/firestore/v1beta1/write.rb +0 -237
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/firestore/v1beta1/doc/google/protobuf/wrappers.rb +0 -26
- data/lib/google/cloud/firestore/v1beta1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/firestore/v1beta1/firestore_client.rb +0 -1081
- data/lib/google/cloud/firestore/v1beta1/firestore_client_config.json +0 -100
- data/lib/google/firestore/admin/v1/field_pb.rb +0 -32
- data/lib/google/firestore/admin/v1/firestore_admin_pb.rb +0 -84
- data/lib/google/firestore/admin/v1/firestore_admin_services_pb.rb +0 -94
- data/lib/google/firestore/admin/v1/index_pb.rb +0 -58
- data/lib/google/firestore/admin/v1/location_pb.rb +0 -22
- data/lib/google/firestore/admin/v1/operation_pb.rb +0 -90
- data/lib/google/firestore/v1/common_pb.rb +0 -45
- data/lib/google/firestore/v1/document_pb.rb +0 -50
- data/lib/google/firestore/v1/firestore_pb.rb +0 -222
- data/lib/google/firestore/v1/firestore_services_pb.rb +0 -80
- data/lib/google/firestore/v1/query_pb.rb +0 -107
- data/lib/google/firestore/v1/write_pb.rb +0 -80
- data/lib/google/firestore/v1beta1/common_pb.rb +0 -45
- data/lib/google/firestore/v1beta1/document_pb.rb +0 -50
- data/lib/google/firestore/v1beta1/firestore_pb.rb +0 -222
- data/lib/google/firestore/v1beta1/firestore_services_pb.rb +0 -89
- data/lib/google/firestore/v1beta1/query_pb.rb +0 -107
- data/lib/google/firestore/v1beta1/write_pb.rb +0 -79
|
@@ -85,40 +85,40 @@ module Google
|
|
|
85
85
|
|
|
86
86
|
def raw_to_value obj
|
|
87
87
|
if NilClass === obj
|
|
88
|
-
Google::Firestore::V1::Value.new null_value: :NULL_VALUE
|
|
88
|
+
Google::Cloud::Firestore::V1::Value.new null_value: :NULL_VALUE
|
|
89
89
|
elsif TrueClass === obj || FalseClass === obj
|
|
90
|
-
Google::Firestore::V1::Value.new boolean_value: obj
|
|
90
|
+
Google::Cloud::Firestore::V1::Value.new boolean_value: obj
|
|
91
91
|
elsif Integer === obj
|
|
92
|
-
Google::Firestore::V1::Value.new integer_value: obj
|
|
92
|
+
Google::Cloud::Firestore::V1::Value.new integer_value: obj
|
|
93
93
|
elsif Numeric === obj # Any number not an integer is a double
|
|
94
|
-
Google::Firestore::V1::Value.new double_value: obj.to_f
|
|
94
|
+
Google::Cloud::Firestore::V1::Value.new double_value: obj.to_f
|
|
95
95
|
elsif Time === obj || DateTime === obj || Date === obj
|
|
96
|
-
Google::Firestore::V1::Value.new \
|
|
96
|
+
Google::Cloud::Firestore::V1::Value.new \
|
|
97
97
|
timestamp_value: time_to_timestamp(obj.to_time)
|
|
98
98
|
elsif String === obj || Symbol === obj
|
|
99
|
-
Google::Firestore::V1::Value.new string_value: obj.to_s
|
|
99
|
+
Google::Cloud::Firestore::V1::Value.new string_value: obj.to_s
|
|
100
100
|
elsif Google::Cloud::Firestore::DocumentReference === obj
|
|
101
|
-
Google::Firestore::V1::Value.new reference_value: obj.path
|
|
101
|
+
Google::Cloud::Firestore::V1::Value.new reference_value: obj.path
|
|
102
102
|
elsif Array === obj
|
|
103
103
|
values = obj.map { |o| raw_to_value(o) }
|
|
104
|
-
Google::Firestore::V1::Value.new(array_value:
|
|
105
|
-
Google::Firestore::V1::ArrayValue.new(values: values))
|
|
104
|
+
Google::Cloud::Firestore::V1::Value.new(array_value:
|
|
105
|
+
Google::Cloud::Firestore::V1::ArrayValue.new(values: values))
|
|
106
106
|
elsif Hash === obj
|
|
107
107
|
# keys have been changed to strings before the hash gets here
|
|
108
108
|
geo_pairs = hash_is_geo_point? obj
|
|
109
109
|
if geo_pairs
|
|
110
|
-
Google::Firestore::V1::Value.new(
|
|
110
|
+
Google::Cloud::Firestore::V1::Value.new(
|
|
111
111
|
geo_point_value: hash_to_geo_point(obj, geo_pairs)
|
|
112
112
|
)
|
|
113
113
|
else
|
|
114
114
|
fields = hash_to_fields obj
|
|
115
|
-
Google::Firestore::V1::Value.new(map_value:
|
|
116
|
-
Google::Firestore::V1::MapValue.new(fields: fields))
|
|
115
|
+
Google::Cloud::Firestore::V1::Value.new(map_value:
|
|
116
|
+
Google::Cloud::Firestore::V1::MapValue.new(fields: fields))
|
|
117
117
|
end
|
|
118
118
|
elsif obj.respond_to?(:read) && obj.respond_to?(:rewind)
|
|
119
119
|
obj.rewind
|
|
120
120
|
content = obj.read.force_encoding "ASCII-8BIT"
|
|
121
|
-
Google::Firestore::V1::Value.new bytes_value: content
|
|
121
|
+
Google::Cloud::Firestore::V1::Value.new bytes_value: content
|
|
122
122
|
else
|
|
123
123
|
raise ArgumentError,
|
|
124
124
|
"A value of type #{obj.class} is not supported."
|
|
@@ -129,7 +129,7 @@ module Google
|
|
|
129
129
|
return false unless hash.keys.count == 2
|
|
130
130
|
|
|
131
131
|
pairs = hash.map { |k, v| [String(k), v] }.sort
|
|
132
|
-
if pairs.map(&:first) == ["latitude"
|
|
132
|
+
if pairs.map(&:first) == ["latitude", "longitude"]
|
|
133
133
|
pairs
|
|
134
134
|
end
|
|
135
135
|
end
|
|
@@ -156,11 +156,11 @@ module Google
|
|
|
156
156
|
data, field_paths_and_values = remove_field_value_from data
|
|
157
157
|
|
|
158
158
|
if data.any? || field_paths_and_values.empty?
|
|
159
|
-
write = Google::Firestore::V1::Write.new(
|
|
160
|
-
update: Google::Firestore::V1::Document.new(
|
|
159
|
+
write = Google::Cloud::Firestore::V1::Write.new(
|
|
160
|
+
update: Google::Cloud::Firestore::V1::Document.new(
|
|
161
161
|
name: doc_path,
|
|
162
162
|
fields: hash_to_fields(data)),
|
|
163
|
-
current_document: Google::Firestore::V1::Precondition.new(
|
|
163
|
+
current_document: Google::Cloud::Firestore::V1::Precondition.new(
|
|
164
164
|
exists: false)
|
|
165
165
|
)
|
|
166
166
|
writes << write
|
|
@@ -171,7 +171,7 @@ module Google
|
|
|
171
171
|
|
|
172
172
|
if data.empty?
|
|
173
173
|
transform_write.current_document = \
|
|
174
|
-
Google::Firestore::V1::Precondition.new(exists: false)
|
|
174
|
+
Google::Cloud::Firestore::V1::Precondition.new(exists: false)
|
|
175
175
|
end
|
|
176
176
|
|
|
177
177
|
writes << transform_write
|
|
@@ -207,8 +207,8 @@ module Google
|
|
|
207
207
|
|
|
208
208
|
data, field_paths_and_values = remove_field_value_from data
|
|
209
209
|
|
|
210
|
-
writes << Google::Firestore::V1::Write.new(
|
|
211
|
-
update: Google::Firestore::V1::Document.new(
|
|
210
|
+
writes << Google::Cloud::Firestore::V1::Write.new(
|
|
211
|
+
update: Google::Cloud::Firestore::V1::Document.new(
|
|
212
212
|
name: doc_path,
|
|
213
213
|
fields: hash_to_fields(data))
|
|
214
214
|
)
|
|
@@ -278,11 +278,11 @@ module Google
|
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
if data.any? || field_paths.any? || (allow_empty && field_paths_and_values.empty?)
|
|
281
|
-
writes << Google::Firestore::V1::Write.new(
|
|
282
|
-
update: Google::Firestore::V1::Document.new(
|
|
281
|
+
writes << Google::Cloud::Firestore::V1::Write.new(
|
|
282
|
+
update: Google::Cloud::Firestore::V1::Document.new(
|
|
283
283
|
name: doc_path,
|
|
284
284
|
fields: hash_to_fields(data)),
|
|
285
|
-
update_mask: Google::Firestore::V1::DocumentMask.new(
|
|
285
|
+
update_mask: Google::Cloud::Firestore::V1::DocumentMask.new(
|
|
286
286
|
field_paths: field_paths.map(&:formatted_string).sort)
|
|
287
287
|
)
|
|
288
288
|
end
|
|
@@ -339,18 +339,18 @@ module Google
|
|
|
339
339
|
end
|
|
340
340
|
|
|
341
341
|
if data.any? || delete_paths.any?
|
|
342
|
-
write = Google::Firestore::V1::Write.new(
|
|
343
|
-
update: Google::Firestore::V1::Document.new(
|
|
342
|
+
write = Google::Cloud::Firestore::V1::Write.new(
|
|
343
|
+
update: Google::Cloud::Firestore::V1::Document.new(
|
|
344
344
|
name: doc_path,
|
|
345
345
|
fields: hash_to_fields(data)),
|
|
346
|
-
update_mask: Google::Firestore::V1::DocumentMask.new(
|
|
346
|
+
update_mask: Google::Cloud::Firestore::V1::DocumentMask.new(
|
|
347
347
|
field_paths: (field_paths).map(&:formatted_string).sort),
|
|
348
|
-
current_document: Google::Firestore::V1::Precondition.new(
|
|
348
|
+
current_document: Google::Cloud::Firestore::V1::Precondition.new(
|
|
349
349
|
exists: true)
|
|
350
350
|
)
|
|
351
351
|
if update_time
|
|
352
352
|
write.current_document = \
|
|
353
|
-
Google::Firestore::V1::Precondition.new(
|
|
353
|
+
Google::Cloud::Firestore::V1::Precondition.new(
|
|
354
354
|
update_time: time_to_timestamp(update_time))
|
|
355
355
|
end
|
|
356
356
|
writes << write
|
|
@@ -360,7 +360,7 @@ module Google
|
|
|
360
360
|
transform_write = transform_write doc_path, field_paths_and_values
|
|
361
361
|
if data.empty?
|
|
362
362
|
transform_write.current_document = \
|
|
363
|
-
Google::Firestore::V1::Precondition.new(exists: true)
|
|
363
|
+
Google::Cloud::Firestore::V1::Precondition.new(exists: true)
|
|
364
364
|
end
|
|
365
365
|
writes << transform_write
|
|
366
366
|
end
|
|
@@ -373,13 +373,13 @@ module Google
|
|
|
373
373
|
raise ArgumentError, "cannot specify both exists and update_time"
|
|
374
374
|
end
|
|
375
375
|
|
|
376
|
-
write = Google::Firestore::V1::Write.new(
|
|
376
|
+
write = Google::Cloud::Firestore::V1::Write.new(
|
|
377
377
|
delete: doc_path
|
|
378
378
|
)
|
|
379
379
|
|
|
380
380
|
unless exists.nil? && update_time.nil?
|
|
381
381
|
write.current_document = \
|
|
382
|
-
Google::Firestore::V1::Precondition.new({
|
|
382
|
+
Google::Cloud::Firestore::V1::Precondition.new({
|
|
383
383
|
exists: exists, update_time: time_to_timestamp(update_time)
|
|
384
384
|
}.delete_if { |_, v| v.nil? })
|
|
385
385
|
end
|
|
@@ -584,8 +584,8 @@ module Google
|
|
|
584
584
|
to_field_transform field_path, field_value
|
|
585
585
|
end
|
|
586
586
|
|
|
587
|
-
Google::Firestore::V1::Write.new(
|
|
588
|
-
transform: Google::Firestore::V1::DocumentTransform.new(
|
|
587
|
+
Google::Cloud::Firestore::V1::Write.new(
|
|
588
|
+
transform: Google::Cloud::Firestore::V1::DocumentTransform.new(
|
|
589
589
|
document: doc_path,
|
|
590
590
|
field_transforms: field_transforms
|
|
591
591
|
)
|
|
@@ -594,32 +594,32 @@ module Google
|
|
|
594
594
|
|
|
595
595
|
def to_field_transform field_path, field_value
|
|
596
596
|
if field_value.type == :server_time
|
|
597
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
597
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
598
598
|
field_path: field_path.formatted_string,
|
|
599
599
|
set_to_server_value: :REQUEST_TIME
|
|
600
600
|
)
|
|
601
601
|
elsif field_value.type == :array_union
|
|
602
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
602
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
603
603
|
field_path: field_path.formatted_string,
|
|
604
604
|
append_missing_elements: raw_to_value(Array(field_value.value)).array_value
|
|
605
605
|
)
|
|
606
606
|
elsif field_value.type == :array_delete
|
|
607
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
607
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
608
608
|
field_path: field_path.formatted_string,
|
|
609
609
|
remove_all_from_array: raw_to_value(Array(field_value.value)).array_value
|
|
610
610
|
)
|
|
611
611
|
elsif field_value.type == :increment
|
|
612
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
612
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
613
613
|
field_path: field_path.formatted_string,
|
|
614
614
|
increment: raw_to_value(field_value.value)
|
|
615
615
|
)
|
|
616
616
|
elsif field_value.type == :maximum
|
|
617
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
617
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
618
618
|
field_path: field_path.formatted_string,
|
|
619
619
|
maximum: raw_to_value(field_value.value)
|
|
620
620
|
)
|
|
621
621
|
elsif field_value.type == :minimum
|
|
622
|
-
Google::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
622
|
+
Google::Cloud::Firestore::V1::DocumentTransform::FieldTransform.new(
|
|
623
623
|
field_path: field_path.formatted_string,
|
|
624
624
|
minimum: raw_to_value(field_value.value)
|
|
625
625
|
)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
require "google/cloud/firestore/v1/credentials"
|
|
16
|
+
require "google/cloud/firestore/v1/firestore/credentials"
|
|
17
17
|
|
|
18
18
|
module Google
|
|
19
19
|
module Cloud
|
|
@@ -37,7 +37,7 @@ module Google
|
|
|
37
37
|
#
|
|
38
38
|
# firestore.project_id #=> "my-project"
|
|
39
39
|
#
|
|
40
|
-
class Credentials < Google::Cloud::Firestore::V1::Credentials
|
|
40
|
+
class Credentials < Google::Cloud::Firestore::V1::Firestore::Credentials
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
end
|
|
@@ -70,12 +70,13 @@ module Google
|
|
|
70
70
|
# @!group Access
|
|
71
71
|
|
|
72
72
|
##
|
|
73
|
-
# Retrieves
|
|
73
|
+
# Retrieves an enumerator for the collections nested under the document snapshot.
|
|
74
74
|
#
|
|
75
75
|
# @yield [collections] The block for accessing the collections.
|
|
76
|
-
# @yieldparam [CollectionReference] collection A collection.
|
|
76
|
+
# @yieldparam [CollectionReference] collection A collection reference object.
|
|
77
77
|
#
|
|
78
|
-
# @return [Enumerator<CollectionReference>] collection
|
|
78
|
+
# @return [Enumerator<CollectionReference>] An enumerator of collection references. If a block is provided, this
|
|
79
|
+
# is the same enumerator that is accessed through the block.
|
|
79
80
|
#
|
|
80
81
|
# @example
|
|
81
82
|
# require "google/cloud/firestore"
|
|
@@ -91,11 +92,10 @@ module Google
|
|
|
91
92
|
#
|
|
92
93
|
def cols
|
|
93
94
|
ensure_service!
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
collection_ids.each { |collection_id| yield col collection_id }
|
|
95
|
+
grpc = service.list_collections path
|
|
96
|
+
cols_enum = CollectionReferenceList.from_grpc(grpc, client, path).all
|
|
97
|
+
cols_enum.each { |c| yield c } if block_given?
|
|
98
|
+
cols_enum
|
|
99
99
|
end
|
|
100
100
|
alias collections cols
|
|
101
101
|
alias list_collections cols
|
|
@@ -162,7 +162,7 @@ module Google
|
|
|
162
162
|
|
|
163
163
|
##
|
|
164
164
|
# @private New DocumentReference::List from a
|
|
165
|
-
# Google::Firestore::V1::ListDocumentsResponse object.
|
|
165
|
+
# Google::Cloud::Firestore::V1::ListDocumentsResponse object.
|
|
166
166
|
def self.from_grpc grpc, client, parent, collection_id, max = nil
|
|
167
167
|
documents = List.new(Array(grpc.documents).map do |document|
|
|
168
168
|
DocumentReference.from_path document.name, client
|
|
@@ -170,7 +170,7 @@ module Google
|
|
|
170
170
|
documents.instance_variable_set :@parent, parent
|
|
171
171
|
documents.instance_variable_set :@collection_id, collection_id
|
|
172
172
|
token = grpc.next_page_token
|
|
173
|
-
token = nil if token == ""
|
|
173
|
+
token = nil if token == ""
|
|
174
174
|
documents.instance_variable_set :@token, token
|
|
175
175
|
documents.instance_variable_set :@client, client
|
|
176
176
|
documents.instance_variable_set :@max, max
|
|
@@ -62,7 +62,7 @@ module Google
|
|
|
62
62
|
#
|
|
63
63
|
class DocumentSnapshot
|
|
64
64
|
##
|
|
65
|
-
# @private The Google::Firestore::V1::Document object.
|
|
65
|
+
# @private The Google::Cloud::Firestore::V1::Document object.
|
|
66
66
|
attr_accessor :grpc
|
|
67
67
|
|
|
68
68
|
##
|
|
@@ -345,7 +345,7 @@ module Google
|
|
|
345
345
|
|
|
346
346
|
##
|
|
347
347
|
# @private New DocumentSnapshot from a
|
|
348
|
-
# Google::Firestore::V1::RunQueryResponse object.
|
|
348
|
+
# Google::Cloud::Firestore::V1::RunQueryResponse object.
|
|
349
349
|
def self.from_query_result result, client
|
|
350
350
|
ref = DocumentReference.from_path result.document.name, client
|
|
351
351
|
read_at = Convert.timestamp_to_time result.read_time
|
|
@@ -359,7 +359,7 @@ module Google
|
|
|
359
359
|
|
|
360
360
|
##
|
|
361
361
|
# @private New DocumentSnapshot from a
|
|
362
|
-
# Google::Firestore::V1::DocumentChange object.
|
|
362
|
+
# Google::Cloud::Firestore::V1::DocumentChange object.
|
|
363
363
|
def self.from_document document, client, read_at: nil
|
|
364
364
|
ref = DocumentReference.from_path document.name, client
|
|
365
365
|
|
|
@@ -372,7 +372,7 @@ module Google
|
|
|
372
372
|
|
|
373
373
|
##
|
|
374
374
|
# @private New DocumentSnapshot from a
|
|
375
|
-
# Google::Firestore::V1::BatchGetDocumentsResponse object.
|
|
375
|
+
# Google::Cloud::Firestore::V1::BatchGetDocumentsResponse object.
|
|
376
376
|
def self.from_batch_result result, client
|
|
377
377
|
ref = nil
|
|
378
378
|
grpc = nil
|
|
@@ -63,7 +63,7 @@ module Google
|
|
|
63
63
|
attr_accessor :parent_path
|
|
64
64
|
|
|
65
65
|
##
|
|
66
|
-
# @private The Google::Firestore::V1::StructuredQuery object.
|
|
66
|
+
# @private The Google::Cloud::Firestore::V1::StructuredQuery object.
|
|
67
67
|
attr_accessor :query
|
|
68
68
|
|
|
69
69
|
##
|
|
@@ -883,7 +883,7 @@ module Google
|
|
|
883
883
|
|
|
884
884
|
##
|
|
885
885
|
# @private
|
|
886
|
-
StructuredQuery = Google::Firestore::V1::StructuredQuery
|
|
886
|
+
StructuredQuery = Google::Cloud::Firestore::V1::StructuredQuery
|
|
887
887
|
|
|
888
888
|
##
|
|
889
889
|
# @private
|
|
@@ -987,7 +987,7 @@ module Google
|
|
|
987
987
|
end
|
|
988
988
|
|
|
989
989
|
def order_direction direction
|
|
990
|
-
return :DESCENDING if direction.to_s.downcase.start_with? "d"
|
|
990
|
+
return :DESCENDING if direction.to_s.downcase.start_with? "d"
|
|
991
991
|
:ASCENDING
|
|
992
992
|
end
|
|
993
993
|
|
|
@@ -1014,7 +1014,7 @@ module Google
|
|
|
1014
1014
|
Convert.raw_to_value value
|
|
1015
1015
|
end
|
|
1016
1016
|
|
|
1017
|
-
Google::Firestore::V1::Cursor.new values: values
|
|
1017
|
+
Google::Cloud::Firestore::V1::Cursor.new values: values
|
|
1018
1018
|
end
|
|
1019
1019
|
|
|
1020
1020
|
def snapshot_to_cursor snapshot, query
|
|
@@ -26,63 +26,42 @@ module Google
|
|
|
26
26
|
# @private Represents the gRPC Firestore service, including all the API
|
|
27
27
|
# methods.
|
|
28
28
|
class Service
|
|
29
|
-
attr_accessor :project, :credentials, :timeout, :
|
|
29
|
+
attr_accessor :project, :credentials, :timeout, :host
|
|
30
30
|
|
|
31
31
|
##
|
|
32
32
|
# Creates a new Service instance.
|
|
33
|
-
def initialize project, credentials, host: nil, timeout: nil
|
|
34
|
-
client_config: nil
|
|
33
|
+
def initialize project, credentials, host: nil, timeout: nil
|
|
35
34
|
@project = project
|
|
36
35
|
@credentials = credentials
|
|
37
|
-
@host = host
|
|
36
|
+
@host = host
|
|
38
37
|
@timeout = timeout
|
|
39
|
-
@client_config = client_config || {}
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def channel
|
|
43
|
-
require "grpc"
|
|
44
|
-
GRPC::Core::Channel.new host, chan_args, chan_creds
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def chan_args
|
|
48
|
-
{ "grpc.service_config_disable_resolution" => 1 }
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def chan_creds
|
|
52
|
-
return credentials if insecure?
|
|
53
|
-
require "grpc"
|
|
54
|
-
GRPC::Core::ChannelCredentials.new.compose \
|
|
55
|
-
GRPC::Core::CallCredentials.new credentials.client.updater_proc
|
|
56
38
|
end
|
|
57
39
|
|
|
58
40
|
def firestore
|
|
59
41
|
@firestore ||= \
|
|
60
|
-
V1::
|
|
61
|
-
credentials
|
|
62
|
-
timeout
|
|
63
|
-
|
|
64
|
-
lib_name
|
|
65
|
-
lib_version
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def insecure?
|
|
70
|
-
credentials == :this_channel_is_insecure
|
|
42
|
+
V1::Firestore::Client.new do |config|
|
|
43
|
+
config.credentials = credentials if credentials
|
|
44
|
+
config.timeout = timeout if timeout
|
|
45
|
+
config.endpoint = host if host
|
|
46
|
+
config.lib_name = "gccl"
|
|
47
|
+
config.lib_version = Google::Cloud::Firestore::VERSION
|
|
48
|
+
config.metadata = { "google-cloud-resource-prefix": "projects/#{@project}" }
|
|
49
|
+
end
|
|
71
50
|
end
|
|
72
51
|
|
|
73
52
|
def get_documents document_paths, mask: nil, transaction: nil
|
|
74
|
-
|
|
53
|
+
batch_get_req = {
|
|
54
|
+
database: database_path,
|
|
55
|
+
documents: document_paths,
|
|
56
|
+
mask: document_mask(mask)
|
|
57
|
+
}
|
|
75
58
|
if transaction.is_a? String
|
|
76
|
-
|
|
59
|
+
batch_get_req[:transaction] = transaction
|
|
77
60
|
elsif transaction
|
|
78
|
-
|
|
61
|
+
batch_get_req[:new_transaction] = transaction
|
|
79
62
|
end
|
|
80
|
-
batch_get_args[:options] = call_options parent: database_path
|
|
81
63
|
|
|
82
|
-
|
|
83
|
-
firestore.batch_get_documents database_path, document_paths,
|
|
84
|
-
batch_get_args
|
|
85
|
-
end
|
|
64
|
+
firestore.batch_get_documents batch_get_req, call_options(parent: database_path)
|
|
86
65
|
end
|
|
87
66
|
|
|
88
67
|
##
|
|
@@ -94,87 +73,82 @@ module Google
|
|
|
94
73
|
# method.
|
|
95
74
|
def list_documents parent, collection_id, token: nil, max: nil
|
|
96
75
|
mask = { field_paths: [] }
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
list_args[:options] = call_options parent: database_path
|
|
116
|
-
|
|
117
|
-
execute do
|
|
118
|
-
firestore.list_collection_ids parent, list_args
|
|
119
|
-
end
|
|
76
|
+
paged_enum = firestore.list_documents parent: parent,
|
|
77
|
+
collection_id: collection_id,
|
|
78
|
+
page_size: max,
|
|
79
|
+
page_token: token,
|
|
80
|
+
mask: mask,
|
|
81
|
+
show_missing: true
|
|
82
|
+
paged_enum.response
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def list_collections parent, token: nil, max: nil
|
|
86
|
+
firestore.list_collection_ids(
|
|
87
|
+
{
|
|
88
|
+
parent: parent,
|
|
89
|
+
page_size: max,
|
|
90
|
+
page_token: token
|
|
91
|
+
},
|
|
92
|
+
call_options(parent: database_path)
|
|
93
|
+
)
|
|
120
94
|
end
|
|
121
95
|
|
|
122
96
|
def run_query path, query_grpc, transaction: nil
|
|
123
|
-
|
|
97
|
+
run_query_req = {
|
|
98
|
+
parent: path,
|
|
99
|
+
structured_query: query_grpc
|
|
100
|
+
}
|
|
124
101
|
if transaction.is_a? String
|
|
125
|
-
|
|
102
|
+
run_query_req[:transaction] = transaction
|
|
126
103
|
elsif transaction
|
|
127
|
-
|
|
104
|
+
run_query_req[:new_transaction] = transaction
|
|
128
105
|
end
|
|
129
|
-
run_query_args[:options] = call_options parent: database_path
|
|
130
106
|
|
|
131
|
-
|
|
132
|
-
firestore.run_query path, run_query_args
|
|
133
|
-
end
|
|
107
|
+
firestore.run_query run_query_req, call_options(parent: database_path)
|
|
134
108
|
end
|
|
135
109
|
|
|
136
110
|
def listen enum
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
execute do
|
|
140
|
-
firestore.listen enum, options: options
|
|
141
|
-
end
|
|
111
|
+
firestore.listen enum, call_options(parent: database_path)
|
|
142
112
|
end
|
|
143
113
|
|
|
144
114
|
def begin_transaction transaction_opt
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
115
|
+
firestore.begin_transaction(
|
|
116
|
+
{
|
|
117
|
+
database: database_path,
|
|
118
|
+
options: transaction_opt
|
|
119
|
+
},
|
|
120
|
+
call_options(parent: database_path)
|
|
121
|
+
)
|
|
152
122
|
end
|
|
153
123
|
|
|
154
124
|
def commit writes, transaction: nil
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
125
|
+
commit_req = {
|
|
126
|
+
database: database_path,
|
|
127
|
+
writes: writes
|
|
128
|
+
}
|
|
129
|
+
commit_req[:transaction] = transaction if transaction
|
|
158
130
|
|
|
159
|
-
|
|
160
|
-
firestore.commit database_path, writes, commit_args
|
|
161
|
-
end
|
|
131
|
+
firestore.commit commit_req, call_options(parent: database_path)
|
|
162
132
|
end
|
|
163
133
|
|
|
164
134
|
def rollback transaction
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
135
|
+
firestore.rollback(
|
|
136
|
+
{
|
|
137
|
+
database: database_path,
|
|
138
|
+
transaction: transaction
|
|
139
|
+
},
|
|
140
|
+
call_options(parent: database_path)
|
|
141
|
+
)
|
|
170
142
|
end
|
|
171
143
|
|
|
172
144
|
def database_path project_id: project, database_id: "(default)"
|
|
173
|
-
V1::FirestoreClient.database_root_path
|
|
145
|
+
# Originally used V1::FirestoreClient.database_root_path until it was removed in #5405.
|
|
146
|
+
"projects/#{project_id}/databases/#{database_id}"
|
|
174
147
|
end
|
|
175
148
|
|
|
176
149
|
def documents_path project_id: project, database_id: "(default)"
|
|
177
|
-
V1::FirestoreClient.document_root_path
|
|
150
|
+
# Originally used V1::FirestoreClient.document_root_path until it was removed in #5405.
|
|
151
|
+
"projects/#{project_id}/databases/#{database_id}/documents"
|
|
178
152
|
end
|
|
179
153
|
|
|
180
154
|
def inspect
|
|
@@ -189,7 +163,7 @@ module Google
|
|
|
189
163
|
end
|
|
190
164
|
|
|
191
165
|
def call_options parent: nil, token: nil
|
|
192
|
-
|
|
166
|
+
Gapic::CallOptions.new(**{
|
|
193
167
|
metadata: default_headers(parent),
|
|
194
168
|
page_token: token
|
|
195
169
|
}.delete_if { |_, v| v.nil? })
|
|
@@ -201,16 +175,7 @@ module Google
|
|
|
201
175
|
mask = Array(mask).map(&:to_s).reject(&:nil?).reject(&:empty?)
|
|
202
176
|
return nil if mask.empty?
|
|
203
177
|
|
|
204
|
-
Google::Firestore::V1::DocumentMask.new field_paths: mask
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def execute
|
|
208
|
-
yield
|
|
209
|
-
rescue Google::Gax::GaxError => e
|
|
210
|
-
# GaxError wraps BadStatus, but exposes it as #cause
|
|
211
|
-
raise Google::Cloud::Error.from_error(e.cause)
|
|
212
|
-
rescue GRPC::BadStatus => e
|
|
213
|
-
raise Google::Cloud::Error.from_error(e)
|
|
178
|
+
Google::Cloud::Firestore::V1::DocumentMask.new field_paths: mask
|
|
214
179
|
end
|
|
215
180
|
end
|
|
216
181
|
end
|