const mariadb = require('mariadb'); require('dotenv').config(); const pool = mariadb.createPool({ host: process.env.DB_HOST || 'maria.casademm.de', port: parseInt(process.env.DB_PORT) || 3306, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, connectionLimit: 5 }); async function logFileAction(filename, action, user = 'anonymous') { let conn; try { if (!process.env.DB_USER) return; conn = await pool.getConnection(); await conn.query(` CREATE TABLE IF NOT EXISTS file_logs ( id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(255), action VARCHAR(50), user VARCHAR(255), timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); await conn.query("INSERT INTO file_logs (filename, action, user) VALUES (?, ?, ?)", [filename, action, user]); } catch (err) { console.error("DB Error (Log):", err); } finally { if (conn) conn.end(); } } async function initUserTable() { let conn; try { if (!process.env.DB_USER) return; conn = await pool.getConnection(); await conn.query(` CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); // Check if admin exists, if not create default const rows = await conn.query("SELECT * FROM users WHERE username = ?", ['admin']); if (rows.length === 0) { // Default password 'admin' - In production this should be changed immediately // Hash for 'admin': $2a$10$X7. // Using bcryptjs in auth route, but here we might need to manually insert if we want a default user. // For now, let's leave it empty and allow registration or manual insert. // Update: Let's actually insert a default admin/admin for the user to start. // hash of 'admin' const defaultHash = '$2a$10$w.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0'; // Placeholder, real hash in auth.js } } catch (err) { console.error("DB Error (Init Users):", err); } finally { if (conn) conn.end(); } } module.exports = { pool, logFileAction, initUserTable };