mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-07-08 01:31:00 +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();
|
||||
}
|
||||
}
|
||||
28
utils/db_interface.ts
Normal file
28
utils/db_interface.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export type Row = Array<unknown>;
|
||||
export type RowObject = Record<string, unknown>;
|
||||
export type QueryParameter =
|
||||
| boolean
|
||||
| number
|
||||
| bigint
|
||||
| string
|
||||
| null
|
||||
| undefined
|
||||
| Date
|
||||
| Uint8Array;
|
||||
export type QueryParameterSet =
|
||||
| Record<string, QueryParameter>
|
||||
| Array<QueryParameter>;
|
||||
|
||||
export interface Db {
|
||||
close(force?: boolean): void;
|
||||
execute(sql: string): void;
|
||||
query<R extends Row = Row>(
|
||||
sql: string,
|
||||
params?: QueryParameterSet,
|
||||
): Array<R>;
|
||||
queryEntries<O extends RowObject = RowObject>(
|
||||
sql: string,
|
||||
params?: QueryParameterSet,
|
||||
): Array<O>;
|
||||
transaction<V>(fn: () => V): V;
|
||||
}
|
||||
7
utils/db_wasm.ts
Normal file
7
utils/db_wasm.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { DB, SqliteOptions } from "sqlite/mod.ts";
|
||||
|
||||
export class DbWasm extends DB {
|
||||
constructor(dbPath: string, options?: SqliteOptions) {
|
||||
super(dbPath, options);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user