setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $pdo->exec('PRAGMA foreign_keys = ON'); $pdo->exec('PRAGMA journal_mode = WAL'); self::migrate($pdo); return $pdo; } private static function migrate(PDO $pdo): void { $pdo->exec( 'CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, slug TEXT NOT NULL, author TEXT NOT NULL, email TEXT NOT NULL, website TEXT DEFAULT "", body TEXT NOT NULL, status TEXT NOT NULL DEFAULT "pending", ip_hash TEXT NOT NULL DEFAULT "", user_agent TEXT NOT NULL DEFAULT "", created_at TEXT NOT NULL, updated_at TEXT NOT NULL )' ); $pdo->exec('CREATE INDEX IF NOT EXISTS comments_slug_status_idx ON comments(slug, status)'); $pdo->exec('CREATE INDEX IF NOT EXISTS comments_status_created_idx ON comments(status, created_at)'); } }