. */ function database(): PDO { static $pdo = null; if ($pdo !== null) { return $pdo; } $host = '127.0.0.1'; $name = 'gnufaultdb'; $user = 'gnufaultdb_user'; $password = trim(file_get_contents('/etc/gnufault.d/password')); $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$name;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false ]; try { $pdo = new PDO($dsn, $user, $password, $options); } catch (\PDOException $e) { throw new \PDOException($e->getMessage(), (int)$e->getCode()); } return $pdo; } function query(string $sql, array $parameters = []): PDOStatement { $statement = database()->prepare($sql); $statement->execute($parameters); return $statement; } function fetch_row(string $sql, array $parameters = []): ?array { $row = query($sql, $parameters)->fetch(); return $row === false ? null : $row; } function insert_row(string $sql, array $parameters = []): int { query($sql, $parameters); return (int)database()->lastInsertId(); } ?>