// src/database.js // SQLite database initialization and maintenance for Firefrost Arbiter const Database = require('better-sqlite3'); const db = new Database('linking.db'); // Create tables if they don't exist db.exec(` CREATE TABLE IF NOT EXISTS link_tokens ( token TEXT PRIMARY KEY, email TEXT NOT NULL, tier TEXT NOT NULL, subscription_id TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, used INTEGER DEFAULT 0 ) `); db.exec(` CREATE TABLE IF NOT EXISTS audit_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, admin_id TEXT NOT NULL, target_user TEXT NOT NULL, action TEXT NOT NULL, reason TEXT NOT NULL, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP ) `); // Cleanup function - removes tokens older than 24 hours function cleanupExpiredTokens() { const stmt = db.prepare(` DELETE FROM link_tokens WHERE created_at < datetime('now', '-1 day') `); const info = stmt.run(); console.log(`[Database] Cleaned up ${info.changes} expired tokens.`); } // Run cleanup once every 24 hours (86400000 ms) setInterval(cleanupExpiredTokens, 86400000); // Run cleanup on startup to clear any that expired while app was down cleanupExpiredTokens(); module.exports = db;