Фикс бага с уникальными индексами сообщений
This commit is contained in:
@@ -19,10 +19,15 @@ export function DatabaseProvider(props: DatabaseProviderProps) {
|
||||
setInitialized(true);
|
||||
//await runQuery("DROP TABLE IF EXISTS accounts_sync_times");
|
||||
/**
|
||||
* Добавляем уникальный индекс на столбец message_id в таблица
|
||||
* messages чтобы избежать дубликации сообщений
|
||||
* Удаляем старый индекс только по message_id
|
||||
*/
|
||||
await runQuery("CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_message_id ON messages(message_id)");
|
||||
await runQuery("DROP INDEX IF EXISTS idx_messages_message_id");
|
||||
|
||||
/**
|
||||
* Добавляем уникальный индекс на столбцы message_id и public_key
|
||||
* в таблице messages чтобы избежать дубликации сообщений
|
||||
*/
|
||||
await runQuery("CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_message_id_public_key ON messages(message_id, account)");
|
||||
})();
|
||||
}, []);
|
||||
|
||||
|
||||
@@ -43,6 +43,11 @@ export const TABLES = [
|
||||
UNIQUE (id)
|
||||
)`,
|
||||
|
||||
/**
|
||||
* Создаем индекс на столбцы message_id и public_key чтобы избежать дубликации сообщений при синхронизации
|
||||
*/
|
||||
`CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_message_id_public_key ON messages(message_id, account)`,
|
||||
|
||||
`CREATE TABLE IF NOT EXISTS cached_users (
|
||||
public_key TEXT PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
|
||||
@@ -70,8 +70,8 @@ export function useDialogFiber() {
|
||||
}
|
||||
await runQuery(
|
||||
"INSERT INTO accounts_sync_times (account, last_sync) VALUES (?, ?) " +
|
||||
"ON CONFLICT(account) DO UPDATE SET last_sync = ?",
|
||||
[publicKey, timestamp, timestamp]
|
||||
"ON CONFLICT(account) DO UPDATE SET last_sync = ? WHERE account = ?",
|
||||
[publicKey, timestamp, timestamp, publicKey]
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -54,8 +54,8 @@ export function useSynchronize() {
|
||||
console.info("Batch finished");
|
||||
await runQuery(
|
||||
"INSERT INTO accounts_sync_times (account, last_sync) VALUES (?, ?) " +
|
||||
"ON CONFLICT(account) DO UPDATE SET last_sync = ?",
|
||||
[publicKey, packet.getTimestamp(), packet.getTimestamp()]
|
||||
"ON CONFLICT(account) DO UPDATE SET last_sync = ? WHERE account = ?",
|
||||
[publicKey, packet.getTimestamp(), packet.getTimestamp(), publicKey]
|
||||
);
|
||||
console.info("Batch complete", publicKey, packet.getTimestamp());
|
||||
trySync();
|
||||
|
||||
Reference in New Issue
Block a user