postgres database implementation

This commit is contained in:
2026-05-22 19:07:03 +02:00
parent dacc9ce2bc
commit e7f35d71e3
2 changed files with 146 additions and 97 deletions
+38 -9
View File
@@ -34,13 +34,42 @@ function load_env() {
// Automatically load on include
load_env();
function get_firebase_config(): array {
return [
'apiKey' => getenv('FIREBASE_API_KEY') ?: '',
'authDomain' => getenv('FIREBASE_AUTH_DOMAIN') ?: '',
'projectId' => getenv('FIREBASE_PROJECT_ID') ?: '',
'storageBucket' => getenv('FIREBASE_STORAGE_BUCKET') ?: '',
'messagingSenderId' => getenv('FIREBASE_MESSAGING_SENDER_ID') ?: '',
'appId' => getenv('FIREBASE_APP_ID') ?: '',
];
/**
* Get a PDO connection to the database.
*/
function get_db_connection(): ?PDO {
static $pdo = null;
if ($pdo !== null) {
return $pdo;
}
$url = getenv('DATABASE_URL');
if (!$url) {
return null;
}
$parsedUrl = parse_url($url);
if ($parsedUrl === false || !isset($parsedUrl['host'], $parsedUrl['user'], $parsedUrl['pass'], $parsedUrl['path'])) {
return null;
}
$host = $parsedUrl['host'];
$port = $parsedUrl['port'] ?? 5432;
$user = $parsedUrl['user'];
$pass = $parsedUrl['pass'];
$db = ltrim($parsedUrl['path'], '/');
$dsn = "pgsql:host=$host;port=$port;dbname=$db";
try {
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
return $pdo;
} catch (PDOException $e) {
error_log("Database connection failed: " . $e->getMessage());
return null;
}
}