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