// 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;
