2828#include " Firestore/core/src/api/expressions.h"
2929#include " Firestore/core/src/api/ordering.h"
3030#include " Firestore/core/src/model/model_fwd.h"
31+ #include " Firestore/core/src/model/resource_path.h"
3132#include " Firestore/core/src/nanopb/message.h"
3233
3334namespace firebase {
@@ -65,25 +66,29 @@ class EvaluableStage : public Stage {
6566 EvaluableStage () = default ;
6667 virtual ~EvaluableStage () = default ;
6768
69+ virtual absl::string_view name () const = 0;
6870 virtual model::PipelineInputOutputVector Evaluate (
6971 const EvaluateContext& context,
7072 const model::PipelineInputOutputVector& inputs) const = 0;
7173};
7274
7375class CollectionSource : public EvaluableStage {
7476 public:
75- explicit CollectionSource (std::string path) : path_(std::move(path)) {
76- }
77+ explicit CollectionSource (std::string path);
7778 ~CollectionSource () override = default ;
7879
7980 google_firestore_v1_Pipeline_Stage to_proto () const override ;
8081
82+ absl::string_view name () const override {
83+ return " collection" ;
84+ }
85+
8186 model::PipelineInputOutputVector Evaluate (
8287 const EvaluateContext& context,
8388 const model::PipelineInputOutputVector& inputs) const override ;
8489
8590 private:
86- std::string path_;
91+ model::ResourcePath path_;
8792};
8893
8994class DatabaseSource : public EvaluableStage {
@@ -92,6 +97,11 @@ class DatabaseSource : public EvaluableStage {
9297 ~DatabaseSource () override = default ;
9398
9499 google_firestore_v1_Pipeline_Stage to_proto () const override ;
100+
101+ absl::string_view name () const override {
102+ return " database" ;
103+ }
104+
95105 model::PipelineInputOutputVector Evaluate (
96106 const EvaluateContext& context,
97107 const model::PipelineInputOutputVector& inputs) const override ;
@@ -106,6 +116,14 @@ class CollectionGroupSource : public EvaluableStage {
106116
107117 google_firestore_v1_Pipeline_Stage to_proto () const override ;
108118
119+ absl::string_view name () const override {
120+ return " collection_group" ;
121+ }
122+
123+ model::PipelineInputOutputVector Evaluate (
124+ const EvaluateContext& context,
125+ const model::PipelineInputOutputVector& inputs) const override ;
126+
109127 private:
110128 std::string collection_id_;
111129};
@@ -119,6 +137,10 @@ class DocumentsSource : public EvaluableStage {
119137
120138 google_firestore_v1_Pipeline_Stage to_proto () const override ;
121139
140+ absl::string_view name () const override {
141+ return " documents" ;
142+ }
143+
122144 private:
123145 std::vector<std::string> documents_;
124146};
@@ -158,6 +180,11 @@ class Where : public EvaluableStage {
158180 ~Where () override = default ;
159181
160182 google_firestore_v1_Pipeline_Stage to_proto () const override ;
183+
184+ absl::string_view name () const override {
185+ return " where" ;
186+ }
187+
161188 model::PipelineInputOutputVector Evaluate (
162189 const EvaluateContext& context,
163190 const model::PipelineInputOutputVector& inputs) const override ;
@@ -213,6 +240,11 @@ class LimitStage : public EvaluableStage {
213240 ~LimitStage () override = default ;
214241
215242 google_firestore_v1_Pipeline_Stage to_proto () const override ;
243+
244+ absl::string_view name () const override {
245+ return " limit" ;
246+ }
247+
216248 model::PipelineInputOutputVector Evaluate (
217249 const EvaluateContext& context,
218250 const model::PipelineInputOutputVector& inputs) const override ;
@@ -255,6 +287,18 @@ class SortStage : public EvaluableStage {
255287
256288 google_firestore_v1_Pipeline_Stage to_proto () const override ;
257289
290+ absl::string_view name () const override {
291+ return " sort" ;
292+ }
293+
294+ model::PipelineInputOutputVector Evaluate (
295+ const EvaluateContext& context,
296+ const model::PipelineInputOutputVector& inputs) const override ;
297+
298+ const std::vector<Ordering>& orders () const {
299+ return orders_;
300+ }
301+
258302 private:
259303 std::vector<Ordering> orders_;
260304};
0 commit comments