File tree Expand file tree Collapse file tree
modules/ensemble/lib/framework/apiproviders/firestore Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -274,7 +274,6 @@ class FirestoreAPIProvider extends APIProvider with LiveAPIProvider {
274274 'message' : 'Subscribed to API' ,
275275 'documents' : []
276276 };
277- ;
278277 return FirestoreResponse (
279278 apiState: APIState .success,
280279 body: body,
Original file line number Diff line number Diff line change @@ -149,9 +149,27 @@ class FirestoreApp {
149149
150150 Future <void > performSetOperation (Map evaluatedApi) async {
151151 String path = evaluatedApi['path' ];
152- Map <String , dynamic > data = EnsembleFieldValue .prepareToSendToFirestore (evaluatedApi['data' ]);
152+ Map <String , dynamic > data =
153+ EnsembleFieldValue .prepareToSendToFirestore (evaluatedApi['data' ]);
153154 DocumentReference docRef = firestore.doc (path);
154- return await docRef.set (data);
155+
156+ SetOptions ? setOptions;
157+ Map ? mergeOptions = evaluatedApi['mergeOptions' ];
158+
159+ if (mergeOptions != null ) {
160+ bool hasMerge = mergeOptions['merge' ] == true ;
161+ bool hasMergeFields = mergeOptions['mergeFields' ] is List ;
162+
163+ // mergeFields takes priority over merge if both are provided
164+ if (hasMergeFields) {
165+ List <String > fields = List <String >.from (mergeOptions['mergeFields' ]);
166+ setOptions = SetOptions (mergeFields: fields);
167+ } else if (hasMerge) {
168+ setOptions = SetOptions (merge: true );
169+ }
170+ }
171+
172+ return await docRef.set (data, setOptions);
155173 }
156174
157175 Future <void > performUpdateOperation (Map evaluatedApi) async {
You can’t perform that action at this time.
0 commit comments