diff options
Diffstat (limited to 'Firestore/Source/API/FSTUserDataConverter.mm')
-rw-r--r-- | Firestore/Source/API/FSTUserDataConverter.mm | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/Firestore/Source/API/FSTUserDataConverter.mm b/Firestore/Source/API/FSTUserDataConverter.mm index 414aadb..80d4625 100644 --- a/Firestore/Source/API/FSTUserDataConverter.mm +++ b/Firestore/Source/API/FSTUserDataConverter.mm @@ -23,7 +23,6 @@ #import "Firestore/Source/API/FIRFirestore+Internal.h" #import "Firestore/Source/API/FIRSetOptions+Internal.h" #import "Firestore/Source/Core/FSTTimestamp.h" -#import "Firestore/Source/Model/FSTDatabaseID.h" #import "Firestore/Source/Model/FSTDocumentKey.h" #import "Firestore/Source/Model/FSTFieldValue.h" #import "Firestore/Source/Model/FSTMutation.h" @@ -31,6 +30,12 @@ #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTUsageValidation.h" +#include "Firestore/core/src/firebase/firestore/model/database_id.h" +#include "Firestore/core/src/firebase/firestore/util/string_apple.h" + +namespace util = firebase::firestore::util; +using firebase::firestore::model::DatabaseId; + NS_ASSUME_NONNULL_BEGIN static NSString *const RESERVED_FIELD_DESIGNATOR = @"__"; @@ -271,7 +276,7 @@ typedef NS_ENUM(NSInteger, FSTUserDataSource) { @implementation FSTDocumentKeyReference -- (instancetype)initWithKey:(FSTDocumentKey *)key databaseID:(FSTDatabaseID *)databaseID { +- (instancetype)initWithKey:(FSTDocumentKey *)key databaseID:(const DatabaseId *)databaseID { self = [super init]; if (self) { _key = key; @@ -285,13 +290,14 @@ typedef NS_ENUM(NSInteger, FSTUserDataSource) { #pragma mark - FSTUserDataConverter @interface FSTUserDataConverter () -@property(strong, nonatomic, readonly) FSTDatabaseID *databaseID; +// Does not own the DatabaseId instance. +@property(assign, nonatomic, readonly) const DatabaseId *databaseID; @property(strong, nonatomic, readonly) FSTPreConverterBlock preConverter; @end @implementation FSTUserDataConverter -- (instancetype)initWithDatabaseID:(FSTDatabaseID *)databaseID +- (instancetype)initWithDatabaseID:(const DatabaseId *)databaseID preConverter:(FSTPreConverterBlock)preConverter { self = [super init]; if (self) { @@ -540,12 +546,14 @@ typedef NS_ENUM(NSInteger, FSTUserDataSource) { } else if ([input isKindOfClass:[FSTDocumentKeyReference class]]) { FSTDocumentKeyReference *reference = input; - if (![reference.databaseID isEqual:self.databaseID]) { - FSTDatabaseID *other = reference.databaseID; + if (*reference.databaseID != *self.databaseID) { + const DatabaseId *other = reference.databaseID; FSTThrowInvalidArgument( @"Document Reference is for database %@/%@ but should be for database %@/%@%@", - other.projectID, other.databaseID, self.databaseID.projectID, self.databaseID.databaseID, - [context fieldDescription]); + util::WrapNSStringNoCopy(other->project_id()), + util::WrapNSStringNoCopy(other->database_id()), + util::WrapNSStringNoCopy(self.databaseID->project_id()), + util::WrapNSStringNoCopy(self.databaseID->database_id()), [context fieldDescription]); } return [FSTReferenceValue referenceValue:reference.key databaseID:self.databaseID]; |