import { Database, DatabaseOpenOptions } from "sqlite3"; import { QueryParameterSet, Row, RowObject } from "./db_interface.ts"; export class DbFfi { db; constructor(path: string, options?: DatabaseOpenOptions) { this.db = new Database(path, options); } close(_force?: boolean) { this.db.close(); } execute(sql: string) { this.db.exec(sql); } query( sql: string, params?: QueryParameterSet, ): Array { return this.db.prepare(sql).values(params); } queryEntries( sql: string, params?: QueryParameterSet, ): Array { return this.db.prepare(sql).all(params); } transaction(fn: () => V): V { const re = this.db.transaction(fn); return re(); } }