Skip to content

Commit 6d50577

Browse files
committed
added to_dict to SearchOptions
1 parent 5a0a5f2 commit 6d50577

File tree

1 file changed

+25
-24
lines changed

1 file changed

+25
-24
lines changed

packages/google-cloud-firestore/google/cloud/firestore_v1/pipeline_stages.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,30 @@ def __repr__(self):
191191
args.append(f"language_code={self.language_code!r}")
192192
return f"{self.__class__.__name__}({', '.join(args)})"
193193

194+
def _to_dict(self) -> dict[str, Value]:
195+
options = {"query": self.query._to_pb()}
196+
if self.limit is not None:
197+
options["limit"] = Value(integer_value=self.limit)
198+
if self.retrieval_depth is not None:
199+
options["retrieval_depth"] = Value(integer_value=self.retrieval_depth)
200+
if self.sort is not None:
201+
options["sort"] = Value(
202+
array_value={"values": [s._to_pb() for s in self.sort]}
203+
)
204+
if self.add_fields is not None:
205+
options["add_fields"] = Selectable._to_value(self.add_fields)
206+
if self.select is not None:
207+
options["select"] = Selectable._to_value(self.select)
208+
if self.offset is not None:
209+
options["offset"] = Value(integer_value=self.offset)
210+
if self.query_enhancement is not None:
211+
options["query_enhancement"] = Value(
212+
string_value=self.query_enhancement.value
213+
)
214+
if self.language_code is not None:
215+
options["language_code"] = Value(string_value=self.language_code)
216+
return options
217+
194218

195219
class UnnestOptions:
196220
"""Options for configuring the `Unnest` pipeline stage.
@@ -517,30 +541,7 @@ def _pb_args(self) -> list[Value]:
517541
return []
518542

519543
def _pb_options(self) -> dict[str, Value]:
520-
options = {"query": self.options.query._to_pb()}
521-
if self.options.limit is not None:
522-
options["limit"] = Value(integer_value=self.options.limit)
523-
if self.options.retrieval_depth is not None:
524-
options["retrieval_depth"] = Value(
525-
integer_value=self.options.retrieval_depth
526-
)
527-
if self.options.sort is not None:
528-
options["sort"] = Value(
529-
array_value={"values": [s._to_pb() for s in self.options.sort]}
530-
)
531-
if self.options.add_fields is not None:
532-
options["add_fields"] = Selectable._to_value(self.options.add_fields)
533-
if self.options.select is not None:
534-
options["select"] = Selectable._to_value(self.options.select)
535-
if self.options.offset is not None:
536-
options["offset"] = Value(integer_value=self.options.offset)
537-
if self.options.query_enhancement is not None:
538-
options["query_enhancement"] = Value(
539-
string_value=self.options.query_enhancement.value
540-
)
541-
if self.options.language_code is not None:
542-
options["language_code"] = Value(string_value=self.options.language_code)
543-
return options
544+
return self.options._to_dict()
544545

545546

546547
class Select(Stage):

0 commit comments

Comments
 (0)