File tree Expand file tree Collapse file tree 3 files changed +41
-5
lines changed Expand file tree Collapse file tree 3 files changed +41
-5
lines changed Original file line number Diff line number Diff line change @@ -1266,7 +1266,7 @@ class PipelineIntegrationTests: FSTIntegrationTestCase {
1266
1266
1267
1267
// Need to use nullable Sendable for comparison because 'others' is nested
1268
1268
// and the areEqual function handles Sendable?
1269
- expectSnapshots ( snapshot: snapshot, expected: [ expectedBook1Transformed as [ String : Sendable ] ] )
1269
+ expectSnapshots ( snapshot: snapshot, expected: [ expectedBook1Transformed] )
1270
1270
}
1271
1271
1272
1272
// MARK: - Sample Stage Tests
Original file line number Diff line number Diff line change @@ -306,20 +306,37 @@ google_firestore_v1_Pipeline_Stage RemoveFieldsStage::to_proto() const {
306
306
return result;
307
307
}
308
308
309
+ google_firestore_v1_Value ReplaceWith::ReplaceMode::to_proto () const {
310
+ google_firestore_v1_Value result;
311
+ result.which_value_type = google_firestore_v1_Value_string_value_tag;
312
+ switch (mode_) {
313
+ case FULL_REPLACE:
314
+ result.string_value = nanopb::MakeBytesArray (" full_replace" );
315
+ break ;
316
+ case MERGE_PREFER_NEST:
317
+ result.string_value = nanopb::MakeBytesArray (" merge_prefer_nest" );
318
+ break ;
319
+ }
320
+ return result;
321
+ }
322
+
309
323
google_firestore_v1_Pipeline_Stage ReplaceWith::to_proto () const {
310
324
google_firestore_v1_Pipeline_Stage result;
311
325
result.name = nanopb::MakeBytesArray (" replace_with" );
312
326
313
- result.args_count = 1 ;
314
- result.args = nanopb::MakeArray<google_firestore_v1_Value>(1 );
327
+ result.args_count = 2 ;
328
+ result.args = nanopb::MakeArray<google_firestore_v1_Value>(2 );
315
329
result.args [0 ] = expr_->to_proto ();
316
330
331
+ result.args [1 ] = mode_.to_proto ();
332
+
317
333
result.options_count = 0 ;
318
334
result.options = nullptr ;
319
335
return result;
320
336
}
321
337
322
- ReplaceWith::ReplaceWith (std::shared_ptr<Expr> expr) : expr_(std::move(expr)) {
338
+ ReplaceWith::ReplaceWith (std::shared_ptr<Expr> expr, ReplaceMode mode)
339
+ : expr_(std::move(expr)), mode_(mode) {
323
340
}
324
341
325
342
Sample::Sample (std::string type, int64_t count, double percentage)
Original file line number Diff line number Diff line change @@ -252,12 +252,31 @@ class RemoveFieldsStage : public Stage {
252
252
253
253
class ReplaceWith : public Stage {
254
254
public:
255
- explicit ReplaceWith (std::shared_ptr<Expr> expr);
255
+ class ReplaceMode {
256
+ public:
257
+ enum Mode {
258
+ FULL_REPLACE,
259
+ MERGE_PREFER_NEST,
260
+ MERGE_PREFER_PARENT = FULL_REPLACE
261
+ };
262
+
263
+ explicit ReplaceMode (Mode mode) : mode_(mode) {
264
+ }
265
+ google_firestore_v1_Value to_proto () const ;
266
+
267
+ private:
268
+ Mode mode_;
269
+ };
270
+
271
+ explicit ReplaceWith (
272
+ std::shared_ptr<Expr> expr,
273
+ ReplaceMode mode = ReplaceMode(ReplaceMode::Mode::FULL_REPLACE));
256
274
~ReplaceWith () override = default ;
257
275
google_firestore_v1_Pipeline_Stage to_proto () const override ;
258
276
259
277
private:
260
278
std::shared_ptr<Expr> expr_;
279
+ ReplaceMode mode_;
261
280
};
262
281
263
282
class Sample : public Stage {
You can’t perform that action at this time.
0 commit comments