import Database from "@tauri-apps/plugin-sql"; import { invoke } from "@tauri-apps/api/core"; let dbInstance: Database | null = null; export async function getDb(): Promise { if (!dbInstance) { throw new Error("No database connection. Call connectToProfile() first."); } return dbInstance; } export async function connectToProfile(dbFilename: string): Promise { if (dbInstance) { await dbInstance.close(); dbInstance = null; } // Repair migration checksums before loading (fixes "migration was modified" error) try { const repaired = await invoke("repair_migrations", { dbFilename }); if (repaired) { console.warn("Migration checksums repaired for", dbFilename); } } catch (e) { console.error("Migration repair failed:", e); } dbInstance = await Database.load(`sqlite:${dbFilename}`); } export async function initializeNewProfileDb(dbFilename: string, sqlStatements: string[]): Promise { if (dbInstance) { await dbInstance.close(); dbInstance = null; } dbInstance = await Database.load(`sqlite:${dbFilename}`); for (const sql of sqlStatements) { await dbInstance.execute(sql); } } export async function closeDb(): Promise { if (dbInstance) { await dbInstance.close(); dbInstance = null; } }