Files
exoplasim/web/lib/labdb.class.php
T

21 lines
945 B
PHP

<?php
require_once __DIR__ . '/../config/lab.php';
class LabDb {
private static ?PDO $pdo = null;
public static function connection(): PDO {
if (self::$pdo) return self::$pdo;
$cfg = lab_config();
$dir = dirname($cfg['database']);
if (!is_dir($dir)) mkdir($dir, 0750, true);
$oldUmask = umask(0007);
$pdo = new PDO('sqlite:' . $cfg['database'], null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);
umask($oldUmask);
$pdo->exec('PRAGMA journal_mode=WAL');
$pdo->exec('PRAGMA busy_timeout=5000');
$pdo->exec('PRAGMA foreign_keys=ON');
$pdo->exec((string)file_get_contents(dirname(__DIR__) . '/server/schema.sql'));
foreach ([$cfg['database'], $cfg['database'].'-wal', $cfg['database'].'-shm'] as $file) if (is_file($file)) @chmod($file, 0660);
return self::$pdo = $pdo;
}
}