diff --git a/.env.example b/.env.example deleted file mode 100644 index 74805b4..0000000 --- a/.env.example +++ /dev/null @@ -1,7 +0,0 @@ -# Salin ke Environment Variables di Coolify / Docker -DB_HOST=db -DB_USER=webgis -DB_PASS=webgis123 -POVERTY_DB_NAME=webgis_p3 -SPBU_DB_NAME=webgis_spbu -JALAN_DB_NAME=WEB_GIS diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index d7c4a4a..0000000 --- a/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM php:8.2-apache - -RUN docker-php-ext-install mysqli pdo pdo_mysql \ - && a2enmod rewrite headers - -COPY . /var/www/html/ - -RUN chown -R www-data:www-data /var/www/html - -COPY docker/apache.conf /etc/apache2/sites-available/000-default.conf - -EXPOSE 80 diff --git a/Manajemen_Jalan_dan_Parsil/api/db.php b/Manajemen_Jalan_dan_Parsil/api/db.php index 16e688c..a775a10 100644 --- a/Manajemen_Jalan_dan_Parsil/api/db.php +++ b/Manajemen_Jalan_dan_Parsil/api/db.php @@ -1,35 +1,62 @@ connect_error) { - http_response_code(500); - echo json_encode([ - 'status' => 'gagal', - 'pesan' => 'Koneksi database gagal: ' . $conn->connect_error - ]); - exit; - } +$conn = new mysqli($host, $user, $pass); +if ($conn->connect_error) { + http_response_code(500); + echo json_encode(['status' => 'gagal', 'pesan' => 'Koneksi database gagal: ' . $conn->connect_error]); + exit; +} - $conn->set_charset('utf8mb4'); +$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); +$conn->select_db($db); +$conn->set_charset('utf8mb4'); + +// Auto-create tables +$conn->query(" + CREATE TABLE IF NOT EXISTS `tb_jalan` ( + `id` INT NOT NULL AUTO_INCREMENT, + `nama_jalan` VARCHAR(100) NOT NULL, + `status_jalan` ENUM('Nasional','Provinsi','Kabupaten') NOT NULL, + `panjang_jalan` DECIMAL(12,2) NOT NULL DEFAULT '0.00', + `geojson` JSON NOT NULL, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +"); + +$conn->query(" + CREATE TABLE IF NOT EXISTS `tb_parsil` ( + `id` INT NOT NULL AUTO_INCREMENT, + `nama_parsil` VARCHAR(100) NOT NULL, + `status_kepemilikan` ENUM('SHM','HGB','HGU','HP') NOT NULL, + `luas_tanah` DECIMAL(16,4) NOT NULL DEFAULT '0.0000', + `geojson` JSON NOT NULL, + `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +"); + +function getConnection() { + global $conn; return $conn; } +?> \ No newline at end of file diff --git a/WebGIS_PovertyMap/config.php b/WebGIS_PovertyMap/config.php index a6120fd..6ecd985 100644 --- a/WebGIS_PovertyMap/config.php +++ b/WebGIS_PovertyMap/config.php @@ -1,33 +1,40 @@ connect_error) { + http_response_code(500); + die(json_encode(['error' => 'Koneksi database gagal: ' . $conn->connect_error])); +} + +$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); +$conn->select_db($db); +$conn->set_charset('utf8mb4'); function getDB() { - $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); - if ($conn->connect_error) { - http_response_code(500); - die(json_encode(['error' => 'Koneksi database gagal: ' . $conn->connect_error])); - } - $conn->set_charset('utf8mb4'); + global $conn; return $conn; } -// Header CORS & JSON untuk semua response header('Content-Type: application/json; charset=utf-8'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type'); -// Handle preflight OPTIONS request if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit(); } -?> +?> \ No newline at end of file diff --git a/WebGIS_SPBU/config.php b/WebGIS_SPBU/config.php index 044bb62..921091f 100644 --- a/WebGIS_SPBU/config.php +++ b/WebGIS_SPBU/config.php @@ -1,13 +1,32 @@ connect_error) { + http_response_code(500); + die(json_encode(['error' => 'Koneksi MySQL gagal: ' . $conn->connect_error])); +} + +$conn->query("CREATE DATABASE IF NOT EXISTS `$db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); +$conn->select_db($db); +$conn->set_charset('utf8mb4'); + +function getDB() { + global $conn; + return $conn; +} function jsonError($message, $code = 500) { http_response_code($code); @@ -15,32 +34,8 @@ function jsonError($message, $code = 500) { exit(); } -function getDB() { - mysqli_report(MYSQLI_REPORT_OFF); - - $conn = new mysqli(DB_HOST, DB_USER, DB_PASS); - if ($conn->connect_error) { - http_response_code(500); - die(json_encode(['error' => 'Koneksi MySQL gagal: ' . $conn->connect_error])); - } - - $dbName = DB_NAME; - if (!$conn->query("CREATE DATABASE IF NOT EXISTS `{$dbName}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")) { - http_response_code(500); - die(json_encode(['error' => 'Gagal membuat database: ' . $conn->error])); - } - - if (!$conn->select_db($dbName)) { - http_response_code(500); - die(json_encode(['error' => 'Gagal memilih database: ' . $conn->error])); - } - - $conn->set_charset('utf8mb4'); - return $conn; -} - function ensureSpbuSchema($db) { - if (!$db->query(" + $db->query(" CREATE TABLE IF NOT EXISTS data_spbu ( id INT AUTO_INCREMENT PRIMARY KEY, nama_spbu VARCHAR(200) NOT NULL, @@ -52,15 +47,7 @@ function ensureSpbuSchema($db) { created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 - ")) { - jsonError('Gagal membuat tabel data_spbu: ' . $db->error); - } - - $check = $db->query("SHOW COLUMNS FROM data_spbu LIKE 'alamat'"); - if ($check && $check->num_rows === 0) { - $db->query("ALTER TABLE data_spbu ADD COLUMN alamat VARCHAR(300) NOT NULL DEFAULT '' AFTER nama_spbu"); - $db->query("UPDATE data_spbu SET alamat = CONCAT(nama_spbu, ', Pontianak') WHERE alamat = ''"); - } + "); $countRes = $db->query("SELECT COUNT(*) AS total FROM data_spbu"); if ($countRes && (int)$countRes->fetch_assoc()['total'] === 0) { @@ -70,20 +57,15 @@ function ensureSpbuSchema($db) { function seedSpbuSampleData($db) { $samples = [ - ['SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200], - ['SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450], - ['SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600], - ['SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700], + ['SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200], + ['SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450], + ['SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600], + ['SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700], ['SPBU Jl. Kom. Yos Sudarso', 'Jl. Kom. Yos Sudarso No. 22, Pontianak', '0812-1111-0005', 'Ya', -0.0350, 109.3550], - ['SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300], - ['SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380], + ['SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300], + ['SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380], ]; - - $stmt = $db->prepare( - "INSERT INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) - VALUES (?, ?, ?, ?, ?, ?)" - ); - + $stmt = $db->prepare("INSERT INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?)"); foreach ($samples as $row) { [$nama, $alamat, $wa, $jam, $lat, $lng] = $row; $stmt->bind_param('ssssdd', $nama, $alamat, $wa, $jam, $lat, $lng); @@ -101,3 +83,4 @@ if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit(); } +?> \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 7b3c029..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,36 +0,0 @@ -services: - web: - build: . - ports: - - "8087:80" - environment: - DB_HOST: db - DB_USER: webgis - DB_PASS: webgis123 - POVERTY_DB_NAME: webgis_p3 - SPBU_DB_NAME: webgis_spbu - JALAN_DB_NAME: WEB_GIS - depends_on: - db: - condition: service_healthy - - db: - image: mysql:8.0 - environment: - MYSQL_ROOT_PASSWORD: root123 - MYSQL_USER: webgis - MYSQL_PASSWORD: webgis123 - MYSQL_DATABASE: webgis_p3 - ports: - - "3307:3306" - volumes: - - mysql_data:/var/lib/mysql3 - - ./docker:/docker-entrypoint-initdb.d:ro - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot123"] - interval: 5s - timeout: 5s - retries: 10 - -volumes: - mysql_data3: \ No newline at end of file diff --git a/docker/apache.conf b/docker/apache.conf deleted file mode 100644 index 6f4222b..0000000 --- a/docker/apache.conf +++ /dev/null @@ -1,13 +0,0 @@ - - DocumentRoot /var/www/html - DirectoryIndex index.html index.php - - - Options Indexes FollowSymLinks - AllowOverride All - Require all granted - - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - diff --git a/docker/init-databases.sql b/docker/init-databases.sql deleted file mode 100644 index 89d9bad..0000000 --- a/docker/init-databases.sql +++ /dev/null @@ -1,241 +0,0 @@ --- Buat database -CREATE DATABASE IF NOT EXISTS webgis_p3 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE IF NOT EXISTS webgis_spbu CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE IF NOT EXISTS WEB_GIS CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- Kasih akses user webgis -GRANT ALL PRIVILEGES ON webgis_p3.* TO 'webgis'@'%'; -GRANT ALL PRIVILEGES ON webgis_spbu.* TO 'webgis'@'%'; -GRANT ALL PRIVILEGES ON WEB_GIS.* TO 'webgis'@'%'; -FLUSH PRIVILEGES; - --- Import data webgis_p3 -USE webgis_p3; --- ============================================================ --- DATABASE LENGKAP: webgis_p3 --- WebGIS Poverty Mapping + Sistem Login (3 Role) --- Import file ini ke Laragon phpMyAdmin --- ============================================================ - -CREATE DATABASE IF NOT EXISTS webgis_p3 - CHARACTER SET utf8mb4 - COLLATE utf8mb4_unicode_ci; - -USE webgis_p3; - --- ── Tabel Data Jalan (Polyline) ──────────────────────────── -CREATE TABLE IF NOT EXISTS data_jalan ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_jalan VARCHAR(200) NOT NULL, - status ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten', - panjang_m DOUBLE NOT NULL DEFAULT 0, - geojson LONGTEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Tabel Data Parsil Tanah (Polygon) ───────────────────── -CREATE TABLE IF NOT EXISTS data_parsil ( - id INT AUTO_INCREMENT PRIMARY KEY, - no_parsil VARCHAR(100) NOT NULL, - pemilik VARCHAR(200) NOT NULL, - status ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM', - luas_m2 DOUBLE NOT NULL DEFAULT 0, - geojson LONGTEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Tabel Data SPBU (Point/Marker) ──────────────────────── -CREATE TABLE IF NOT EXISTS data_spbu ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_spbu VARCHAR(200) NOT NULL, - no_wa VARCHAR(20) NOT NULL, - buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak', - latitude DOUBLE NOT NULL, - longitude DOUBLE NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Data Contoh SPBU ────────────────────────────────────── -INSERT INTO data_spbu (nama_spbu, no_wa, buka_24_jam, latitude, longitude) VALUES -('SPBU Jl. Ahmad Yani', '0812-1111-0001', 'Ya', -0.0400, 109.3200), -('SPBU Jl. Gajah Mada', '0812-1111-0002', 'Ya', -0.0520, 109.3450), -('SPBU Jl. Diponegoro', '0812-1111-0003', 'Tidak', -0.0610, 109.3600), -('SPBU Jl. Sutan Syahrir', '0812-1111-0004', 'Tidak', -0.0480, 109.3700), -('SPBU Jl. Kom. Yos Sudarso', '0812-1111-0005', 'Ya', -0.0350, 109.3550); - --- ── Tabel Data Kemiskinan (Point/Marker) ────────────────── -CREATE TABLE IF NOT EXISTS data_kemiskinan ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_kk VARCHAR(200) NOT NULL, - jumlah_kk INT NOT NULL DEFAULT 1, - alamat TEXT NOT NULL, - latitude DOUBLE NOT NULL, - longitude DOUBLE NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Tabel Data Rumah Ibadah (Point/Marker + Radius Buffer) -CREATE TABLE IF NOT EXISTS data_masjid ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_masjid VARCHAR(200) NOT NULL, - jenis ENUM('Masjid','Mushola','Gereja','Pura','Vihara','Klenteng') NOT NULL DEFAULT 'Masjid', - pic_masjid VARCHAR(200) NOT NULL, - alamat TEXT NOT NULL, - radius_m INT NOT NULL DEFAULT 500, - latitude DOUBLE NOT NULL, - longitude DOUBLE NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Tabel Users (Sistem Login 3 Role) ───────────────────── -CREATE TABLE IF NOT EXISTS users ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(100) NOT NULL UNIQUE, - nama_lengkap VARCHAR(200) NOT NULL, - role ENUM('admin','petugas','pengurus','walikota') NOT NULL, - password_hash VARCHAR(255) NOT NULL, - aktif TINYINT(1) NOT NULL DEFAULT 1, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - INDEX idx_role (role), - INDEX idx_aktif (aktif) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- ── Akun Demo ───────────────────────────────────────────── --- Password semua akun: "password" (bcrypt via PHP PASSWORD_DEFAULT) -INSERT INTO users (username, nama_lengkap, role, password_hash) VALUES -( - 'admin', - 'Administrator Sistem', - 'admin', - '$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG' -), -( - 'pengurus', - 'Pengurus Rumah Ibadah', - 'pengurus', - '$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG' -), -( - 'walikota', - 'Walikota Pontianak', - 'walikota', - '$2y$10$mhMxyKlOSSTQxfmWXEncfe1AF56CJ8fb.v0h0CYZ.ELQQd8iP5LrG' -); - - --- Import data webgis_spbu -USE webgis_spbu; --- ============================================================ --- DATABASE: webgis_spbu --- Pertemuan 3 – Layer Groups and Layers Control --- Data SPBU dengan 2 Layer Group: Buka 24 Jam & Tidak 24 Jam --- ============================================================ - -CREATE DATABASE IF NOT EXISTS webgis_spbu - CHARACTER SET utf8mb4 - COLLATE utf8mb4_unicode_ci; - -USE webgis_spbu; - --- buka_24_jam: 'Ya' → Layer Group "SPBU Buka 24 Jam" --- 'Tidak' → Layer Group "SPBU Tidak Buka 24 Jam" -CREATE TABLE IF NOT EXISTS data_spbu ( - id INT AUTO_INCREMENT PRIMARY KEY, - nama_spbu VARCHAR(200) NOT NULL, - alamat VARCHAR(300) NOT NULL, - no_wa VARCHAR(20) NOT NULL, - buka_24_jam ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak', - latitude DOUBLE NOT NULL, - longitude DOUBLE NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- Migrasi: tambah kolom alamat jika tabel lama dari PovertyMap belum punya --- ALTER TABLE data_spbu ADD COLUMN alamat VARCHAR(300) NOT NULL DEFAULT '' AFTER nama_spbu; --- UPDATE data_spbu SET alamat = CONCAT(nama_spbu, ', Pontianak') WHERE alamat = ''; - -INSERT IGNORE INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES -('SPBU Jl. Ahmad Yani', 'Jl. Ahmad Yani No. 12, Pontianak', '0812-1111-0001', 'Ya', -0.0400, 109.3200), -('SPBU Jl. Gajah Mada', 'Jl. Gajah Mada No. 45, Pontianak', '0812-1111-0002', 'Ya', -0.0520, 109.3450), -('SPBU Jl. Diponegoro', 'Jl. Diponegoro No. 88, Pontianak', '0812-1111-0003', 'Tidak', -0.0610, 109.3600), -('SPBU Jl. Sutan Syahrir', 'Jl. Sutan Syahrir No. 5, Pontianak', '0812-1111-0004', 'Tidak', -0.0480, 109.3700), -('SPBU Jl. Kom. Yos Sudarso', 'Jl. Kom. Yos Sudarso No. 22, Pontianak', '0812-1111-0005', 'Ya', -0.0350, 109.3550), -('SPBU Jl. Tanjung Raya', 'Jl. Tanjung Raya No. 101, Pontianak', '0812-1111-0006', 'Tidak', -0.0580, 109.3300), -('SPBU Jl. Veteran', 'Jl. Veteran No. 33, Pontianak', '0812-1111-0007', 'Ya', -0.0450, 109.3380); - --- Import data WEB_GIS -USE WEB_GIS; --- ========================================================= --- WebGIS - Struktur Database --- Tugas: Manajemen Data Jalan & Parsil Tanah (Kavling) --- Database: WEB_GIS --- Tipe Geometri: GeoJSON (LineString & Polygon) --- ========================================================= - -CREATE DATABASE IF NOT EXISTS WEB_GIS - CHARACTER SET utf8mb4 - COLLATE utf8mb4_unicode_ci; - -USE WEB_GIS; - --- --------------------------------------------------------- --- TABEL 1: Manajemen Data Jalan --- Tipe Geometri : GeoJSON LineString --- Panjang Jalan : Dihitung otomatis oleh LeafletJS (meter) --- --------------------------------------------------------- -CREATE TABLE IF NOT EXISTS `tb_jalan` ( - `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key jalan', - `nama_jalan` VARCHAR(100) NOT NULL COMMENT 'Nama ruas jalan', - `status_jalan` ENUM( - 'Nasional', - 'Provinsi', - 'Kabupaten' - ) NOT NULL COMMENT 'Status administrasi jalan', - `panjang_jalan` DECIMAL(12,2) NOT NULL DEFAULT '0.00' COMMENT 'Panjang jalan dalam meter (dihitung otomatis LeafletJS via L.LatLng.distanceTo)', - `geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON LineString', - `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) -) ENGINE=InnoDB - DEFAULT CHARSET=utf8mb4 - COLLATE=utf8mb4_unicode_ci - COMMENT='Tabel manajemen data jalan berdasarkan status administrasi. Geometri disimpan sebagai GeoJSON LineString.'; - - --- --------------------------------------------------------- --- TABEL 2: Manajemen Parsil Tanah / Kavling --- Tipe Geometri : GeoJSON Polygon --- Luas Tanah : Dihitung otomatis oleh LeafletJS (m²) --- --------------------------------------------------------- -CREATE TABLE IF NOT EXISTS `tb_parsil` ( - `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Primary key parsil', - `nama_parsil` VARCHAR(100) NOT NULL COMMENT 'Nama atau nomor identifikasi parsil tanah', - `status_kepemilikan` ENUM( - 'SHM', - 'HGB', - 'HGU', - 'HP' - ) NOT NULL COMMENT 'Status sertifikat kepemilikan: SHM=Sertifikat Hak Milik, HGB=Hak Guna Bangunan, HGU=Hak Guna Usaha, HP=Hak Pakai', - `luas_tanah` DECIMAL(16,4) NOT NULL DEFAULT '0.0000' COMMENT 'Luas tanah dalam meter persegi (dihitung otomatis LeafletJS via formula geodesic spherical)', - `geojson` JSON NOT NULL COMMENT 'Koordinat geometri dalam format GeoJSON Polygon', - `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) -) ENGINE=InnoDB - DEFAULT CHARSET=utf8mb4 - COLLATE=utf8mb4_unicode_ci - COMMENT='Tabel manajemen parsil/kavling tanah berdasarkan status kepemilikan. Geometri disimpan sebagai GeoJSON Polygon.'; - - --- --------------------------------------------------------- --- Contoh Indeks untuk performa query filter --- --------------------------------------------------------- -ALTER TABLE `tb_jalan` ADD INDEX `idx_status_jalan` (`status_jalan`); -ALTER TABLE `tb_parsil` ADD INDEX `idx_status_parsil` (`status_kepemilikan`); diff --git a/health.php b/health.php deleted file mode 100644 index ea91727..0000000 --- a/health.php +++ /dev/null @@ -1,30 +0,0 @@ - true, - 'mysqli' => extension_loaded('mysqli'), - 'version' => PHP_VERSION, -]; - -$dbHost = getenv('DB_HOST') ?: 'localhost'; -$dbUser = getenv('DB_USER') ?: 'root'; -$dbPass = getenv('DB_PASS') ?: ''; -$dbName = getenv('POVERTY_DB_NAME') ?: 'webgis_p3'; - -$conn = @new mysqli($dbHost, $dbUser, $dbPass, $dbName); -$checks['database'] = [ - 'host' => $dbHost, - 'name' => $dbName, - 'ok' => !$conn->connect_error, - 'message' => $conn->connect_error ?: 'Terhubung', -]; - -if (!$conn->connect_error) { - $conn->close(); -} - -$checks['ok'] = $checks['mysqli'] && $checks['database']['ok']; - -http_response_code($checks['ok'] ? 200 : 503); -echo json_encode($checks, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);