diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h --- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h +++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.h @@ -32,10 +32,10 @@ static int backupDataKeySize; static std::string backupLogDataKey; static int backupLogDataKeySize; + static std::unordered_set<std::string> backedUpTablesAllowlist; #ifndef EMSCRIPTEN static NativeSQLiteConnectionManager connectionManager; - static std::unordered_set<std::string> backedUpTablesAllowlist; static void generateBackupDataKey(); static void generateBackupLogDataKey(); static void initializeTablesForLogMonitoring(); diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp --- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp +++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp @@ -38,8 +38,6 @@ std::string SQLiteQueryExecutor::backupLogDataKey; int SQLiteQueryExecutor::backupLogDataKeySize = 32; -#ifndef EMSCRIPTEN -NativeSQLiteConnectionManager SQLiteQueryExecutor::connectionManager; std::unordered_set<std::string> SQLiteQueryExecutor::backedUpTablesAllowlist = { "drafts", "threads", @@ -49,6 +47,9 @@ "aux_users", "entries", }; + +#ifndef EMSCRIPTEN +NativeSQLiteConnectionManager SQLiteQueryExecutor::connectionManager; #else SQLiteConnectionManager SQLiteQueryExecutor::connectionManager; #endif @@ -3366,29 +3367,11 @@ throw std::runtime_error(error_message.str()); } - sqlite3_backup *backupObj = sqlite3_backup_init( - SQLiteQueryExecutor::getConnection(), "main", backupDB, "main"); - if (!backupObj) { - std::stringstream error_message; - error_message << "Failed to init backup for main compaction. Details: " - << sqlite3_errmsg(SQLiteQueryExecutor::getConnection()) - << std::endl; - sqlite3_close(backupDB); - throw std::runtime_error(error_message.str()); - } - - int backupResult = sqlite3_backup_step(backupObj, -1); - sqlite3_backup_finish(backupObj); - sqlite3_close(backupDB); - if (backupResult == SQLITE_BUSY || backupResult == SQLITE_LOCKED) { - throw std::runtime_error( - "Programmer error. Database in transaction during restore attempt."); - } else if (backupResult != SQLITE_DONE) { - std::stringstream error_message; - error_message << "Failed to restore database from backup. Details: " - << sqlite3_errstr(backupResult); - throw std::runtime_error(error_message.str()); - } + std::vector<std::string> tablesVector( + SQLiteQueryExecutor::backedUpTablesAllowlist.begin(), + SQLiteQueryExecutor::backedUpTablesAllowlist.end()); + copyTablesDataUsingAttach( + SQLiteQueryExecutor::getConnection(), plaintextBackupPath, tablesVector); attempt_delete_file( plaintextBackupPath, diff --git a/web/shared-worker/_generated/comm_query_executor.wasm b/web/shared-worker/_generated/comm_query_executor.wasm index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 literal 0 Hc$@<O00001