import { useDatabase } from "@/app/providers/DatabaseProvider/useDatabase"; import { useEffect, useState } from "react"; import { createContext } from "react"; import { TABLES } from "./tables"; export const DatabaseContext = createContext({}); 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 ( {initialized && props.children} ); }