From a441190635d494f128cf02e07566ae2003af4e08 Mon Sep 17 00:00:00 2001 From: zxu Date: Tue, 6 Feb 2018 13:51:11 -0500 Subject: Implement Firestore DatabaseInfo and port both Database{Id,Info} C++ to the iOS code (#738) * implement Firestore DatabaseInfo in C++ * temporary stash changes; blocking on the massive renaming of .m to .mm * add database_info_test to project * finish port DatabaseId and fix style, modular fixing DatabaseInfo * port DatabaseInfo * remove FSTDatabase{ID,Info} and their tests from project * fix unit test * use namespace alias * use namespace alias, leftover * address more changes * refactoring to use raw pointer instead of value for property * address changes * remove self-> * fix style * remove the name suffix Alloc * fix a bug --- Firestore/Source/Local/FSTLevelDB.mm | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'Firestore/Source/Local/FSTLevelDB.mm') diff --git a/Firestore/Source/Local/FSTLevelDB.mm b/Firestore/Source/Local/FSTLevelDB.mm index d163ed5..7fb3a66 100644 --- a/Firestore/Source/Local/FSTLevelDB.mm +++ b/Firestore/Source/Local/FSTLevelDB.mm @@ -19,18 +19,24 @@ #include #import "FIRFirestoreErrors.h" -#import "Firestore/Source/Core/FSTDatabaseInfo.h" #import "Firestore/Source/Local/FSTLevelDBMigrations.h" #import "Firestore/Source/Local/FSTLevelDBMutationQueue.h" #import "Firestore/Source/Local/FSTLevelDBQueryCache.h" #import "Firestore/Source/Local/FSTLevelDBRemoteDocumentCache.h" #import "Firestore/Source/Local/FSTWriteGroup.h" #import "Firestore/Source/Local/FSTWriteGroupTracker.h" -#import "Firestore/Source/Model/FSTDatabaseID.h" #import "Firestore/Source/Remote/FSTSerializerBeta.h" #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTLogger.h" +#include "Firestore/core/src/firebase/firestore/core/database_info.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::core::DatabaseInfo; +using firebase::firestore::model::DatabaseId; + NS_ASSUME_NONNULL_BEGIN static NSString *const kReservedPathComponent = @"firestore"; @@ -89,7 +95,7 @@ using leveldb::WriteOptions; #endif } -+ (NSString *)storageDirectoryForDatabaseInfo:(FSTDatabaseInfo *)databaseInfo ++ (NSString *)storageDirectoryForDatabaseInfo:(const DatabaseInfo &)databaseInfo documentsDirectory:(NSString *)documentsDirectory { // Use two different path formats: // @@ -99,11 +105,14 @@ using leveldb::WriteOptions; // projectIDs are DNS-compatible names and cannot contain dots so there's // no danger of collisions. NSString *directory = documentsDirectory; - directory = [directory stringByAppendingPathComponent:databaseInfo.persistenceKey]; - - NSString *segment = databaseInfo.databaseID.projectID; - if (![databaseInfo.databaseID isDefaultDatabase]) { - segment = [NSString stringWithFormat:@"%@.%@", segment, databaseInfo.databaseID.databaseID]; + directory = [directory + stringByAppendingPathComponent:util::WrapNSStringNoCopy(databaseInfo.persistence_key())]; + + NSString *segment = util::WrapNSStringNoCopy(databaseInfo.database_id().project_id()); + if (!databaseInfo.database_id().IsDefaultDatabase()) { + segment = [NSString + stringWithFormat:@"%@.%@", segment, + util::WrapNSStringNoCopy(databaseInfo.database_id().database_id())]; } directory = [directory stringByAppendingPathComponent:segment]; -- cgit v1.2.3