Page MenuHomePhorge

D14841.1765085673.diff
No OneTemporary

Size
8 KB
Referenced Files
None
Subscribers
None

D14841.1765085673.diff

diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchema.cpp b/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchema.cpp
--- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchema.cpp
+++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchema.cpp
@@ -30,6 +30,18 @@
" target_message TEXT"
");"
+ "CREATE TABLE IF NOT EXISTS backup_messages ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " local_id TEXT,"
+ " thread TEXT NOT NULL,"
+ " user TEXT NOT NULL,"
+ " type INTEGER NOT NULL,"
+ " future_type INTEGER,"
+ " content TEXT,"
+ " time INTEGER NOT NULL,"
+ " target_message TEXT"
+ ");"
+
"CREATE TABLE IF NOT EXISTS olm_persist_account ("
" id INTEGER UNIQUE PRIMARY KEY NOT NULL,"
" account_data TEXT NOT NULL"
@@ -50,6 +62,15 @@
" extras TEXT NOT NULL"
");"
+ "CREATE TABLE IF NOT EXISTS backup_media ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " container TEXT NOT NULL,"
+ " thread TEXT NOT NULL,"
+ " uri TEXT NOT NULL,"
+ " type TEXT NOT NULL,"
+ " extras TEXT NOT NULL"
+ ");"
+
"CREATE TABLE IF NOT EXISTS threads ("
" id TEXT UNIQUE PRIMARY KEY NOT NULL,"
" type INTEGER NOT NULL,"
@@ -70,6 +91,26 @@
" timestamps TEXT"
");"
+ "CREATE TABLE IF NOT EXISTS backup_threads ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " type INTEGER NOT NULL,"
+ " name TEXT,"
+ " description TEXT,"
+ " color TEXT NOT NULL,"
+ " creation_time BIGINT NOT NULL,"
+ " parent_thread_id TEXT,"
+ " containing_thread_id TEXT,"
+ " community TEXT,"
+ " members TEXT NOT NULL,"
+ " roles TEXT NOT NULL,"
+ " current_user TEXT NOT NULL,"
+ " source_message_id TEXT,"
+ " replies_count INTEGER NOT NULL,"
+ " avatar TEXT,"
+ " pinned_count INTEGER NOT NULL DEFAULT 0,"
+ " timestamps TEXT"
+ ");"
+
"CREATE TABLE IF NOT EXISTS metadata ("
" name TEXT UNIQUE PRIMARY KEY NOT NULL,"
" data TEXT NOT NULL"
@@ -80,6 +121,11 @@
" start_reached INTEGER NOT NULL"
");"
+ "CREATE TABLE IF NOT EXISTS backup_message_store_threads ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " start_reached INTEGER NOT NULL"
+ ");"
+
"CREATE TABLE IF NOT EXISTS reports ("
" id TEXT UNIQUE PRIMARY KEY NOT NULL,"
" report TEXT NOT NULL"
@@ -142,6 +188,11 @@
" thread_activity_store_entry TEXT NOT NULL"
");"
+ "CREATE TABLE IF NOT EXISTS backup_thread_activity ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " thread_activity_store_entry TEXT NOT NULL"
+ ");"
+
"CREATE TABLE IF NOT EXISTS inbound_p2p_messages ("
" id INTEGER PRIMARY KEY,"
" message_id TEXT NOT NULL,"
@@ -156,11 +207,21 @@
" entry TEXT NOT NULL"
");"
+ "CREATE TABLE IF NOT EXISTS backup_entries ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " entry TEXT NOT NULL"
+ ");"
+
"CREATE TABLE IF NOT EXISTS message_store_local ("
" id TEXT UNIQUE PRIMARY KEY NOT NULL,"
" local_message_info TEXT NOT NULL"
");"
+ "CREATE TABLE IF NOT EXISTS backup_message_store_local ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " local_message_info TEXT NOT NULL"
+ ");"
+
"CREATE VIRTUAL TABLE IF NOT EXISTS message_search USING fts5("
" original_message_id UNINDEXED,"
" message_id UNINDEXED,"
@@ -177,12 +238,21 @@
"CREATE INDEX IF NOT EXISTS media_idx_container"
" ON media (container);"
+ "CREATE INDEX IF NOT EXISTS backup_media_idx_container"
+ " ON backup_media (container);"
+
"CREATE INDEX IF NOT EXISTS messages_idx_thread_time"
" ON messages (thread, time);"
+ "CREATE INDEX IF NOT EXISTS backup_messages_idx_thread_time"
+ " ON backup_messages (thread, time);"
+
"CREATE INDEX IF NOT EXISTS messages_idx_target_message_type_time"
" ON messages (target_message, type, time);"
+ "CREATE INDEX IF NOT EXISTS backup_messages_idx_target_message_type_time"
+ " ON backup_messages (target_message, type, time);"
+
"CREATE INDEX IF NOT EXISTS outbound_p2p_messages_idx_id_timestamp"
" ON outbound_p2p_messages (device_id, timestamp);"
diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchemaMigrations.cpp b/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchemaMigrations.cpp
--- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchemaMigrations.cpp
+++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteSchemaMigrations.cpp
@@ -821,6 +821,91 @@
return false;
}
+bool create_backup_tables(sqlite3 *db) {
+ std::string query =
+ "CREATE TABLE IF NOT EXISTS backup_messages ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " local_id TEXT,"
+ " thread TEXT NOT NULL,"
+ " user TEXT NOT NULL,"
+ " type INTEGER NOT NULL,"
+ " future_type INTEGER,"
+ " content TEXT,"
+ " time INTEGER NOT NULL,"
+ " target_message TEXT"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_media ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " container TEXT NOT NULL,"
+ " thread TEXT NOT NULL,"
+ " uri TEXT NOT NULL,"
+ " type TEXT NOT NULL,"
+ " extras TEXT NOT NULL"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_threads ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " type INTEGER NOT NULL,"
+ " name TEXT,"
+ " description TEXT,"
+ " color TEXT NOT NULL,"
+ " creation_time BIGINT NOT NULL,"
+ " parent_thread_id TEXT,"
+ " containing_thread_id TEXT,"
+ " community TEXT,"
+ " members TEXT NOT NULL,"
+ " roles TEXT NOT NULL,"
+ " current_user TEXT NOT NULL,"
+ " source_message_id TEXT,"
+ " replies_count INTEGER NOT NULL,"
+ " avatar TEXT,"
+ " pinned_count INTEGER NOT NULL DEFAULT 0,"
+ " timestamps TEXT"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_message_store_threads ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " start_reached INTEGER NOT NULL"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_thread_activity ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " thread_activity_store_entry TEXT NOT NULL"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_entries ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " entry TEXT NOT NULL"
+ ");"
+
+ "CREATE TABLE IF NOT EXISTS backup_message_store_local ("
+ " id TEXT UNIQUE PRIMARY KEY NOT NULL,"
+ " local_message_info TEXT NOT NULL"
+ ");"
+
+ "CREATE INDEX IF NOT EXISTS backup_media_idx_container"
+ " ON backup_media (container);"
+ "CREATE INDEX IF NOT EXISTS backup_messages_idx_thread_time"
+ " ON backup_messages (thread, time);"
+ "CREATE INDEX IF NOT EXISTS backup_messages_idx_target_message_type_time"
+ " ON backup_messages (target_message, type, time);";
+
+ char *error;
+ sqlite3_exec(db, query.c_str(), nullptr, nullptr, &error);
+
+ if (!error) {
+ return true;
+ }
+
+ std::ostringstream stringStream;
+ stringStream << "Error creating backup tables: " << error;
+ Logger::log(stringStream.str());
+
+ sqlite3_free(error);
+ return false;
+}
+
SQLiteMigrations SQLiteSchema::migrations{
{{1, {create_drafts_table, true}},
{2, {rename_threadID_to_key, true}},
@@ -866,6 +951,7 @@
{52, {recreate_inbound_p2p_messages_table, true}},
{53, {add_timestamps_column_to_threads_table, true}},
{54, {create_dm_operations_table, true}},
- {55, {convert_target_message_to_standard_column, true}}}};
+ {55, {convert_target_message_to_standard_column, true}},
+ {56, {create_backup_tables, true}}}};
} // namespace comm
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

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 5:34 AM (16 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5842619
Default Alt Text
D14841.1765085673.diff (8 KB)

Event Timeline