mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
Add support for both wasm/ffi version of sqlite3
This commit is contained in:
36
utils/db_ffi.ts
Normal file
36
utils/db_ffi.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { Database, DatabaseOpenOptions } from "sqlite3/mod.ts";
|
||||
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<R extends Row = Row>(
|
||||
sql: string,
|
||||
params?: QueryParameterSet,
|
||||
): Array<R> {
|
||||
return this.db.prepare(sql).values(params);
|
||||
}
|
||||
|
||||
queryEntries<O extends RowObject = RowObject>(
|
||||
sql: string,
|
||||
params?: QueryParameterSet,
|
||||
): Array<O> {
|
||||
return this.db.prepare(sql).all(params);
|
||||
}
|
||||
|
||||
transaction<V>(fn: () => V): V {
|
||||
const re = this.db.transaction(fn);
|
||||
return re();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user