Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32213073
D12068.1765145828.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
D12068.1765145828.diff
View Options
diff --git a/lib/types/sqlite-types.js b/lib/types/sqlite-types.js
--- a/lib/types/sqlite-types.js
+++ b/lib/types/sqlite-types.js
@@ -16,6 +16,7 @@
+timestamp: string,
+plaintext: string,
+ciphertext: string,
+ +status: string,
};
export type SQLiteAPI = {
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
@@ -42,7 +42,7 @@
"olm_persist_account",
"olm_persist_sessions",
"metadata",
- "messages_to_device",
+ "outbound_p2p_messages",
"integrity_store",
"persist_storage",
"keyservers",
@@ -640,6 +640,26 @@
return create_table(db, query, "received_messages_to_device");
}
+bool recreate_outbound_p2p_messages_table(sqlite3 *db) {
+ std::string query =
+ "DROP TABLE IF EXISTS messages_to_device;"
+ "CREATE TABLE IF NOT EXISTS outbound_p2p_messages ("
+ " message_id TEXT NOT NULL,"
+ " device_id TEXT NOT NULL,"
+ " user_id TEXT NOT NULL,"
+ " timestamp BIGINT NOT NULL,"
+ " plaintext TEXT NOT NULL,"
+ " ciphertext TEXT NOT NULL,"
+ " status TEXT NOT NULL,"
+ " PRIMARY KEY (message_id, device_id)"
+ ");"
+
+ "CREATE INDEX IF NOT EXISTS outbound_p2p_messages_idx_id_timestamp"
+ " ON outbound_p2p_messages (device_id, timestamp);";
+
+ return create_table(db, query, "outbound_p2p_messages");
+}
+
bool create_schema(sqlite3 *db) {
char *error;
sqlite3_exec(
@@ -739,13 +759,14 @@
" community_info TEXT NOT NULL"
");"
- "CREATE TABLE IF NOT EXISTS messages_to_device ("
+ "CREATE TABLE IF NOT EXISTS outbound_p2p_messages ("
" message_id TEXT NOT NULL,"
" device_id TEXT NOT NULL,"
" user_id TEXT NOT NULL,"
" timestamp BIGINT NOT NULL,"
" plaintext TEXT NOT NULL,"
" ciphertext TEXT NOT NULL,"
+ " status TEXT NOT NULL,"
" PRIMARY KEY (message_id, device_id)"
");"
@@ -783,8 +804,8 @@
"CREATE INDEX IF NOT EXISTS messages_idx_thread_time"
" ON messages (thread, time);"
- "CREATE INDEX IF NOT EXISTS messages_to_device_idx_id_timestamp"
- " ON messages_to_device (device_id, timestamp);",
+ "CREATE INDEX IF NOT EXISTS outbound_p2p_messages_idx_id_timestamp"
+ " ON outbound_p2p_messages (device_id, timestamp);",
nullptr,
nullptr,
@@ -1030,7 +1051,8 @@
{41, {create_aux_user_table, true}},
{42, {add_version_column_to_olm_persist_sessions_table, true}},
{43, {create_thread_activity_table, true}},
- {44, {create_received_messages_to_device, true}}}};
+ {44, {create_received_messages_to_device, true}},
+ {45, {recreate_outbound_p2p_messages_table, true}}}};
enum class MigrationResult { SUCCESS, FAILURE, NOT_APPLIED };
@@ -2080,9 +2102,10 @@
void SQLiteQueryExecutor::addOutboundP2PMessages(
const std::vector<OutboundP2PMessage> &messages) const {
static std::string addMessage =
- "REPLACE INTO messages_to_device ("
- " message_id, device_id, user_id, timestamp, plaintext, ciphertext) "
- "VALUES (?, ?, ?, ?, ?, ?);";
+ "REPLACE INTO outbound_p2p_messages ("
+ " message_id, device_id, user_id, timestamp,"
+ " plaintext, ciphertext, status) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?);";
for (const OutboundP2PMessage &clientMessage : messages) {
SQLiteOutboundP2PMessage message =
@@ -2095,7 +2118,7 @@
std::vector<OutboundP2PMessage> SQLiteQueryExecutor::getAllOutboundP2PMessages(
const std::string &deviceID) const {
std::string query =
- "SELECT * FROM messages_to_device "
+ "SELECT * FROM outbound_p2p_messages "
"WHERE device_id = ? "
"ORDER BY timestamp;";
@@ -2119,7 +2142,7 @@
void SQLiteQueryExecutor::removeOutboundP2PMessagesOlderThan(
const OutboundP2PMessage &lastConfirmedMessageClient) const {
static std::string query =
- "DELETE FROM messages_to_device "
+ "DELETE FROM outbound_p2p_messages "
"WHERE timestamp <= ? AND device_id IN (?);";
SQLiteOutboundP2PMessage lastConfirmedMessage =
@@ -2149,7 +2172,7 @@
void SQLiteQueryExecutor::removeAllOutboundP2PMessages(
const std::string &deviceID) const {
static std::string removeMessagesSQL =
- "DELETE FROM messages_to_device "
+ "DELETE FROM outbound_p2p_messages "
"WHERE device_id IN (?);";
std::vector<std::string> keys = {deviceID};
removeEntitiesByKeys(
diff --git a/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h b/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
--- a/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
+++ b/native/cpp/CommonCpp/DatabaseManagers/entities/OutboundP2PMessage.h
@@ -15,6 +15,7 @@
int64_t timestamp;
std::string plaintext;
std::string ciphertext;
+ std::string status;
static SQLiteOutboundP2PMessage fromSQLResult(sqlite3_stmt *sqlRow, int idx) {
return SQLiteOutboundP2PMessage{
@@ -24,6 +25,7 @@
getInt64FromSQLRow(sqlRow, idx + 3),
getStringFromSQLRow(sqlRow, idx + 4),
getStringFromSQLRow(sqlRow, idx + 5),
+ getStringFromSQLRow(sqlRow, idx + 6),
};
}
@@ -33,7 +35,8 @@
bindStringToSQL(user_id, sql, idx + 2);
bindInt64ToSQL(timestamp, sql, idx + 3);
bindStringToSQL(plaintext, sql, idx + 4);
- return bindStringToSQL(ciphertext, sql, idx + 5);
+ bindStringToSQL(ciphertext, sql, idx + 5);
+ return bindStringToSQL(status, sql, idx + 6);
}
};
@@ -44,6 +47,7 @@
std::string timestamp;
std::string plaintext;
std::string ciphertext;
+ std::string status;
OutboundP2PMessage() = default;
@@ -54,6 +58,7 @@
timestamp = std::to_string(msg.timestamp);
plaintext = msg.plaintext;
ciphertext = msg.ciphertext;
+ status = msg.status;
}
SQLiteOutboundP2PMessage toSQLiteOutboundP2PMessage() const {
@@ -64,6 +69,7 @@
msg.timestamp = std::stoll(timestamp);
msg.plaintext = plaintext;
msg.ciphertext = ciphertext;
+ msg.status = status;
return msg;
}
};
diff --git a/web/cpp/SQLiteQueryExecutorBindings.cpp b/web/cpp/SQLiteQueryExecutorBindings.cpp
--- a/web/cpp/SQLiteQueryExecutorBindings.cpp
+++ b/web/cpp/SQLiteQueryExecutorBindings.cpp
@@ -120,7 +120,8 @@
.field("userID", &OutboundP2PMessage::user_id)
.field("timestamp", &OutboundP2PMessage::timestamp)
.field("plaintext", &OutboundP2PMessage::plaintext)
- .field("ciphertext", &OutboundP2PMessage::ciphertext);
+ .field("ciphertext", &OutboundP2PMessage::ciphertext)
+ .field("status", &OutboundP2PMessage::status);
value_object<InboundP2PMessage>("InboundP2PMessage")
.field("messageID", &InboundP2PMessage::message_id)
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
diff --git a/web/shared-worker/queries/outbound-p2p-message-queries.test.js b/web/shared-worker/queries/outbound-p2p-message-queries.test.js
--- a/web/shared-worker/queries/outbound-p2p-message-queries.test.js
+++ b/web/shared-worker/queries/outbound-p2p-message-queries.test.js
@@ -24,6 +24,7 @@
timestamp: timestamp2,
plaintext: 'decrypted-1',
ciphertext: 'encrypted-1',
+ status: 'encrypted',
};
const TEST_MSG_2: OutboundP2PMessage = {
messageID: 'id-2',
@@ -32,6 +33,7 @@
timestamp: timestamp3,
plaintext: 'decrypted-2',
ciphertext: 'encrypted-2',
+ status: 'encrypted',
};
const TEST_MSG_3: OutboundP2PMessage = {
@@ -41,6 +43,7 @@
timestamp: timestamp1,
plaintext: 'decrypted-3',
ciphertext: 'encrypted-3',
+ status: 'encrypted',
};
const TEST_MSG_4: OutboundP2PMessage = {
@@ -50,6 +53,7 @@
timestamp: timestamp4,
plaintext: 'decrypted-4',
ciphertext: 'encrypted-4',
+ status: 'encrypted',
};
const device1MessagesOrdered = [TEST_MSG_3, TEST_MSG_1, TEST_MSG_4];
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 7, 10:17 PM (13 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5846189
Default Alt Text
D12068.1765145828.diff (8 KB)
Attached To
Mode
D12068: [SQLite] recreate table for Outbound P2P messages
Attached
Detach File
Event Timeline
Log In to Comment