Files
desktop/app/providers/DatabaseProvider/DatabaseProvider.tsx

45 lines
1.6 KiB
TypeScript

import { useDatabase } from "@/app/providers/DatabaseProvider/useDatabase";
import { useEffect, useState } from "react";
import { createContext } from "react";
import { TABLES } from "./tables";
export const DatabaseContext = createContext<any>({});
interface DatabaseProviderProps {
children: React.ReactNode;
}
export function DatabaseProvider(props: DatabaseProviderProps) {
const [initialized, setInitialized] = useState(false);
const {runQuery} = useDatabase();
useEffect(() => {
(async () => {
await createAllTables();
setInitialized(true);
//await runQuery("DROP TABLE IF EXISTS accounts_sync_times");
/**
* Удаляем старый индекс только по 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)");
})();
}, []);
const createAllTables = async () => {
for(let i = 0; i < TABLES.length; i++){
await runQuery(TABLES[i]);
}
}
return (
<DatabaseContext.Provider value={{}}>
{initialized && props.children}
</DatabaseContext.Provider>
);
}