diff --git a/versi/backend/api/jalan.php b/versi/backend/api/jalan.php index 886efd9..181ab88 100644 --- a/versi/backend/api/jalan.php +++ b/versi/backend/api/jalan.php @@ -1,4 +1,4 @@ -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - self::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); + try { + self::$conn = new PDO( + "mysql:host={$host};port={$port};dbname={$dbName};charset=utf8mb4", + $username, + $password + ); + self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + self::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - // Disable strict mode for GROUP BY to prevent 1055 errors in Coolify's MariaDB - self::$conn->exec("SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"); + // Disable strict mode for GROUP BY to prevent 1055 errors in Coolify's MariaDB + self::$conn->exec("SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"); - // Auto-initialize database if empty - $stmt = self::$conn->query("SHOW TABLES LIKE 'users'"); - if ($stmt->rowCount() == 0) { - $sqlFile = __DIR__ . '/../../db_scripts/webgis_naufal_zaky.sql'; - if (file_exists($sqlFile)) { - $sql = file_get_contents($sqlFile); - self::$conn->exec($sql); + // Auto-initialize database if empty + $stmt = self::$conn->query("SHOW TABLES LIKE 'users'"); + if ($stmt->rowCount() == 0) { + $sqlFile = __DIR__ . '/../../db_scripts/webgis_naufal_zaky.sql'; + if (file_exists($sqlFile)) { + $sql = file_get_contents($sqlFile); + self::$conn->exec($sql); + } + } + } catch (PDOException $e) { + $isApi = (defined('JSON_REQUEST') && JSON_REQUEST) || + (strpos($_SERVER['REQUEST_URI'] ?? '', '/api/') !== false) || + (strpos($_SERVER['REQUEST_URI'] ?? '', 'endpoints/') !== false) || + (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false); + + if ($isApi) { + header('Content-Type: application/json; charset=utf-8'); + http_response_code(500); + echo json_encode([ + 'status' => 'error', + 'message' => 'Database Connection Failed: ' . $e->getMessage() + ]); + exit(); + } else { + die("Database Connection Failed: " . $e->getMessage()); } } } diff --git a/webgis_app/import.php b/webgis_app/import.php index e8b5d60..53045c4 100644 --- a/webgis_app/import.php +++ b/webgis_app/import.php @@ -1,4 +1,4 @@ -