From b2d0ad57ddf251a109d536cdc49fb6505dbdc50c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 11 Jul 2023 15:41:48 +0200 Subject: sqlite3 backend for idb-bridge / wallet-core --- packages/idb-bridge/src/sqlite3-interface.ts | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/idb-bridge/src/sqlite3-interface.ts (limited to 'packages/idb-bridge/src/sqlite3-interface.ts') diff --git a/packages/idb-bridge/src/sqlite3-interface.ts b/packages/idb-bridge/src/sqlite3-interface.ts new file mode 100644 index 000000000..8668ef844 --- /dev/null +++ b/packages/idb-bridge/src/sqlite3-interface.ts @@ -0,0 +1,34 @@ +export type Sqlite3Database = { + internalDbHandle: any; + exec(sqlStr: string): void; + prepare(stmtStr: string): Sqlite3Statement; + close(): void; +}; +export type Sqlite3Statement = { + internalStatement: any; + + run(params?: BindParams): RunResult; + getAll(params?: BindParams): ResultRow[]; + getFirst(params?: BindParams): ResultRow | undefined; +}; + +export interface RunResult { + lastInsertRowid: number | bigint; +} + +export type Sqlite3Value = string | Uint8Array | number | null | bigint; + +export type BindParams = Record; +export type ResultRow = Record; + +/** + * Common interface that multiple sqlite3 bindings + * (such as better-sqlite3 or qtart's sqlite3 bindings) + * can adapt to. + * + * This does not expose full sqlite3 functionality, but just enough + * to be used by our IndexedDB sqlite3 backend. + */ +export interface Sqlite3Interface { + open(filename: string): Sqlite3Database; +} -- cgit v1.2.3