Files
UAS_WEBGIS_AnderiSaputra_D1…/infrastruktur/koneksi.php
T
2026-06-10 17:30:26 +07:00

72 lines
2.7 KiB
PHP

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$host = getenv('INFRA_DB_HOST') ?: (getenv('DB_HOST') ?: '127.0.0.1');
$port = (int) (getenv('INFRA_DB_PORT') ?: (getenv('DB_PORT') ?: 3306));
$user = getenv('INFRA_DB_USER') ?: (getenv('DB_USER') ?: 'root');
$pass = getenv('INFRA_DB_PASSWORD');
$pass = $pass !== false ? $pass : (getenv('DB_PASSWORD') ?: '');
$dbname = getenv('INFRA_DB_NAME') ?: 'db_infrastruktur';
$conn = new mysqli($host, $user, $pass, '', $port);
if ($conn->connect_errno) {
http_response_code(500);
die('Koneksi database Infrastruktur gagal. Periksa environment variable database di Coolify.');
}
if (!$conn->select_db($dbname)) {
if (!$conn->query("CREATE DATABASE IF NOT EXISTS `$dbname`") || !$conn->select_db($dbname)) {
http_response_code(500);
die("Database Infrastruktur belum tersedia. Buat database `$dbname` atau gunakan akun yang memiliki izin CREATE DATABASE.");
}
}
$conn->set_charset('utf8mb4');
// Auto-create tables if not exist
$conn->query("CREATE TABLE IF NOT EXISTS tb_admin (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL DEFAULT 'infrastruktur'
)");
$conn->query("CREATE TABLE IF NOT EXISTS tb_spbu (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
nama_spbu VARCHAR(150) NOT NULL,
no_wa VARCHAR(20) DEFAULT NULL,
buka_24jam ENUM('Ya','Tidak') DEFAULT 'Tidak',
latitude DECIMAL(11,8) NOT NULL,
longitude DECIMAL(11,8) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)");
$conn->query("CREATE TABLE IF NOT EXISTS tb_jalan (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
nama_jalan VARCHAR(200) NOT NULL,
status_jalan ENUM('Nasional','Provinsi','Kabupaten') NOT NULL,
panjang_jalan VARCHAR(50) DEFAULT NULL,
geojson LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)");
$conn->query("CREATE TABLE IF NOT EXISTS tb_kavling (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
nama_kavling VARCHAR(200) NOT NULL,
status_kepemilikan ENUM('SHM','HGB','HGU','HP') NOT NULL,
luas_tanah VARCHAR(50) DEFAULT NULL,
geojson LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)");
// Insert default admin if not exist
$check = $conn->query("SELECT id FROM tb_admin WHERE username='admin'");
if ($check && $check->num_rows == 0) {
$pw = password_hash("password", PASSWORD_DEFAULT);
$conn->query("INSERT INTO tb_admin (username, password, role) VALUES ('admin', '$pw', 'infrastruktur')");
}
?>