aboutsummaryrefslogtreecommitdiffstats
path: root/packages/queue/db.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-07-14 20:42:06 +0000
committerMohamedBassem <me@mbassem.com>2024-07-14 22:25:23 +0000
commitf77a41a75237b8c816e0c9ca7217dfacc32cc7d0 (patch)
tree69557b2001183cd915a81e0ea9d276e10d262147 /packages/queue/db.ts
parentaa3dce09ff68c212ac1fad33adfbfaba96290a59 (diff)
downloadkarakeep-f77a41a75237b8c816e0c9ca7217dfacc32cc7d0.tar.zst
chore: Add a new sqlite based queue package
Diffstat (limited to 'packages/queue/db.ts')
-rw-r--r--packages/queue/db.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/packages/queue/db.ts b/packages/queue/db.ts
new file mode 100644
index 00000000..f1412fef
--- /dev/null
+++ b/packages/queue/db.ts
@@ -0,0 +1,19 @@
+import path from "node:path";
+import Database from "better-sqlite3";
+import { BetterSQLite3Database, drizzle } from "drizzle-orm/better-sqlite3";
+import { migrate } from "drizzle-orm/better-sqlite3/migrator";
+
+import * as schema from "./schema";
+
+export function buildDBClient(dbPath: string, runMigrations = false) {
+ const sqlite = new Database(dbPath);
+ const db = drizzle(sqlite, { schema });
+ if (runMigrations) {
+ migrateDB(db);
+ }
+ return db;
+}
+
+export function migrateDB(db: BetterSQLite3Database<typeof schema>) {
+ migrate(db, { migrationsFolder: path.join(__dirname, "drizzle") });
+}