aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/API
diff options
context:
space:
mode:
authorGravatar zxu <zxu@google.com>2018-04-12 21:32:19 -0400
committerGravatar GitHub <noreply@github.com>2018-04-12 21:32:19 -0400
commit2ceea9b66eb8ea516702e1ef409e801fec068682 (patch)
tree31de20fc11306df23b41f373c3768c03f2185359 /Firestore/Source/API
parentac969c721a129e888177756fa2a6ae52af0dd04a (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.mm9
-rw-r--r--Firestore/Source/API/FIRWriteBatch.mm15
-rw-r--r--Firestore/Source/API/FSTUserDataConverter.h8
-rw-r--r--Firestore/Source/API/FSTUserDataConverter.mm6
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