const sqlite3 = require('sqlite3').verbose(); const { DB_PATH } = require('./config'); const db = new sqlite3.Database(DB_PATH, (err) => { if (err) { console.error('数据库连接失败:', err.message); process.exit(1); } console.log('已连接到 SQLite 数据库'); }); function initializeDatabase() { db.serialize(() => { db.run(`CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`); db.run(`CREATE TABLE IF NOT EXISTS calendar_marks ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, date TEXT NOT NULL, status TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE(user_id, date), FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE )`); db.run(`CREATE INDEX IF NOT EXISTS idx_user_date ON calendar_marks(user_id, date)`); }); } initializeDatabase(); function closeDatabase() { return new Promise((resolve) => { db.close((err) => { if (err) { console.error('关闭数据库失败:', err.message); } else { console.log('数据库连接已关闭'); } resolve(); }); }); } module.exports = { db, closeDatabase };