const Database = require('better-sqlite3'); const path = require('path'); const dbPath = path.resolve(__dirname, 'eventy.db'); const db = new Database(dbPath); // Enable WAL mode for better concurrency db.pragma('journal_mode = WAL'); function initDb() { const schema = ` CREATE TABLE IF NOT EXISTS events ( id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, start_date TEXT NOT NULL, end_date TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS participants ( id TEXT PRIMARY KEY, event_id TEXT NOT NULL, name TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')), FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS votes ( id TEXT PRIMARY KEY, participant_id TEXT NOT NULL, date TEXT NOT NULL, status TEXT CHECK(status IN ('available', 'unavailable', 'maybe')) NOT NULL, FOREIGN KEY (participant_id) REFERENCES participants(id) ON DELETE CASCADE, UNIQUE(participant_id, date) ); CREATE TABLE IF NOT EXISTS event_dates ( event_id TEXT NOT NULL, date TEXT NOT NULL, PRIMARY KEY (event_id, date), FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE ); `; db.exec(schema); console.log('Database initialized'); } module.exports = { db, initDb };