google-cloud-firestore 1.3.0 → 1.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/TROUBLESHOOTING.md +2 -8
- data/lib/google/cloud/firestore/admin.rb +1 -1
- data/lib/google/cloud/firestore/admin/v1.rb +1 -1
- data/lib/google/cloud/firestore/admin/v1/firestore_admin_client.rb +378 -237
- data/lib/google/cloud/firestore/admin/v1/firestore_admin_client_config.json +22 -18
- data/lib/google/cloud/firestore/service.rb +16 -10
- data/lib/google/cloud/firestore/v1/firestore_client.rb +61 -120
- data/lib/google/cloud/firestore/v1/firestore_client_config.json +10 -6
- data/lib/google/cloud/firestore/v1beta1.rb +2 -0
- data/lib/google/cloud/firestore/v1beta1/firestore_client.rb +492 -549
- data/lib/google/cloud/firestore/v1beta1/firestore_client_config.json +28 -28
- data/lib/google/cloud/firestore/version.rb +1 -1
- metadata +4 -4
@@ -7,7 +7,11 @@
|
|
7
7
|
"INTERNAL",
|
8
8
|
"UNAVAILABLE"
|
9
9
|
],
|
10
|
-
"non_idempotent": []
|
10
|
+
"non_idempotent": [],
|
11
|
+
"idempotent2": [
|
12
|
+
"DEADLINE_EXCEEDED",
|
13
|
+
"UNAVAILABLE"
|
14
|
+
]
|
11
15
|
},
|
12
16
|
"retry_params": {
|
13
17
|
"default": {
|
@@ -21,47 +25,47 @@
|
|
21
25
|
}
|
22
26
|
},
|
23
27
|
"methods": {
|
24
|
-
"
|
25
|
-
"timeout_millis": 60000,
|
26
|
-
"retry_codes_name": "non_idempotent",
|
27
|
-
"retry_params_name": "default"
|
28
|
-
},
|
29
|
-
"ListIndexes": {
|
28
|
+
"DeleteIndex": {
|
30
29
|
"timeout_millis": 60000,
|
31
30
|
"retry_codes_name": "idempotent",
|
32
31
|
"retry_params_name": "default"
|
33
32
|
},
|
34
|
-
"
|
33
|
+
"UpdateField": {
|
35
34
|
"timeout_millis": 60000,
|
36
|
-
"retry_codes_name": "
|
35
|
+
"retry_codes_name": "non_idempotent",
|
37
36
|
"retry_params_name": "default"
|
38
37
|
},
|
39
|
-
"
|
38
|
+
"CreateIndex": {
|
40
39
|
"timeout_millis": 60000,
|
41
|
-
"retry_codes_name": "
|
40
|
+
"retry_codes_name": "non_idempotent",
|
42
41
|
"retry_params_name": "default"
|
43
42
|
},
|
44
|
-
"
|
43
|
+
"ListIndexes": {
|
45
44
|
"timeout_millis": 60000,
|
46
|
-
"retry_codes_name": "
|
45
|
+
"retry_codes_name": "idempotent2",
|
47
46
|
"retry_params_name": "default"
|
48
47
|
},
|
49
|
-
"
|
48
|
+
"GetIndex": {
|
50
49
|
"timeout_millis": 60000,
|
51
|
-
"retry_codes_name": "
|
50
|
+
"retry_codes_name": "idempotent2",
|
52
51
|
"retry_params_name": "default"
|
53
52
|
},
|
54
53
|
"GetField": {
|
55
54
|
"timeout_millis": 60000,
|
56
|
-
"retry_codes_name": "
|
55
|
+
"retry_codes_name": "idempotent2",
|
57
56
|
"retry_params_name": "default"
|
58
57
|
},
|
59
58
|
"ListFields": {
|
60
59
|
"timeout_millis": 60000,
|
61
|
-
"retry_codes_name": "
|
60
|
+
"retry_codes_name": "idempotent2",
|
62
61
|
"retry_params_name": "default"
|
63
62
|
},
|
64
|
-
"
|
63
|
+
"ExportDocuments": {
|
64
|
+
"timeout_millis": 60000,
|
65
|
+
"retry_codes_name": "non_idempotent",
|
66
|
+
"retry_params_name": "default"
|
67
|
+
},
|
68
|
+
"ImportDocuments": {
|
65
69
|
"timeout_millis": 60000,
|
66
70
|
"retry_codes_name": "non_idempotent",
|
67
71
|
"retry_params_name": "default"
|
@@ -71,7 +71,10 @@ module Google
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def get_documents document_paths, mask: nil, transaction: nil
|
74
|
-
batch_get_args = {
|
74
|
+
batch_get_args = {
|
75
|
+
documents: document_paths,
|
76
|
+
mask: document_mask(mask)
|
77
|
+
}
|
75
78
|
if transaction.is_a? String
|
76
79
|
batch_get_args[:transaction] = transaction
|
77
80
|
elsif transaction
|
@@ -80,8 +83,7 @@ module Google
|
|
80
83
|
batch_get_args[:options] = call_options parent: database_path
|
81
84
|
|
82
85
|
execute do
|
83
|
-
firestore.batch_get_documents database_path,
|
84
|
-
batch_get_args
|
86
|
+
firestore.batch_get_documents database_path, **batch_get_args
|
85
87
|
end
|
86
88
|
end
|
87
89
|
|
@@ -115,7 +117,7 @@ module Google
|
|
115
117
|
list_args[:options] = call_options parent: database_path
|
116
118
|
|
117
119
|
execute do
|
118
|
-
firestore.list_collection_ids parent, list_args
|
120
|
+
firestore.list_collection_ids parent, **list_args
|
119
121
|
end
|
120
122
|
end
|
121
123
|
|
@@ -129,7 +131,7 @@ module Google
|
|
129
131
|
run_query_args[:options] = call_options parent: database_path
|
130
132
|
|
131
133
|
execute do
|
132
|
-
firestore.run_query path, run_query_args
|
134
|
+
firestore.run_query path, **run_query_args
|
133
135
|
end
|
134
136
|
end
|
135
137
|
|
@@ -152,12 +154,14 @@ module Google
|
|
152
154
|
end
|
153
155
|
|
154
156
|
def commit writes, transaction: nil
|
155
|
-
commit_args = {
|
157
|
+
commit_args = {
|
158
|
+
writes: writes
|
159
|
+
}
|
156
160
|
commit_args[:transaction] = transaction if transaction
|
157
161
|
commit_args[:options] = call_options parent: database_path
|
158
162
|
|
159
163
|
execute do
|
160
|
-
firestore.commit database_path,
|
164
|
+
firestore.commit database_path, **commit_args
|
161
165
|
end
|
162
166
|
end
|
163
167
|
|
@@ -170,11 +174,13 @@ module Google
|
|
170
174
|
end
|
171
175
|
|
172
176
|
def database_path project_id: project, database_id: "(default)"
|
173
|
-
V1::FirestoreClient.database_root_path
|
177
|
+
# Originally used V1::FirestoreClient.database_root_path until it was removed in #5405.
|
178
|
+
"projects/#{project_id}/databases/#{database_id}"
|
174
179
|
end
|
175
180
|
|
176
181
|
def documents_path project_id: project, database_id: "(default)"
|
177
|
-
V1::FirestoreClient.document_root_path
|
182
|
+
# Originally used V1::FirestoreClient.document_root_path until it was removed in #5405.
|
183
|
+
"projects/#{project_id}/databases/#{database_id}/documents"
|
178
184
|
end
|
179
185
|
|
180
186
|
def inspect
|
@@ -189,7 +195,7 @@ module Google
|
|
189
195
|
end
|
190
196
|
|
191
197
|
def call_options parent: nil, token: nil
|
192
|
-
Google::Gax::CallOptions.new({
|
198
|
+
Google::Gax::CallOptions.new(**{
|
193
199
|
metadata: default_headers(parent),
|
194
200
|
page_token: token
|
195
201
|
}.delete_if { |_, v| v.nil? })
|
@@ -80,80 +80,6 @@ module Google
|
|
80
80
|
].freeze
|
81
81
|
|
82
82
|
|
83
|
-
ANY_PATH_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
84
|
-
"projects/{project}/databases/{database}/documents/{document}/{any_path=**}"
|
85
|
-
)
|
86
|
-
|
87
|
-
private_constant :ANY_PATH_PATH_TEMPLATE
|
88
|
-
|
89
|
-
DATABASE_ROOT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
90
|
-
"projects/{project}/databases/{database}"
|
91
|
-
)
|
92
|
-
|
93
|
-
private_constant :DATABASE_ROOT_PATH_TEMPLATE
|
94
|
-
|
95
|
-
DOCUMENT_PATH_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
96
|
-
"projects/{project}/databases/{database}/documents/{document_path=**}"
|
97
|
-
)
|
98
|
-
|
99
|
-
private_constant :DOCUMENT_PATH_PATH_TEMPLATE
|
100
|
-
|
101
|
-
DOCUMENT_ROOT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
102
|
-
"projects/{project}/databases/{database}/documents"
|
103
|
-
)
|
104
|
-
|
105
|
-
private_constant :DOCUMENT_ROOT_PATH_TEMPLATE
|
106
|
-
|
107
|
-
# Returns a fully-qualified any_path resource name string.
|
108
|
-
# @param project [String]
|
109
|
-
# @param database [String]
|
110
|
-
# @param document [String]
|
111
|
-
# @param any_path [String]
|
112
|
-
# @return [String]
|
113
|
-
def self.any_path_path project, database, document, any_path
|
114
|
-
ANY_PATH_PATH_TEMPLATE.render(
|
115
|
-
:"project" => project,
|
116
|
-
:"database" => database,
|
117
|
-
:"document" => document,
|
118
|
-
:"any_path" => any_path
|
119
|
-
)
|
120
|
-
end
|
121
|
-
|
122
|
-
# Returns a fully-qualified database_root resource name string.
|
123
|
-
# @param project [String]
|
124
|
-
# @param database [String]
|
125
|
-
# @return [String]
|
126
|
-
def self.database_root_path project, database
|
127
|
-
DATABASE_ROOT_PATH_TEMPLATE.render(
|
128
|
-
:"project" => project,
|
129
|
-
:"database" => database
|
130
|
-
)
|
131
|
-
end
|
132
|
-
|
133
|
-
# Returns a fully-qualified document_path resource name string.
|
134
|
-
# @param project [String]
|
135
|
-
# @param database [String]
|
136
|
-
# @param document_path [String]
|
137
|
-
# @return [String]
|
138
|
-
def self.document_path_path project, database, document_path
|
139
|
-
DOCUMENT_PATH_PATH_TEMPLATE.render(
|
140
|
-
:"project" => project,
|
141
|
-
:"database" => database,
|
142
|
-
:"document_path" => document_path
|
143
|
-
)
|
144
|
-
end
|
145
|
-
|
146
|
-
# Returns a fully-qualified document_root resource name string.
|
147
|
-
# @param project [String]
|
148
|
-
# @param database [String]
|
149
|
-
# @return [String]
|
150
|
-
def self.document_root_path project, database
|
151
|
-
DOCUMENT_ROOT_PATH_TEMPLATE.render(
|
152
|
-
:"project" => project,
|
153
|
-
:"database" => database
|
154
|
-
)
|
155
|
-
end
|
156
|
-
|
157
83
|
# @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
|
158
84
|
# Provides the means for authenticating requests made by the client. This parameter can
|
159
85
|
# be many types.
|
@@ -231,6 +157,9 @@ module Google
|
|
231
157
|
google_api_client.freeze
|
232
158
|
|
233
159
|
headers = { :"x-goog-api-client" => google_api_client }
|
160
|
+
if credentials.respond_to?(:quota_project_id) && credentials.quota_project_id
|
161
|
+
headers[:"x-goog-user-project"] = credentials.quota_project_id
|
162
|
+
end
|
234
163
|
headers.merge!(metadata) unless metadata.nil?
|
235
164
|
client_config_file = Pathname.new(__dir__).join(
|
236
165
|
"firestore_client_config.json"
|
@@ -390,8 +319,10 @@ module Google
|
|
390
319
|
# require "google/cloud/firestore/v1"
|
391
320
|
#
|
392
321
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
393
|
-
#
|
394
|
-
#
|
322
|
+
#
|
323
|
+
# # TODO: Initialize `name`:
|
324
|
+
# name = ''
|
325
|
+
# response = firestore_client.get_document(name)
|
395
326
|
|
396
327
|
def get_document \
|
397
328
|
name,
|
@@ -468,18 +399,20 @@ module Google
|
|
468
399
|
# require "google/cloud/firestore/v1"
|
469
400
|
#
|
470
401
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
471
|
-
#
|
402
|
+
#
|
403
|
+
# # TODO: Initialize `parent`:
|
404
|
+
# parent = ''
|
472
405
|
#
|
473
406
|
# # TODO: Initialize `collection_id`:
|
474
407
|
# collection_id = ''
|
475
408
|
#
|
476
409
|
# # Iterate over all results.
|
477
|
-
# firestore_client.list_documents(
|
410
|
+
# firestore_client.list_documents(parent, collection_id).each do |element|
|
478
411
|
# # Process element.
|
479
412
|
# end
|
480
413
|
#
|
481
414
|
# # Or iterate over results one page at a time.
|
482
|
-
# firestore_client.list_documents(
|
415
|
+
# firestore_client.list_documents(parent, collection_id).each_page do |page|
|
483
416
|
# # Process each page at a time.
|
484
417
|
# page.each do |element|
|
485
418
|
# # Process element.
|
@@ -519,14 +452,14 @@ module Google
|
|
519
452
|
# `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`
|
520
453
|
# @param collection_id [String]
|
521
454
|
# Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`.
|
522
|
-
# @param document_id [String]
|
523
|
-
# The client-assigned document ID to use for this document.
|
524
|
-
#
|
525
|
-
# Optional. If not specified, an ID will be assigned by the service.
|
526
455
|
# @param document [Google::Firestore::V1::Document | Hash]
|
527
456
|
# Required. The document to create. `name` must not be set.
|
528
457
|
# A hash of the same form as `Google::Firestore::V1::Document`
|
529
458
|
# can also be provided.
|
459
|
+
# @param document_id [String]
|
460
|
+
# The client-assigned document ID to use for this document.
|
461
|
+
#
|
462
|
+
# Optional. If not specified, an ID will be assigned by the service.
|
530
463
|
# @param mask [Google::Firestore::V1::DocumentMask | Hash]
|
531
464
|
# The fields to return. If not set, returns all fields.
|
532
465
|
#
|
@@ -546,31 +479,30 @@ module Google
|
|
546
479
|
# require "google/cloud/firestore/v1"
|
547
480
|
#
|
548
481
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
549
|
-
#
|
482
|
+
#
|
483
|
+
# # TODO: Initialize `parent`:
|
484
|
+
# parent = ''
|
550
485
|
#
|
551
486
|
# # TODO: Initialize `collection_id`:
|
552
487
|
# collection_id = ''
|
553
488
|
#
|
554
|
-
# # TODO: Initialize `document_id`:
|
555
|
-
# document_id = ''
|
556
|
-
#
|
557
489
|
# # TODO: Initialize `document`:
|
558
490
|
# document = {}
|
559
|
-
# response = firestore_client.create_document(
|
491
|
+
# response = firestore_client.create_document(parent, collection_id, document)
|
560
492
|
|
561
493
|
def create_document \
|
562
494
|
parent,
|
563
495
|
collection_id,
|
564
|
-
document_id,
|
565
496
|
document,
|
497
|
+
document_id: nil,
|
566
498
|
mask: nil,
|
567
499
|
options: nil,
|
568
500
|
&block
|
569
501
|
req = {
|
570
502
|
parent: parent,
|
571
503
|
collection_id: collection_id,
|
572
|
-
document_id: document_id,
|
573
504
|
document: document,
|
505
|
+
document_id: document_id,
|
574
506
|
mask: mask
|
575
507
|
}.delete_if { |_, v| v.nil? }
|
576
508
|
req = Google::Gax::to_proto(req, Google::Firestore::V1::CreateDocumentRequest)
|
@@ -621,14 +553,11 @@ module Google
|
|
621
553
|
#
|
622
554
|
# # TODO: Initialize `document`:
|
623
555
|
# document = {}
|
624
|
-
#
|
625
|
-
# # TODO: Initialize `update_mask`:
|
626
|
-
# update_mask = {}
|
627
|
-
# response = firestore_client.update_document(document, update_mask)
|
556
|
+
# response = firestore_client.update_document(document)
|
628
557
|
|
629
558
|
def update_document \
|
630
559
|
document,
|
631
|
-
update_mask,
|
560
|
+
update_mask: nil,
|
632
561
|
mask: nil,
|
633
562
|
current_document: nil,
|
634
563
|
options: nil,
|
@@ -664,8 +593,10 @@ module Google
|
|
664
593
|
# require "google/cloud/firestore/v1"
|
665
594
|
#
|
666
595
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
667
|
-
#
|
668
|
-
#
|
596
|
+
#
|
597
|
+
# # TODO: Initialize `name`:
|
598
|
+
# name = ''
|
599
|
+
# firestore_client.delete_document(name)
|
669
600
|
|
670
601
|
def delete_document \
|
671
602
|
name,
|
@@ -726,17 +657,16 @@ module Google
|
|
726
657
|
# require "google/cloud/firestore/v1"
|
727
658
|
#
|
728
659
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
729
|
-
# formatted_database = Google::Cloud::Firestore::V1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
|
730
660
|
#
|
731
|
-
# # TODO: Initialize `
|
732
|
-
#
|
733
|
-
# firestore_client.batch_get_documents(
|
661
|
+
# # TODO: Initialize `database`:
|
662
|
+
# database = ''
|
663
|
+
# firestore_client.batch_get_documents(database).each do |element|
|
734
664
|
# # Process element.
|
735
665
|
# end
|
736
666
|
|
737
667
|
def batch_get_documents \
|
738
668
|
database,
|
739
|
-
documents,
|
669
|
+
documents: nil,
|
740
670
|
mask: nil,
|
741
671
|
transaction: nil,
|
742
672
|
new_transaction: nil,
|
@@ -776,8 +706,10 @@ module Google
|
|
776
706
|
# require "google/cloud/firestore/v1"
|
777
707
|
#
|
778
708
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
779
|
-
#
|
780
|
-
#
|
709
|
+
#
|
710
|
+
# # TODO: Initialize `database`:
|
711
|
+
# database = ''
|
712
|
+
# response = firestore_client.begin_transaction(database)
|
781
713
|
|
782
714
|
def begin_transaction \
|
783
715
|
database,
|
@@ -817,15 +749,14 @@ module Google
|
|
817
749
|
# require "google/cloud/firestore/v1"
|
818
750
|
#
|
819
751
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
820
|
-
# formatted_database = Google::Cloud::Firestore::V1::FirestoreClient.database_root_path("[PROJECT]", "[DATABASE]")
|
821
752
|
#
|
822
|
-
# # TODO: Initialize `
|
823
|
-
#
|
824
|
-
# response = firestore_client.commit(
|
753
|
+
# # TODO: Initialize `database`:
|
754
|
+
# database = ''
|
755
|
+
# response = firestore_client.commit(database)
|
825
756
|
|
826
757
|
def commit \
|
827
758
|
database,
|
828
|
-
writes,
|
759
|
+
writes: nil,
|
829
760
|
transaction: nil,
|
830
761
|
options: nil,
|
831
762
|
&block
|
@@ -856,11 +787,13 @@ module Google
|
|
856
787
|
# require "google/cloud/firestore/v1"
|
857
788
|
#
|
858
789
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
859
|
-
#
|
790
|
+
#
|
791
|
+
# # TODO: Initialize `database`:
|
792
|
+
# database = ''
|
860
793
|
#
|
861
794
|
# # TODO: Initialize `transaction`:
|
862
795
|
# transaction = ''
|
863
|
-
# firestore_client.rollback(
|
796
|
+
# firestore_client.rollback(database, transaction)
|
864
797
|
|
865
798
|
def rollback \
|
866
799
|
database,
|
@@ -914,8 +847,10 @@ module Google
|
|
914
847
|
# require "google/cloud/firestore/v1"
|
915
848
|
#
|
916
849
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
917
|
-
#
|
918
|
-
#
|
850
|
+
#
|
851
|
+
# # TODO: Initialize `parent`:
|
852
|
+
# parent = ''
|
853
|
+
# firestore_client.run_query(parent).each do |element|
|
919
854
|
# # Process element.
|
920
855
|
# end
|
921
856
|
|
@@ -958,8 +893,10 @@ module Google
|
|
958
893
|
# require "google/cloud/firestore/v1"
|
959
894
|
#
|
960
895
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
961
|
-
#
|
962
|
-
#
|
896
|
+
#
|
897
|
+
# # TODO: Initialize `database`:
|
898
|
+
# database = ''
|
899
|
+
# request = { database: database }
|
963
900
|
# requests = [request]
|
964
901
|
# firestore_client.write(requests).each do |element|
|
965
902
|
# # Process element.
|
@@ -993,8 +930,10 @@ module Google
|
|
993
930
|
# require "google/cloud/firestore/v1"
|
994
931
|
#
|
995
932
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
996
|
-
#
|
997
|
-
#
|
933
|
+
#
|
934
|
+
# # TODO: Initialize `database`:
|
935
|
+
# database = ''
|
936
|
+
# request = { database: database }
|
998
937
|
# requests = [request]
|
999
938
|
# firestore_client.listen(requests).each do |element|
|
1000
939
|
# # Process element.
|
@@ -1036,15 +975,17 @@ module Google
|
|
1036
975
|
# require "google/cloud/firestore/v1"
|
1037
976
|
#
|
1038
977
|
# firestore_client = Google::Cloud::Firestore::V1.new
|
1039
|
-
#
|
978
|
+
#
|
979
|
+
# # TODO: Initialize `parent`:
|
980
|
+
# parent = ''
|
1040
981
|
#
|
1041
982
|
# # Iterate over all results.
|
1042
|
-
# firestore_client.list_collection_ids(
|
983
|
+
# firestore_client.list_collection_ids(parent).each do |element|
|
1043
984
|
# # Process element.
|
1044
985
|
# end
|
1045
986
|
#
|
1046
987
|
# # Or iterate over results one page at a time.
|
1047
|
-
# firestore_client.list_collection_ids(
|
988
|
+
# firestore_client.list_collection_ids(parent).each_page do |page|
|
1048
989
|
# # Process each page at a time.
|
1049
990
|
# page.each do |element|
|
1050
991
|
# # Process element.
|