import Database from 'better-sqlite3'; import { mkdirSync } from 'fs'; mkdirSync('data', { recursive: true }); const db = new Database('data/fiddles.db'); db.pragma('journal_mode = WAL'); db.pragma('foreign_keys = ON'); db.exec(` CREATE TABLE IF NOT EXISTS fiddles ( id TEXT PRIMARY KEY, title TEXT NOT NULL DEFAULT 'Untitled', html TEXT NOT NULL DEFAULT '', css TEXT NOT NULL DEFAULT '', css_type TEXT NOT NULL DEFAULT 'css', js TEXT NOT NULL DEFAULT '', js_type TEXT NOT NULL DEFAULT 'javascript', created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ) `); // Migration: add js_type column for existing databases try { db.exec(`ALTER TABLE fiddles ADD COLUMN js_type TEXT NOT NULL DEFAULT 'javascript'`); } catch (_) { /* column already exists */ } export const stmts = { insert: db.prepare(` INSERT INTO fiddles (id, title, html, css, css_type, js, js_type) VALUES (@id, @title, @html, @css, @css_type, @js, @js_type) `), get: db.prepare('SELECT * FROM fiddles WHERE id = ?'), update: db.prepare(` UPDATE fiddles SET title = @title, html = @html, css = @css, css_type = @css_type, js = @js, js_type = @js_type, updated_at = datetime('now') WHERE id = @id `), list: db.prepare('SELECT id, title, css_type, js_type, created_at, updated_at FROM fiddles ORDER BY updated_at DESC LIMIT 50'), }; export default db;