diff --git a/src/lib/db/adapters/types.ts b/src/lib/db/adapters/types.ts new file mode 100644 index 0000000000..d0a034e804 --- /dev/null +++ b/src/lib/db/adapters/types.ts @@ -0,0 +1,34 @@ +export interface RunResult { + changes: number; + lastInsertRowid: number | bigint; +} + +export interface PreparedStatement { + run(...params: unknown[]): RunResult; + get(...params: unknown[]): unknown; + all(...params: unknown[]): unknown[]; +} + +export interface SqliteAdapter { + readonly driver: "better-sqlite3" | "node:sqlite" | "sql.js"; + readonly open: boolean; + readonly name: string; + + prepare(sql: string): PreparedStatement; + exec(sql: string): void; + pragma(pragmaStr: string, options?: { simple?: boolean }): unknown; + + /** Retorna uma função que quando chamada executa fn em uma transação DEFERRED */ + transaction(fn: (...args: unknown[]) => T): (...args: unknown[]) => T; + + /** Executa fn em uma transação IMMEDIATE (adquire write lock imediatamente) */ + immediate(fn: () => void): void; + + /** Backup nativo ou file-copy fallback */ + backup(destination: string): Promise; + + checkpoint(mode?: string): void; + close(): void; + + readonly raw: unknown; +}