const Database = require('better-sqlite3'); const path = require('path'); /** * Initialize SQLite database with projects schema */ function initializeDatabase() { // Database file in project root const dbPath = path.join(__dirname, '..', 'database.sqlite'); // Initialize database connection const db = new Database(dbPath); // Enable WAL mode for better concurrency db.pragma('journal_mode = WAL'); // Create projects table db.exec(` CREATE TABLE IF NOT EXISTS projects ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, description TEXT, icon TEXT DEFAULT '📁', color TEXT DEFAULT '#4a9eff', path TEXT NOT NULL, createdAt TEXT NOT NULL, lastActivity TEXT NOT NULL, deletedAt TEXT NULL ) `); // Create index on deletedAt for efficient soft-delete queries db.exec(` CREATE INDEX IF NOT EXISTS idx_projects_deletedAt ON projects(deletedAt) `); // Create index on name for efficient name lookups db.exec(` CREATE INDEX IF NOT EXISTS idx_projects_name ON projects(name) `); return db; } /** * Initialize database with requireAuth check */ let dbInstance = null; function getDatabase() { if (!dbInstance) { try { dbInstance = initializeDatabase(); console.log('Database initialized successfully'); } catch (error) { console.error('Failed to initialize database:', error); throw error; } } return dbInstance; } // Initialize database immediately const db = getDatabase(); module.exports = { db, getDatabase };