import { open, type Database } from 'sqlite'
import sqlite3 from 'sqlite3'
import type { GpLiveDb } from './gpLiveDb'

export function wrapSqliteDatabase(db: Database<sqlite3.Database, sqlite3.Statement>): GpLiveDb {
    return {
        dialect: 'sqlite',
        run: (sql, ...params) => db.run(sql, ...params),
        get: (sql, ...params) => db.get(sql, ...params),
        all: (sql, ...params) => db.all(sql, ...params),
        prepare: (sql) => db.prepare(sql),
        exec: (sql) => db.exec(sql),
        close: () => db.close(),
    }
}

export async function openSqliteGpLiveDb(filename: string): Promise<GpLiveDb> {
    const db = await open({ filename, driver: sqlite3.Database })
    return wrapSqliteDatabase(db)
}
