feat: database schema and connection

This commit is contained in:
2026-05-20 17:40:44 +02:00
parent 40e9276cd0
commit f76d6456ab
2 changed files with 45 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
import Database from 'better-sqlite3';
import { applySchema } from './schema';
let _db: Database.Database | null = null;
export function getDb(path: string = ':memory:'): Database.Database {
if (_db) return _db;
_db = new Database(path);
_db.pragma('journal_mode = WAL');
_db.pragma('foreign_keys = ON');
applySchema(_db);
return _db;
}
export function resetDb(): void {
_db = null;
}
+28
View File
@@ -0,0 +1,28 @@
import type { Database } from 'better-sqlite3';
export function applySchema(db: Database): void {
db.exec(`
CREATE TABLE IF NOT EXISTS sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
duration_min INTEGER NOT NULL,
notes TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS schedule (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL UNIQUE,
planned_min INTEGER NOT NULL,
status TEXT NOT NULL DEFAULT 'pending',
skip_reason TEXT,
ai_rationale TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
);
`);
}