postgres database implementation
This commit is contained in:
+38
-9
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user