diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h --- a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h +++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.h @@ -15,7 +15,8 @@ // Connection manager instance, should be only one (globally) to each // database. - static std::shared_ptr connectionManager; + // DatabaseIdentifier::MAIN connectionManager. + static std::shared_ptr mainConnectionManager; // Indicate that at least one instance of SQLiteQueryExecutor was created, // which is identical to finishing the migration process and having a fully diff --git a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp --- a/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp +++ b/native/cpp/CommonCpp/DatabaseManagers/DatabaseManager.cpp @@ -22,7 +22,7 @@ const int DatabaseManager::backupLogDataKeySize = 32; std::shared_ptr - DatabaseManager::connectionManager; + DatabaseManager::mainConnectionManager; std::once_flag DatabaseManager::queryExecutorCreationIndicated; std::once_flag DatabaseManager::sqliteQueryExecutorPropertiesInitialized; @@ -36,20 +36,21 @@ const std::string DATABASE_MANAGER_STATUS_KEY = "DATABASE_MANAGER_STATUS"; const DatabaseQueryExecutor &DatabaseManager::getQueryExecutor() { - thread_local SQLiteQueryExecutor instance(DatabaseManager::connectionManager); + thread_local SQLiteQueryExecutor mainQueryExecutor( + DatabaseManager::mainConnectionManager); // Creating an instance means the migration code was executed and finished // without error, and the database is workable. We also want to start // monitoring logs when this device should handle backup. std::call_once(DatabaseManager::queryExecutorCreationIndicated, []() { DatabaseManager::indicateQueryExecutorCreation(); - std::string currentBackupID = instance.getMetadata("backupID"); + std::string currentBackupID = mainQueryExecutor.getMetadata("backupID"); if (!ServicesUtils::fullBackupSupport || !currentBackupID.size()) { return; } - DatabaseManager::connectionManager->setLogsMonitoring(true); + DatabaseManager::mainConnectionManager->setLogsMonitoring(true); }); - return instance; + return mainQueryExecutor; } void DatabaseManager::clearSensitiveData() { @@ -60,9 +61,9 @@ std::string backupDataKey = DatabaseManager::generateBackupDataKey(); std::string backupLogDataKey = DatabaseManager::generateBackupLogDataKey(); - DatabaseManager::connectionManager->closeConnection(); + DatabaseManager::mainConnectionManager->closeConnection(); std::string sqliteFilePath = - DatabaseManager::connectionManager->getSQLiteFilePath(); + DatabaseManager::mainConnectionManager->getSQLiteFilePath(); if (SQLiteUtils::fileExists(sqliteFilePath) && std::remove(sqliteFilePath.c_str())) { @@ -73,11 +74,11 @@ throw std::system_error(errno, std::generic_category(), errorStream.str()); } - DatabaseManager::connectionManager->setNewKeys( + DatabaseManager::mainConnectionManager->setNewKeys( backupDataKey, backupLogDataKey); DatabaseManager::getQueryExecutor().migrate(); - DatabaseManager::connectionManager->initializeConnection(); + DatabaseManager::mainConnectionManager->initializeConnection(); PlatformSpecificTools::removeBackupDirectory(); CommMMKV::clearSensitiveData(); @@ -170,7 +171,7 @@ backupLogDataKey = maybeBackupLogDataKey.value(); } - DatabaseManager::connectionManager = + DatabaseManager::mainConnectionManager = std::make_shared( databasePath, backupDataKey, backupLogDataKey); }); @@ -191,11 +192,11 @@ void DatabaseManager::setUserDataKeys( const std::string &backupDataKey, const std::string &backupLogDataKey) { - if (DatabaseManager::connectionManager->getBackupDataKey().empty()) { + if (DatabaseManager::mainConnectionManager->getBackupDataKey().empty()) { throw std::runtime_error("backupDataKey is not set"); } - if (DatabaseManager::connectionManager->getBackupLogDataKey().empty()) { + if (DatabaseManager::mainConnectionManager->getBackupLogDataKey().empty()) { throw std::runtime_error("backupLogDataKey is not set"); } @@ -207,14 +208,14 @@ throw std::runtime_error("invalid backupLogDataKey size"); } - DatabaseManager::connectionManager->initializeConnection(); + DatabaseManager::mainConnectionManager->initializeConnection(); SQLiteUtils::rekeyDatabase( - DatabaseManager::connectionManager->getConnection(), backupDataKey); + DatabaseManager::mainConnectionManager->getConnection(), backupDataKey); CommSecureStore::set(CommSecureStore::backupDataKey, backupDataKey); CommSecureStore::set(CommSecureStore::backupLogDataKey, backupLogDataKey); - DatabaseManager::connectionManager->setNewKeys( + DatabaseManager::mainConnectionManager->setNewKeys( backupDataKey, backupLogDataKey); } @@ -234,7 +235,7 @@ } bool newLogCreated = - DatabaseManager::connectionManager->captureLogs(backupID, logID); + DatabaseManager::mainConnectionManager->captureLogs(backupID, logID); if (!newLogCreated) { return; } @@ -283,13 +284,13 @@ sqlite3 *backupDB; sqlite3_open(tempBackupPath.c_str(), &backupDB); SQLiteUtils::setEncryptionKey( - backupDB, DatabaseManager::connectionManager->getBackupDataKey()); + backupDB, DatabaseManager::mainConnectionManager->getBackupDataKey()); - DatabaseManager::connectionManager->initializeConnection(); + DatabaseManager::mainConnectionManager->initializeConnection(); sqlite3_backup *backupObj = sqlite3_backup_init( backupDB, "main", - DatabaseManager::connectionManager->getConnection(), + DatabaseManager::mainConnectionManager->getConnection(), "main"); if (!backupObj) { std::stringstream error_message; @@ -336,7 +337,7 @@ std::string getAllBlobServiceMediaSQL = "SELECT * FROM media WHERE uri LIKE 'comm-blob-service://%';"; std::vector blobServiceMedia = getAllEntities( - DatabaseManager::connectionManager->getConnection(), + DatabaseManager::mainConnectionManager->getConnection(), getAllBlobServiceMediaSQL); for (const auto &media : blobServiceMedia) { @@ -356,7 +357,7 @@ DatabaseManager::getQueryExecutor().setMetadata("backupID", backupID); DatabaseManager::getQueryExecutor().clearMetadata("logID"); if (ServicesUtils::fullBackupSupport) { - DatabaseManager::connectionManager->setLogsMonitoring(true); + DatabaseManager::mainConnectionManager->setLogsMonitoring(true); } }