diff options
author | zxu <zxu@google.com> | 2018-04-12 21:32:19 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-12 21:32:19 -0400 |
commit | 2ceea9b66eb8ea516702e1ef409e801fec068682 (patch) | |
tree | 31de20fc11306df23b41f373c3768c03f2185359 /Firestore/Source/API | |
parent | ac969c721a129e888177756fa2a6ae52af0dd04a (diff) |
Port `Precondition` to C++ (#1040)
* port FieldMask to C++
* address changes
* address changes
* fix test
* address change
* Port transform operations (FSTTransformOperation, FSTServerTimestampTransform) to C++
* address changes
* address changes
* address changes
* implement `FieldTransform` in C++
* port `FieldTransform`
* make `fieldTransforms` shared inside `context`
* Implement Precondition in C++ w/o test yet
* add unit test for `Precondition`
* port `Precondition`
* address changes
* address changes
* fix bugs for integration test
* address changes
* fix lint
* address changes
* address changes
Diffstat (limited to 'Firestore/Source/API')
-rw-r--r-- | Firestore/Source/API/FIRDocumentReference.mm | 9 | ||||
-rw-r--r-- | Firestore/Source/API/FIRWriteBatch.mm | 15 | ||||
-rw-r--r-- | Firestore/Source/API/FSTUserDataConverter.h | 8 | ||||
-rw-r--r-- | Firestore/Source/API/FSTUserDataConverter.mm | 6 |
4 files changed, 23 insertions, 15 deletions
diff --git a/Firestore/Source/API/FIRDocumentReference.mm b/Firestore/Source/API/FIRDocumentReference.mm index 67e401d..9fb4541 100644 --- a/Firestore/Source/API/FIRDocumentReference.mm +++ b/Firestore/Source/API/FIRDocumentReference.mm @@ -41,11 +41,13 @@ #import "Firestore/Source/Util/FSTUsageValidation.h" #include "Firestore/core/src/firebase/firestore/model/document_key.h" +#include "Firestore/core/src/firebase/firestore/model/precondition.h" #include "Firestore/core/src/firebase/firestore/model/resource_path.h" #include "Firestore/core/src/firebase/firestore/util/string_apple.h" namespace util = firebase::firestore::util; using firebase::firestore::model::DocumentKey; +using firebase::firestore::model::Precondition; using firebase::firestore::model::ResourcePath; NS_ASSUME_NONNULL_BEGIN @@ -168,7 +170,7 @@ NS_ASSUME_NONNULL_BEGIN ? [self.firestore.dataConverter parsedMergeData:documentData] : [self.firestore.dataConverter parsedSetData:documentData]; return [self.firestore.client - writeMutations:[parsed mutationsWithKey:self.key precondition:[FSTPrecondition none]] + writeMutations:[parsed mutationsWithKey:self.key precondition:Precondition::None()] completion:completion]; } @@ -180,8 +182,7 @@ NS_ASSUME_NONNULL_BEGIN completion:(nullable void (^)(NSError *_Nullable error))completion { FSTParsedUpdateData *parsed = [self.firestore.dataConverter parsedUpdateData:fields]; return [self.firestore.client - writeMutations:[parsed mutationsWithKey:self.key - precondition:[FSTPrecondition preconditionWithExists:YES]] + writeMutations:[parsed mutationsWithKey:self.key precondition:Precondition::Exists(true)] completion:completion]; } @@ -191,7 +192,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)deleteDocumentWithCompletion:(nullable void (^)(NSError *_Nullable error))completion { FSTDeleteMutation *mutation = - [[FSTDeleteMutation alloc] initWithKey:self.key precondition:[FSTPrecondition none]]; + [[FSTDeleteMutation alloc] initWithKey:self.key precondition:Precondition::None()]; return [self.firestore.client writeMutations:@[ mutation ] completion:completion]; } diff --git a/Firestore/Source/API/FIRWriteBatch.mm b/Firestore/Source/API/FIRWriteBatch.mm index b1cfa09..df6e5e0 100644 --- a/Firestore/Source/API/FIRWriteBatch.mm +++ b/Firestore/Source/API/FIRWriteBatch.mm @@ -24,6 +24,10 @@ #import "Firestore/Source/Model/FSTMutation.h" #import "Firestore/Source/Util/FSTUsageValidation.h" +#include "Firestore/core/src/firebase/firestore/model/precondition.h" + +using firebase::firestore::model::Precondition; + NS_ASSUME_NONNULL_BEGIN #pragma mark - FIRWriteBatch @@ -69,8 +73,8 @@ NS_ASSUME_NONNULL_BEGIN [self validateReference:document]; FSTParsedSetData *parsed = options.isMerge ? [self.firestore.dataConverter parsedMergeData:data] : [self.firestore.dataConverter parsedSetData:data]; - [self.mutations addObjectsFromArray:[parsed mutationsWithKey:document.key - precondition:[FSTPrecondition none]]]; + [self.mutations + addObjectsFromArray:[parsed mutationsWithKey:document.key precondition:Precondition::None()]]; return self; } @@ -79,9 +83,8 @@ NS_ASSUME_NONNULL_BEGIN [self verifyNotCommitted]; [self validateReference:document]; FSTParsedUpdateData *parsed = [self.firestore.dataConverter parsedUpdateData:fields]; - [self.mutations - addObjectsFromArray:[parsed mutationsWithKey:document.key - precondition:[FSTPrecondition preconditionWithExists:YES]]]; + [self.mutations addObjectsFromArray:[parsed mutationsWithKey:document.key + precondition:Precondition::Exists(true)]]; return self; } @@ -89,7 +92,7 @@ NS_ASSUME_NONNULL_BEGIN [self verifyNotCommitted]; [self validateReference:document]; [self.mutations addObject:[[FSTDeleteMutation alloc] initWithKey:document.key - precondition:[FSTPrecondition none]]]; + precondition:Precondition::None()]]; return self; } diff --git a/Firestore/Source/API/FSTUserDataConverter.h b/Firestore/Source/API/FSTUserDataConverter.h index a2f947a..ea20b3e 100644 --- a/Firestore/Source/API/FSTUserDataConverter.h +++ b/Firestore/Source/API/FSTUserDataConverter.h @@ -22,12 +22,12 @@ #include "Firestore/core/src/firebase/firestore/model/document_key.h" #include "Firestore/core/src/firebase/firestore/model/field_mask.h" #include "Firestore/core/src/firebase/firestore/model/field_transform.h" +#include "Firestore/core/src/firebase/firestore/model/precondition.h" @class FIRSetOptions; @class FSTObjectValue; @class FSTFieldValue; @class FSTMutation; -@class FSTPrecondition; @class FSTSnapshotVersion; NS_ASSUME_NONNULL_BEGIN @@ -58,7 +58,8 @@ NS_ASSUME_NONNULL_BEGIN * field transforms) using the specified document key and precondition. */ - (NSArray<FSTMutation *> *)mutationsWithKey:(const firebase::firestore::model::DocumentKey &)key - precondition:(FSTPrecondition *)precondition; + precondition: + (const firebase::firestore::model::Precondition &)precondition; @end @@ -83,7 +84,8 @@ NS_ASSUME_NONNULL_BEGIN * field transforms) using the specified document key and precondition. */ - (NSArray<FSTMutation *> *)mutationsWithKey:(const firebase::firestore::model::DocumentKey &)key - precondition:(FSTPrecondition *)precondition; + precondition: + (const firebase::firestore::model::Precondition &)precondition; @end diff --git a/Firestore/Source/API/FSTUserDataConverter.mm b/Firestore/Source/API/FSTUserDataConverter.mm index 6320e83..dff9235 100644 --- a/Firestore/Source/API/FSTUserDataConverter.mm +++ b/Firestore/Source/API/FSTUserDataConverter.mm @@ -38,6 +38,7 @@ #include "Firestore/core/src/firebase/firestore/model/field_mask.h" #include "Firestore/core/src/firebase/firestore/model/field_path.h" #include "Firestore/core/src/firebase/firestore/model/field_transform.h" +#include "Firestore/core/src/firebase/firestore/model/precondition.h" #include "Firestore/core/src/firebase/firestore/model/transform_operations.h" #include "Firestore/core/src/firebase/firestore/util/string_apple.h" #include "absl/memory/memory.h" @@ -48,6 +49,7 @@ using firebase::firestore::model::DocumentKey; using firebase::firestore::model::FieldMask; using firebase::firestore::model::FieldPath; using firebase::firestore::model::FieldTransform; +using firebase::firestore::model::Precondition; using firebase::firestore::model::ServerTimestampTransform; using firebase::firestore::model::TransformOperation; @@ -91,7 +93,7 @@ static NSString *const RESERVED_FIELD_DESIGNATOR = @"__"; } - (NSArray<FSTMutation *> *)mutationsWithKey:(const DocumentKey &)key - precondition:(FSTPrecondition *)precondition { + precondition:(const Precondition &)precondition { NSMutableArray<FSTMutation *> *mutations = [NSMutableArray array]; if (self.isPatch) { [mutations addObject:[[FSTPatchMutation alloc] initWithKey:key @@ -132,7 +134,7 @@ static NSString *const RESERVED_FIELD_DESIGNATOR = @"__"; } - (NSArray<FSTMutation *> *)mutationsWithKey:(const DocumentKey &)key - precondition:(FSTPrecondition *)precondition { + precondition:(const Precondition &)precondition { NSMutableArray<FSTMutation *> *mutations = [NSMutableArray array]; [mutations addObject:[[FSTPatchMutation alloc] initWithKey:key fieldMask:self.fieldMask |