mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-02 05:12:11 +03:00
feat(db): add betterSqliteAdapter wrapper
This commit is contained in:
58
src/lib/db/adapters/betterSqliteAdapter.ts
Normal file
58
src/lib/db/adapters/betterSqliteAdapter.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
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();
|
||||
},
|
||||
|
||||
backup(destination: string): Promise<void> {
|
||||
return db.backup(destination);
|
||||
},
|
||||
|
||||
checkpoint(mode = "TRUNCATE"): void {
|
||||
try {
|
||||
db.pragma(`wal_checkpoint(${mode})`);
|
||||
} catch {}
|
||||
},
|
||||
|
||||
close(): void {
|
||||
db.close();
|
||||
},
|
||||
|
||||
get raw() {
|
||||
return db;
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user