Spaces:
Runtime error
Runtime error
File size: 1,435 Bytes
cd8bd0a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import type { SqliteAdapter, PreparedStatement, RunResult } from "./types";
export function createBetterSqliteAdapter(db: import("better-sqlite3").Database): SqliteAdapter {
return {
driver: "better-sqlite3",
get open() {
return db.open;
},
get name() {
return db.name;
},
prepare(sql: string): PreparedStatement {
const stmt = db.prepare(sql);
return {
run: (...params: unknown[]): RunResult => stmt.run(...params) as unknown as RunResult,
get: (...params: unknown[]): unknown => stmt.get(...params),
all: (...params: unknown[]): unknown[] => stmt.all(...params),
};
},
exec(sql: string): void {
db.exec(sql);
},
pragma(pragmaStr: string, options?: { simple?: boolean }): unknown {
return db.pragma(pragmaStr, options);
},
transaction<T>(fn: (...args: unknown[]) => T): (...args: unknown[]) => T {
return db.transaction(fn) as (...args: unknown[]) => T;
},
immediate(fn: () => void): void {
(db.transaction(fn) as unknown as { immediate: () => void }).immediate();
},
async backup(destination: string): Promise<void> {
await db.backup(destination);
},
checkpoint(mode = "TRUNCATE"): void {
try {
db.pragma(`wal_checkpoint(${mode})`);
} catch {}
},
close(): void {
db.close();
},
get raw() {
return db;
},
};
}
|