google-cloud-firestore 2.13.1 → 2.15.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 +12 -0
- data/lib/google/cloud/firestore/aggregate_query.rb +117 -34
- data/lib/google/cloud/firestore/aggregate_query_snapshot.rb +28 -3
- data/lib/google/cloud/firestore/convert.rb +5 -5
- data/lib/google/cloud/firestore/document_snapshot.rb +1 -1
- data/lib/google/cloud/firestore/query.rb +1 -1
- data/lib/google/cloud/firestore/transaction.rb +1 -1
- data/lib/google/cloud/firestore/version.rb +1 -1
- data/lib/google/cloud/firestore.rb +2 -2
- data/lib/google-cloud-firestore.rb +2 -1
- metadata +4 -144
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16163a09797c60820b760bb85283dc3ab8532aacc329dbdf0e8672ab7b8e4066
|
4
|
+
data.tar.gz: a502101923eaeffb2b8ca9112134ffc14e8971970509cb9f34e5263c5889a791
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06e1cb717e9ccdb4560f66d38af4845610aaed131557956d5dea7c86a97169c7f7af979e956ef53a7ac3ce36f19ade87c3a00a7f568bcdc2ea82aaf77dfafb77
|
7
|
+
data.tar.gz: 388eb390a647550643bdce6c1a0b57bcb98fa9ad63fdb24808971dafeac3342ac6a0943bc86103d892b9a4e572746ec01ddf167f9629ff29df768bedcc606c59
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.15.0 (2024-03-07)
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* Update minimum supported Ruby version to 2.7 ([#25298](https://github.com/googleapis/google-cloud-ruby/issues/25298))
|
8
|
+
|
9
|
+
### 2.14.0 (2024-01-31)
|
10
|
+
|
11
|
+
#### Features
|
12
|
+
|
13
|
+
* Support sum & avg aggregate functions ([#23446](https://github.com/googleapis/google-cloud-ruby/issues/23446))
|
14
|
+
|
3
15
|
### 2.13.1 (2023-06-16)
|
4
16
|
|
5
17
|
#### Documentation
|
@@ -67,26 +67,39 @@ module Google
|
|
67
67
|
attr_reader :parent_path
|
68
68
|
|
69
69
|
##
|
70
|
-
# @private The Google::Cloud::Firestore::
|
70
|
+
# @private The Google::Cloud::Firestore::Query object.
|
71
71
|
attr_reader :query
|
72
72
|
|
73
73
|
##
|
74
|
-
# @private
|
75
|
-
|
74
|
+
# @private Object of type
|
75
|
+
# Google::Cloud::Firestore::V1::StructuredAggregationQuery
|
76
|
+
attr_reader :grpc
|
77
|
+
|
78
|
+
# @private
|
79
|
+
DEFAULT_COUNT_ALIAS = "count".freeze
|
80
|
+
|
81
|
+
# @private
|
82
|
+
DEFAULT_SUM_ALIAS = "sum".freeze
|
83
|
+
|
84
|
+
# @private
|
85
|
+
DEFAULT_AVG_ALIAS = "avg".freeze
|
76
86
|
|
77
87
|
##
|
78
88
|
# @private Creates a new AggregateQuery
|
79
|
-
def initialize query, parent_path, client
|
89
|
+
def initialize query, parent_path, client
|
80
90
|
@query = query
|
81
91
|
@parent_path = parent_path
|
82
|
-
@aggregates = aggregates
|
83
92
|
@client = client
|
93
|
+
@grpc = Google::Cloud::Firestore::V1::StructuredAggregationQuery.new(
|
94
|
+
structured_query: @query.query,
|
95
|
+
aggregations: []
|
96
|
+
)
|
84
97
|
end
|
85
98
|
|
86
99
|
##
|
87
100
|
# Adds a count aggregate.
|
88
101
|
#
|
89
|
-
# @param [
|
102
|
+
# @param aggregate_alias [String] Alias to refer to the aggregate. Optional
|
90
103
|
#
|
91
104
|
# @return [AggregateQuery] A new aggregate query with the added count aggregate.
|
92
105
|
#
|
@@ -106,13 +119,102 @@ module Google
|
|
106
119
|
# end
|
107
120
|
#
|
108
121
|
def add_count aggregate_alias: nil
|
109
|
-
aggregate_alias ||=
|
110
|
-
|
111
|
-
|
112
|
-
|
122
|
+
aggregate_alias ||= DEFAULT_COUNT_ALIAS
|
123
|
+
new_aggregate = Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation.new(
|
124
|
+
count: Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation::Count.new,
|
125
|
+
alias: aggregate_alias
|
126
|
+
)
|
127
|
+
|
128
|
+
start new_aggregate
|
129
|
+
end
|
130
|
+
|
131
|
+
##
|
132
|
+
# Adds a sum aggregate.
|
133
|
+
#
|
134
|
+
# @param field [String] The field to sum by
|
135
|
+
# @param aggregate_alias [String] Alias to refer to the aggregate
|
136
|
+
#
|
137
|
+
# @return [AggregateQuery] A new aggregate query with the added sum aggregate.
|
138
|
+
#
|
139
|
+
# @example
|
140
|
+
# require "google/cloud/firestore"
|
141
|
+
#
|
142
|
+
# firestore = Google::Cloud::Firestore.new
|
143
|
+
#
|
144
|
+
# query = firestore.col "cities"
|
145
|
+
#
|
146
|
+
# # Create an aggregate query
|
147
|
+
# aggregate_query = query.aggregate_query
|
148
|
+
# .add_sum("population")
|
149
|
+
#
|
150
|
+
# aggregate_query.get do |aggregate_snapshot|
|
151
|
+
# puts aggregate_snapshot.get
|
152
|
+
# end
|
153
|
+
#
|
154
|
+
def add_sum field, aggregate_alias: nil
|
155
|
+
aggregate_alias ||= DEFAULT_SUM_ALIAS
|
156
|
+
field = FieldPath.parse field unless field.is_a? FieldPath
|
157
|
+
new_aggregate = Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation.new(
|
158
|
+
sum: Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation::Sum.new(
|
159
|
+
field: Google::Cloud::Firestore::V1::StructuredQuery::FieldReference.new(
|
160
|
+
field_path: field.formatted_string
|
161
|
+
)
|
162
|
+
),
|
113
163
|
alias: aggregate_alias
|
114
164
|
)
|
115
|
-
|
165
|
+
|
166
|
+
start new_aggregate
|
167
|
+
end
|
168
|
+
|
169
|
+
##
|
170
|
+
# Adds an average aggregate.
|
171
|
+
#
|
172
|
+
# @param field [String] The field to apply average on
|
173
|
+
# @param aggregate_alias [String] Alias to refer to the aggregate
|
174
|
+
#
|
175
|
+
# @return [AggregateQuery] A new aggregate query with the added average aggregate.
|
176
|
+
#
|
177
|
+
# @example
|
178
|
+
# require "google/cloud/firestore"
|
179
|
+
#
|
180
|
+
# firestore = Google::Cloud::Firestore.new
|
181
|
+
#
|
182
|
+
# query = firestore.col "cities"
|
183
|
+
#
|
184
|
+
# # Create an aggregate query
|
185
|
+
# aggregate_query = query.aggregate_query
|
186
|
+
# .add_avg("population")
|
187
|
+
#
|
188
|
+
# aggregate_query.get do |aggregate_snapshot|
|
189
|
+
# puts aggregate_snapshot.get
|
190
|
+
# end
|
191
|
+
#
|
192
|
+
def add_avg field, aggregate_alias: nil
|
193
|
+
aggregate_alias ||= DEFAULT_AVG_ALIAS
|
194
|
+
field = FieldPath.parse field unless field.is_a? FieldPath
|
195
|
+
new_aggregate = Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation.new(
|
196
|
+
avg: Google::Cloud::Firestore::V1::StructuredAggregationQuery::Aggregation::Avg.new(
|
197
|
+
field: Google::Cloud::Firestore::V1::StructuredQuery::FieldReference.new(
|
198
|
+
field_path: field.formatted_string
|
199
|
+
)
|
200
|
+
),
|
201
|
+
alias: aggregate_alias
|
202
|
+
)
|
203
|
+
|
204
|
+
start new_aggregate
|
205
|
+
end
|
206
|
+
|
207
|
+
##
|
208
|
+
# @private
|
209
|
+
def start new_aggregate
|
210
|
+
combined_aggregates = [].concat(grpc.aggregations).push(new_aggregate)
|
211
|
+
new_grpc = Google::Cloud::Firestore::V1::StructuredAggregationQuery.new(
|
212
|
+
structured_query: @query.query,
|
213
|
+
aggregations: combined_aggregates
|
214
|
+
)
|
215
|
+
self.class.new(@query, @parent_path, @client).tap do |aq|
|
216
|
+
aq.instance_variable_set :@grpc, new_grpc
|
217
|
+
end
|
116
218
|
end
|
117
219
|
|
118
220
|
##
|
@@ -143,7 +245,7 @@ module Google
|
|
143
245
|
|
144
246
|
return enum_for :get unless block_given?
|
145
247
|
|
146
|
-
responses = service.run_aggregate_query @parent_path,
|
248
|
+
responses = service.run_aggregate_query @parent_path, @grpc
|
147
249
|
responses.each do |response|
|
148
250
|
next if response.result.nil?
|
149
251
|
yield AggregateQuerySnapshot.from_run_aggregate_query_response response
|
@@ -151,32 +253,13 @@ module Google
|
|
151
253
|
end
|
152
254
|
|
153
255
|
##
|
154
|
-
# @private
|
155
|
-
def
|
156
|
-
|
157
|
-
structured_query: @query,
|
158
|
-
aggregations: @aggregates
|
159
|
-
)
|
160
|
-
end
|
161
|
-
|
162
|
-
##
|
163
|
-
# @private Start a new AggregateQuery.
|
164
|
-
def self.start query, aggregates, parent_path, client
|
165
|
-
new query, parent_path, client, aggregates: aggregates
|
256
|
+
# @private
|
257
|
+
def to_grpc
|
258
|
+
@grpc
|
166
259
|
end
|
167
260
|
|
168
261
|
protected
|
169
262
|
|
170
|
-
##
|
171
|
-
# @private
|
172
|
-
StructuredAggregationQuery = Google::Cloud::Firestore::V1::StructuredAggregationQuery
|
173
|
-
|
174
|
-
##
|
175
|
-
# @private
|
176
|
-
ALIASES = {
|
177
|
-
count: "count"
|
178
|
-
}.freeze
|
179
|
-
|
180
263
|
##
|
181
264
|
# @private Raise an error unless a database is available.
|
182
265
|
def ensure_client!
|
@@ -53,6 +53,19 @@ module Google
|
|
53
53
|
# puts aggregate_snapshot.get('total')
|
54
54
|
# end
|
55
55
|
class AggregateQuerySnapshot
|
56
|
+
##
|
57
|
+
# @private Object of type [Hash{String => Object}]
|
58
|
+
#
|
59
|
+
# String can have the following values:
|
60
|
+
# - an aggregate literal "sum", "avg", or "count"
|
61
|
+
# - a custom aggregate alias
|
62
|
+
# Object can have the following types:
|
63
|
+
# - Integer
|
64
|
+
# - Float
|
65
|
+
# - nil
|
66
|
+
# - NaN
|
67
|
+
attr_reader :aggregate_fields
|
68
|
+
|
56
69
|
##
|
57
70
|
# Retrieves the aggregate data.
|
58
71
|
#
|
@@ -60,7 +73,9 @@ module Google
|
|
60
73
|
# the aggregate value. For an AggregateQuery with a
|
61
74
|
# single aggregate field, this parameter can be omitted.
|
62
75
|
#
|
63
|
-
# @return [Integer] The aggregate value.
|
76
|
+
# @return [Integer, Float, nil, NaN] The aggregate value.
|
77
|
+
# Returns `nil` if the aggregate_alias does not exist.
|
78
|
+
# Returns `NaN` if the aggregate field contains one or more NaN values.
|
64
79
|
#
|
65
80
|
# @example
|
66
81
|
# require "google/cloud/firestore"
|
@@ -104,11 +119,21 @@ module Google
|
|
104
119
|
# @private New AggregateQuerySnapshot from a
|
105
120
|
# Google::Cloud::Firestore::V1::RunAggregationQueryResponse object.
|
106
121
|
def self.from_run_aggregate_query_response response
|
122
|
+
# rubocop:disable Style/MapToHash
|
107
123
|
aggregate_fields = response
|
108
124
|
.result
|
109
125
|
.aggregate_fields
|
110
|
-
.
|
111
|
-
|
126
|
+
.map do |aggregate_alias, value| # convert from protobuf to ruby map
|
127
|
+
if value.has_integer_value?
|
128
|
+
[aggregate_alias, value.integer_value]
|
129
|
+
elsif value.has_double_value?
|
130
|
+
[aggregate_alias, value.double_value]
|
131
|
+
elsif value.has_null_value?
|
132
|
+
[aggregate_alias, nil]
|
133
|
+
end
|
134
|
+
end
|
135
|
+
.to_h
|
136
|
+
# rubocop:enable Style/MapToHash
|
112
137
|
|
113
138
|
new.tap do |s|
|
114
139
|
s.instance_variable_set :@aggregate_fields, aggregate_fields
|
@@ -381,12 +381,12 @@ module Google
|
|
381
381
|
return val if val
|
382
382
|
end
|
383
383
|
when Hash
|
384
|
-
obj.
|
384
|
+
obj.each_value do |v|
|
385
385
|
val = field_value_nested? v, field_value_type
|
386
386
|
return val if val
|
387
387
|
end
|
388
388
|
end
|
389
|
-
nil
|
389
|
+
nil # rubocop:disable Style/ReturnNilInPredicateMethodDefinition
|
390
390
|
end
|
391
391
|
|
392
392
|
def remove_field_value_from obj, field_value_type = nil
|
@@ -535,13 +535,13 @@ module Google
|
|
535
535
|
ESCAPED_FIELD_PATH = /\A`(.*)`\z/.freeze
|
536
536
|
|
537
537
|
def build_hash_from_field_paths_and_values pairs
|
538
|
-
pairs.each do |
|
539
|
-
raise ArgumentError unless
|
538
|
+
pairs.each do |pair|
|
539
|
+
raise ArgumentError unless pair.first.is_a? FieldPath
|
540
540
|
end
|
541
541
|
|
542
542
|
dup_hash = {}
|
543
543
|
|
544
|
-
pairs.each do |field_path, value|
|
544
|
+
pairs.each do |(field_path, value)|
|
545
545
|
tmp_dup = dup_hash
|
546
546
|
last_field = nil
|
547
547
|
field_path.fields.map(&:to_sym).each do |field|
|
@@ -305,7 +305,7 @@ module Google
|
|
305
305
|
return enum_for :get_aggregate, aggregate_query unless block_given?
|
306
306
|
|
307
307
|
results = service.run_aggregate_query aggregate_query.parent_path,
|
308
|
-
aggregate_query.
|
308
|
+
aggregate_query.to_grpc,
|
309
309
|
transaction: transaction_or_create
|
310
310
|
results.each do |result|
|
311
311
|
extract_transaction_from_result! result
|
@@ -84,7 +84,7 @@ module Google
|
|
84
84
|
transport: nil,
|
85
85
|
project: nil,
|
86
86
|
keyfile: nil
|
87
|
-
project_id ||=
|
87
|
+
project_id ||= project || default_project_id
|
88
88
|
scope ||= configure.scope
|
89
89
|
timeout ||= configure.timeout
|
90
90
|
endpoint ||= configure.endpoint
|
@@ -101,7 +101,7 @@ module Google
|
|
101
101
|
return Firestore::Client.new service
|
102
102
|
end
|
103
103
|
|
104
|
-
credentials ||=
|
104
|
+
credentials ||= keyfile || default_credentials(scope: scope)
|
105
105
|
unless credentials.is_a? Google::Auth::Credentials
|
106
106
|
credentials = Firestore::Credentials.new credentials, scope: scope
|
107
107
|
end
|
@@ -74,9 +74,10 @@ module Google
|
|
74
74
|
database_id: nil,
|
75
75
|
transport: nil
|
76
76
|
transport ||= Google::Cloud.configure.firestore.transport
|
77
|
+
timeout ||= @timeout
|
77
78
|
Google::Cloud.firestore @project, @keyfile,
|
78
79
|
scope: scope,
|
79
|
-
timeout:
|
80
|
+
timeout: timeout,
|
80
81
|
database_id: database_id,
|
81
82
|
transport: transport
|
82
83
|
end
|
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.15.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: 2024-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-cloud-core
|
@@ -66,146 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.4.2
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: google-style
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.26.1
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.26.1
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '5.16'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '5.16'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: minitest-autotest
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '1.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '1.0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: minitest-focus
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '1.1'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.1'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: minitest-rg
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '5.2'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '5.2'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: autotest-suffix
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '1.1'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '1.1'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: redcarpet
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '3.0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '3.0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: simplecov
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0.9'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0.9'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: yard
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0.9'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0.9'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: yard-doctest
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: 0.1.13
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: 0.1.13
|
209
69
|
description: google-cloud-firestore is the official library for Google Cloud Firestore
|
210
70
|
API.
|
211
71
|
email: googleapis-packages@google.com
|
@@ -276,14 +136,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
276
136
|
requirements:
|
277
137
|
- - ">="
|
278
138
|
- !ruby/object:Gem::Version
|
279
|
-
version: '2.
|
139
|
+
version: '2.7'
|
280
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
281
141
|
requirements:
|
282
142
|
- - ">="
|
283
143
|
- !ruby/object:Gem::Version
|
284
144
|
version: '0'
|
285
145
|
requirements: []
|
286
|
-
rubygems_version: 3.
|
146
|
+
rubygems_version: 3.5.6
|
287
147
|
signing_key:
|
288
148
|
specification_version: 4
|
289
149
|
summary: API Client library for Google Cloud Firestore API
|