28
28
#include " Firestore/core/src/api/expressions.h"
29
29
#include " Firestore/core/src/api/ordering.h"
30
30
#include " Firestore/core/src/model/model_fwd.h"
31
+ #include " Firestore/core/src/model/resource_path.h"
31
32
#include " Firestore/core/src/nanopb/message.h"
32
33
33
34
namespace firebase {
@@ -65,25 +66,29 @@ class EvaluableStage : public Stage {
65
66
EvaluableStage () = default ;
66
67
virtual ~EvaluableStage () = default ;
67
68
69
+ virtual absl::string_view name () const = 0;
68
70
virtual model::PipelineInputOutputVector Evaluate (
69
71
const EvaluateContext& context,
70
72
const model::PipelineInputOutputVector& inputs) const = 0;
71
73
};
72
74
73
75
class CollectionSource : public EvaluableStage {
74
76
public:
75
- explicit CollectionSource (std::string path) : path_(std::move(path)) {
76
- }
77
+ explicit CollectionSource (std::string path);
77
78
~CollectionSource () override = default ;
78
79
79
80
google_firestore_v1_Pipeline_Stage to_proto () const override ;
80
81
82
+ absl::string_view name () const override {
83
+ return " collection" ;
84
+ }
85
+
81
86
model::PipelineInputOutputVector Evaluate (
82
87
const EvaluateContext& context,
83
88
const model::PipelineInputOutputVector& inputs) const override ;
84
89
85
90
private:
86
- std::string path_;
91
+ model::ResourcePath path_;
87
92
};
88
93
89
94
class DatabaseSource : public EvaluableStage {
@@ -92,6 +97,11 @@ class DatabaseSource : public EvaluableStage {
92
97
~DatabaseSource () override = default ;
93
98
94
99
google_firestore_v1_Pipeline_Stage to_proto () const override ;
100
+
101
+ absl::string_view name () const override {
102
+ return " database" ;
103
+ }
104
+
95
105
model::PipelineInputOutputVector Evaluate (
96
106
const EvaluateContext& context,
97
107
const model::PipelineInputOutputVector& inputs) const override ;
@@ -106,6 +116,14 @@ class CollectionGroupSource : public EvaluableStage {
106
116
107
117
google_firestore_v1_Pipeline_Stage to_proto () const override ;
108
118
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
+
109
127
private:
110
128
std::string collection_id_;
111
129
};
@@ -119,6 +137,10 @@ class DocumentsSource : public EvaluableStage {
119
137
120
138
google_firestore_v1_Pipeline_Stage to_proto () const override ;
121
139
140
+ absl::string_view name () const override {
141
+ return " documents" ;
142
+ }
143
+
122
144
private:
123
145
std::vector<std::string> documents_;
124
146
};
@@ -158,6 +180,11 @@ class Where : public EvaluableStage {
158
180
~Where () override = default ;
159
181
160
182
google_firestore_v1_Pipeline_Stage to_proto () const override ;
183
+
184
+ absl::string_view name () const override {
185
+ return " where" ;
186
+ }
187
+
161
188
model::PipelineInputOutputVector Evaluate (
162
189
const EvaluateContext& context,
163
190
const model::PipelineInputOutputVector& inputs) const override ;
@@ -213,6 +240,11 @@ class LimitStage : public EvaluableStage {
213
240
~LimitStage () override = default ;
214
241
215
242
google_firestore_v1_Pipeline_Stage to_proto () const override ;
243
+
244
+ absl::string_view name () const override {
245
+ return " limit" ;
246
+ }
247
+
216
248
model::PipelineInputOutputVector Evaluate (
217
249
const EvaluateContext& context,
218
250
const model::PipelineInputOutputVector& inputs) const override ;
@@ -255,6 +287,18 @@ class SortStage : public EvaluableStage {
255
287
256
288
google_firestore_v1_Pipeline_Stage to_proto () const override ;
257
289
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
+
258
302
private:
259
303
std::vector<Ordering> orders_;
260
304
};
0 commit comments