chore: sync repository snapshot
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
// ── RESOLUSI ENVIRONMENT VARIABLE ────────────────────────────────────────────
|
||||
// Dipakai oleh api/config.php dan docker/init-db.php. Prioritas nilai mengikuti
|
||||
// perilaku Coolify (lihat coolify-deployment.md Aturan #1):
|
||||
// env var asli (Coolify/Docker) > file .env di root project > default.
|
||||
// File .env opsional — di dalam container memang tidak ada.
|
||||
|
||||
function loadEnvFile(string $path): array
|
||||
{
|
||||
if (!is_file($path)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$vars = [];
|
||||
foreach (file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
|
||||
if (str_starts_with(trim($line), '#') || !str_contains($line, '=')) continue;
|
||||
[$key, $value] = explode('=', $line, 2);
|
||||
$vars[trim($key)] = trim($value);
|
||||
}
|
||||
return $vars;
|
||||
}
|
||||
|
||||
function env(string $key): ?string
|
||||
{
|
||||
static $fileVars = null;
|
||||
if ($fileVars === null) {
|
||||
$fileVars = loadEnvFile(__DIR__ . '/../.env');
|
||||
}
|
||||
|
||||
$real = getenv($key);
|
||||
if ($real !== false && $real !== '') {
|
||||
return $real;
|
||||
}
|
||||
return ($fileVars[$key] ?? '') !== '' ? $fileVars[$key] : null;
|
||||
}
|
||||
|
||||
// Nama variabel project ini (DB_NAME/DB_USER/DB_PASS) maupun alias gaya Laravel
|
||||
// (DB_DATABASE/DB_USERNAME/DB_PASSWORD) sama-sama diterima — lihat Aturan #2.
|
||||
function dbConfig(): array
|
||||
{
|
||||
$envAny = function (array $keys, string $default): string {
|
||||
foreach ($keys as $key) {
|
||||
$value = env($key);
|
||||
if ($value !== null) return $value;
|
||||
}
|
||||
return $default;
|
||||
};
|
||||
|
||||
return [
|
||||
'host' => $envAny(['DB_HOST'], 'localhost'),
|
||||
'port' => $envAny(['DB_PORT'], '3306'),
|
||||
'dbname' => $envAny(['DB_NAME', 'DB_DATABASE'], ''),
|
||||
'username' => $envAny(['DB_USER', 'DB_USERNAME'], 'root'),
|
||||
'password' => $envAny(['DB_PASS', 'DB_PASSWORD'], ''),
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user