aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/sqlite3-interface.ts
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2023-08-25 13:24:08 +0200
committerÖzgür Kesim <oec-taler@kesim.org>2023-08-25 13:24:08 +0200
commit5ab3070b3a63c2e8fed0e413dea06cf03fb48f1e (patch)
tree121425d99c9465f2daf8ac91c6dc2254ebac5906 /packages/idb-bridge/src/sqlite3-interface.ts
parent70fca92e781696a057089bc8bc48adebdf6e017e (diff)
parent2051aded501cddac1a4c869fb1f9731ac4523a1e (diff)
Merge branch 'master' into age-withdraw
Diffstat (limited to 'packages/idb-bridge/src/sqlite3-interface.ts')
-rw-r--r--packages/idb-bridge/src/sqlite3-interface.ts34
1 files changed, 34 insertions, 0 deletions
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<string, Sqlite3Value | undefined>;
+export type ResultRow = Record<string, Sqlite3Value>;
+
+/**
+ * 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;
+}