Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/flo-bit/contrail. atproto backend in a bottle flo-bit.dev/contrail
Something went wrong. Try again.
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940import { DatabaseSync } from "node:sqlite";import type { Database, Statement } from "../core/types";import { sqliteDialect } from "../core/dialect";
export function createSqliteDatabase(path: string): Database { const raw = new DatabaseSync(path); raw.exec("PRAGMA journal_mode = WAL");
function wrapStatement(sql: string, boundValues: any[] = []): Statement { return { bind(...values: any[]): Statement { return wrapStatement(sql, values); }, async run() { return raw.prepare(sql).run(...boundValues); }, async all<T>() { return { results: raw.prepare(sql).all(...boundValues) as T[] }; }, async first<T>() { return (raw.prepare(sql).get(...boundValues) as T) ?? null; }, }; }
return { prepare(sql: string): Statement { return wrapStatement(sql); }, async batch(stmts: Statement[]): Promise<any[]> { const results: any[] = []; for (const stmt of stmts) { results.push(await stmt.run()); } return results; }, dialect: sqliteDialect, };}