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 в таблица
             * messages чтобы избежать дубликации сообщений
             */
            await runQuery("CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_message_id ON messages(message_id)");
        })();
    }, []);

    const createAllTables = async () => {
        for(let i = 0; i < TABLES.length; i++){
            await runQuery(TABLES[i]);
        }
    }

    return (
        <DatabaseContext.Provider value={{}}>
            {initialized && props.children}
        </DatabaseContext.Provider>
    );
}