From 0bb0c9dfdae6bd830b0d5e0d7a0618cbf74f6fb4 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Wed, 20 May 2026 17:35:46 -0300 Subject: [PATCH] feat(db): add SqliteAdapter interface for multi-driver support --- src/lib/db/adapters/types.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/lib/db/adapters/types.ts 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; +}