- new blog cms

This commit is contained in:
Ty Clifford
2026-07-04 19:41:44 -04:00
parent 64cb76a846
commit 782b983bf4
819 changed files with 3103 additions and 88735 deletions
+49
View File
@@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
namespace NeonBlog;
use PDO;
final class Database
{
public static function connect(string $path): PDO
{
$dir = dirname($path);
if (!is_dir($dir)) {
mkdir($dir, 0775, true);
}
$pdo = new PDO('sqlite:' . $path);
$pdo->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)');
}
}