diff --git a/01/backend/config/db.php b/01/backend/config/db.php index 287e5da..67677f8 100644 --- a/01/backend/config/db.php +++ b/01/backend/config/db.php @@ -1,4 +1,10 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - self::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - } catch (PDOException $exception) { - echo "Connection error: " . $exception->getMessage(); + 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',''))"); + + // Auto-initialize database if empty + $stmt = self::$conn->query("SHOW TABLES LIKE 'users'"); + if ($stmt->rowCount() == 0) { + $sqlFile = __DIR__ . '/../../../database/webgis_db.sql'; + if (file_exists($sqlFile)) { + $sql = file_get_contents($sqlFile); + self::$conn->exec($sql); + } } } return self::$conn; diff --git a/02/backend/config/db.php b/02/backend/config/db.php index 287e5da..67677f8 100644 --- a/02/backend/config/db.php +++ b/02/backend/config/db.php @@ -1,4 +1,10 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - self::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - } catch (PDOException $exception) { - echo "Connection error: " . $exception->getMessage(); + 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',''))"); + + // Auto-initialize database if empty + $stmt = self::$conn->query("SHOW TABLES LIKE 'users'"); + if ($stmt->rowCount() == 0) { + $sqlFile = __DIR__ . '/../../../database/webgis_db.sql'; + if (file_exists($sqlFile)) { + $sql = file_get_contents($sqlFile); + self::$conn->exec($sql); + } } } return self::$conn; diff --git a/03/backend/config/db.php b/03/backend/config/db.php index 287e5da..67677f8 100644 --- a/03/backend/config/db.php +++ b/03/backend/config/db.php @@ -1,4 +1,10 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - self::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - } catch (PDOException $exception) { - echo "Connection error: " . $exception->getMessage(); + 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',''))"); + + // Auto-initialize database if empty + $stmt = self::$conn->query("SHOW TABLES LIKE 'users'"); + if ($stmt->rowCount() == 0) { + $sqlFile = __DIR__ . '/../../../database/webgis_db.sql'; + if (file_exists($sqlFile)) { + $sql = file_get_contents($sqlFile); + self::$conn->exec($sql); + } } } return self::$conn;