feat: add SQLite database and persistent task schema

This commit is contained in:
Mpho10111
2026-08-11 20:51:10 +02:00
parent 77fe7cfdac
commit 63833efb7a
4 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
import fs from "node:fs";
import path from "node:path";
import { DatabaseSync } from "node:sqlite";
type DatabaseGlobal = typeof globalThis & {
plannerDatabase?: DatabaseSync;
plannerDatabasePath?: string;
};
const schemaPath = path.join(process.cwd(), "db", "schema.sql");
const defaultDatabasePath = path.join(process.cwd(), "data", "planner.sqlite");
export function getDatabase() {
const databasePath = process.env.TASKS_DB_PATH ?? defaultDatabasePath;
const globalDatabase = globalThis as DatabaseGlobal;
if (
globalDatabase.plannerDatabase &&
globalDatabase.plannerDatabasePath === databasePath
) {
return globalDatabase.plannerDatabase;
}
fs.mkdirSync(path.dirname(databasePath), { recursive: true });
const database = new DatabaseSync(databasePath);
const schema = fs.readFileSync(schemaPath, "utf8");
database.exec("PRAGMA foreign_keys = ON;");
database.exec(schema);
globalDatabase.plannerDatabase = database;
globalDatabase.plannerDatabasePath = databasePath;
return database;
}