import Database from 'better-sqlite3' import { mkdirSync } from 'fs' import { dirname } from 'path' let _db: InstanceType | null = null export function useDb() { if (_db) return _db const dbPath = process.env.DB_PATH || './data/brainstorm.db' mkdirSync(dirname(dbPath), { recursive: true }) _db = new Database(dbPath) _db.pragma('journal_mode = WAL') _db.pragma('foreign_keys = ON') _db.exec(` CREATE TABLE IF NOT EXISTS ideas ( id INTEGER PRIMARY KEY AUTOINCREMENT, text TEXT NOT NULL, category TEXT NOT NULL DEFAULT 'General', votes INTEGER NOT NULL DEFAULT 0, hidden INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS vote_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, idea_id INTEGER NOT NULL REFERENCES ideas(id) ON DELETE CASCADE, voter_hash TEXT NOT NULL, created_at TEXT NOT NULL DEFAULT (datetime('now')), UNIQUE(idea_id, voter_hash) ); CREATE TABLE IF NOT EXISTS sessions ( token TEXT PRIMARY KEY, created_at TEXT NOT NULL DEFAULT (datetime('now')), expires_at TEXT NOT NULL ); `) return _db }