summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/sqlite3-interface.ts
diff options
context:
space:
mode:
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;
+}