29 lines
887 B
PHP
29 lines
887 B
PHP
<?php
|
|
// web/db.php
|
|
function db(): PDO {
|
|
static $pdo = null;
|
|
if ($pdo) return $pdo;
|
|
|
|
$pdo = new PDO('sqlite:' . dirname(__DIR__) . '/data/app.db', null, null, [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
]);
|
|
|
|
// Bedre concurrency når bot + web arbejder samtidig
|
|
$pdo->exec('PRAGMA journal_mode=WAL');
|
|
$pdo->exec('PRAGMA synchronous=NORMAL');
|
|
$pdo->exec('PRAGMA busy_timeout=3000'); // 3s
|
|
|
|
// Sikr users-tabellen findes (kompatibel med både 'password' og 'password_hash')
|
|
$pdo->exec("
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
username TEXT UNIQUE NOT NULL,
|
|
password TEXT, -- foretrukket kolonne (password_hash())
|
|
password_hash TEXT, -- ældre kolonne (legacy)
|
|
role TEXT DEFAULT 'user'
|
|
)
|
|
");
|
|
|
|
return $pdo;
|
|
}
|