google-cloud-firestore 2.3.0 → 2.6.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/CHANGELOG.md +35 -0
- data/CONTRIBUTING.md +4 -5
- data/LOGGING.md +1 -1
- data/lib/google/cloud/firestore/batch.rb +3 -4
- data/lib/google/cloud/firestore/client.rb +17 -23
- data/lib/google/cloud/firestore/collection_group.rb +136 -0
- data/lib/google/cloud/firestore/collection_reference.rb +9 -6
- data/lib/google/cloud/firestore/collection_reference_list.rb +3 -3
- data/lib/google/cloud/firestore/convert.rb +151 -173
- data/lib/google/cloud/firestore/document_reference.rb +9 -2
- data/lib/google/cloud/firestore/document_reference/list.rb +5 -6
- data/lib/google/cloud/firestore/field_path.rb +2 -2
- data/lib/google/cloud/firestore/field_value.rb +7 -2
- data/lib/google/cloud/firestore/query.rb +99 -29
- data/lib/google/cloud/firestore/query_partition.rb +80 -0
- data/lib/google/cloud/firestore/resource_path.rb +58 -0
- data/lib/google/cloud/firestore/service.rb +18 -1
- data/lib/google/cloud/firestore/transaction.rb +5 -5
- data/lib/google/cloud/firestore/version.rb +1 -1
- data/lib/google/cloud/firestore/watch/inventory.rb +9 -8
- data/lib/google/cloud/firestore/watch/listener.rb +3 -4
- metadata +9 -6
@@ -26,7 +26,10 @@ 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
|
29
|
+
attr_accessor :project
|
30
|
+
attr_accessor :credentials
|
31
|
+
attr_accessor :timeout
|
32
|
+
attr_accessor :host
|
30
33
|
|
31
34
|
##
|
32
35
|
# Creates a new Service instance.
|
@@ -93,6 +96,20 @@ module Google
|
|
93
96
|
)
|
94
97
|
end
|
95
98
|
|
99
|
+
##
|
100
|
+
# Returns Google::Cloud::Firestore::V1::PartitionQueryResponse
|
101
|
+
def partition_query parent, query_grpc, partition_count, token: nil, max: nil
|
102
|
+
request = Google::Cloud::Firestore::V1::PartitionQueryRequest.new(
|
103
|
+
parent: parent,
|
104
|
+
structured_query: query_grpc,
|
105
|
+
partition_count: partition_count,
|
106
|
+
page_token: token,
|
107
|
+
page_size: max
|
108
|
+
)
|
109
|
+
paged_enum = firestore.partition_query request
|
110
|
+
paged_enum.response
|
111
|
+
end
|
112
|
+
|
96
113
|
def run_query path, query_grpc, transaction: nil
|
97
114
|
run_query_req = {
|
98
115
|
parent: path,
|
@@ -131,7 +131,7 @@ module Google
|
|
131
131
|
ensure_service!
|
132
132
|
|
133
133
|
unless block_given?
|
134
|
-
return enum_for :get_all, docs, field_mask: field_mask
|
134
|
+
return enum_for :get_all, *docs, field_mask: field_mask
|
135
135
|
end
|
136
136
|
|
137
137
|
doc_paths = Array(docs).flatten.map do |doc_path|
|
@@ -321,7 +321,7 @@ module Google
|
|
321
321
|
|
322
322
|
doc_path = coalesce_doc_path_argument doc
|
323
323
|
|
324
|
-
@writes << Convert.
|
324
|
+
@writes << Convert.write_for_create(doc_path, data)
|
325
325
|
|
326
326
|
nil
|
327
327
|
end
|
@@ -422,7 +422,7 @@ module Google
|
|
422
422
|
|
423
423
|
doc_path = coalesce_doc_path_argument doc
|
424
424
|
|
425
|
-
@writes << Convert.
|
425
|
+
@writes << Convert.write_for_set(doc_path, data, merge: merge)
|
426
426
|
|
427
427
|
nil
|
428
428
|
end
|
@@ -526,8 +526,8 @@ module Google
|
|
526
526
|
|
527
527
|
doc_path = coalesce_doc_path_argument doc
|
528
528
|
|
529
|
-
@writes << Convert.
|
530
|
-
|
529
|
+
@writes << Convert.write_for_update(doc_path, data,
|
530
|
+
update_time: update_time)
|
531
531
|
|
532
532
|
nil
|
533
533
|
end
|
@@ -33,7 +33,8 @@ module Google
|
|
33
33
|
# make inserting and removing objects much more efficent.
|
34
34
|
class Inventory
|
35
35
|
attr_accessor :current
|
36
|
-
attr_reader :resume_token
|
36
|
+
attr_reader :resume_token
|
37
|
+
attr_reader :read_time
|
37
38
|
|
38
39
|
def initialize client, query
|
39
40
|
@client = client
|
@@ -155,24 +156,24 @@ module Google
|
|
155
156
|
|
156
157
|
protected
|
157
158
|
|
158
|
-
def query_comparison_proc
|
159
|
+
def query_comparison_proc left, right
|
159
160
|
# TODO: Remove this when done benchmarking
|
160
161
|
@comp_proc_counter += 1
|
161
162
|
|
162
|
-
return Order.compare_field_values
|
163
|
+
return Order.compare_field_values left.ref, right.ref if @query.nil?
|
163
164
|
|
164
165
|
@directions ||= @query.query.order_by.map(&:direction)
|
165
166
|
|
166
|
-
|
167
|
-
|
168
|
-
@directions.zip(
|
169
|
-
comp =
|
167
|
+
left_comps = left.query_comparisons_for @query.query
|
168
|
+
right_comps = right.query_comparisons_for @query.query
|
169
|
+
@directions.zip(left_comps, right_comps).each do |dir, left_comp, right_comp|
|
170
|
+
comp = left_comp <=> right_comp
|
170
171
|
comp = 0 - comp if dir == :DESCENDING
|
171
172
|
return comp unless comp.zero?
|
172
173
|
end
|
173
174
|
|
174
175
|
# Compare paths when everything else is equal
|
175
|
-
ref_comp = Order.compare_field_values
|
176
|
+
ref_comp = Order.compare_field_values left.ref, right.ref
|
176
177
|
ref_comp = 0 - ref_comp if @directions.last == :DESCENDING
|
177
178
|
ref_comp
|
178
179
|
end
|
@@ -83,7 +83,7 @@ module Google
|
|
83
83
|
def stop
|
84
84
|
synchronize do
|
85
85
|
@stopped = true
|
86
|
-
@request_queue
|
86
|
+
@request_queue&.push self
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -271,9 +271,8 @@ module Google
|
|
271
271
|
|
272
272
|
# We must be stopped, tell the stream to quit.
|
273
273
|
@request_queue.push self
|
274
|
-
rescue GRPC::Cancelled, GRPC::DeadlineExceeded, GRPC::Internal,
|
275
|
-
GRPC::
|
276
|
-
GRPC::Unavailable, GRPC::Core::CallError => e
|
274
|
+
rescue GRPC::Cancelled, GRPC::DeadlineExceeded, GRPC::Internal, GRPC::ResourceExhausted,
|
275
|
+
GRPC::Unauthenticated, GRPC::Unavailable, GRPC::Unknown, GRPC::Core::CallError => e
|
277
276
|
# Restart the stream with an incremental back for a retriable error.
|
278
277
|
# Also when GRPC raises the internal CallError.
|
279
278
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-firestore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Google Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-cloud-core
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.25.1
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.25.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -227,6 +227,7 @@ files:
|
|
227
227
|
- lib/google/cloud/firestore.rb
|
228
228
|
- lib/google/cloud/firestore/batch.rb
|
229
229
|
- lib/google/cloud/firestore/client.rb
|
230
|
+
- lib/google/cloud/firestore/collection_group.rb
|
230
231
|
- lib/google/cloud/firestore/collection_reference.rb
|
231
232
|
- lib/google/cloud/firestore/collection_reference_list.rb
|
232
233
|
- lib/google/cloud/firestore/commit_response.rb
|
@@ -242,7 +243,9 @@ files:
|
|
242
243
|
- lib/google/cloud/firestore/generate.rb
|
243
244
|
- lib/google/cloud/firestore/query.rb
|
244
245
|
- lib/google/cloud/firestore/query_listener.rb
|
246
|
+
- lib/google/cloud/firestore/query_partition.rb
|
245
247
|
- lib/google/cloud/firestore/query_snapshot.rb
|
248
|
+
- lib/google/cloud/firestore/resource_path.rb
|
246
249
|
- lib/google/cloud/firestore/service.rb
|
247
250
|
- lib/google/cloud/firestore/transaction.rb
|
248
251
|
- lib/google/cloud/firestore/version.rb
|
@@ -262,14 +265,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
265
|
requirements:
|
263
266
|
- - ">="
|
264
267
|
- !ruby/object:Gem::Version
|
265
|
-
version: '2.
|
268
|
+
version: '2.5'
|
266
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
270
|
requirements:
|
268
271
|
- - ">="
|
269
272
|
- !ruby/object:Gem::Version
|
270
273
|
version: '0'
|
271
274
|
requirements: []
|
272
|
-
rubygems_version: 3.
|
275
|
+
rubygems_version: 3.2.17
|
273
276
|
signing_key:
|
274
277
|
specification_version: 4
|
275
278
|
summary: API Client library for Google Cloud Firestore API
|