Melakukan perubahan pada isi database di docker

This commit is contained in:
2026-06-09 20:40:21 +07:00
parent 6495336f18
commit f3251c35d7
+234 -1
View File
@@ -1,9 +1,242 @@
-- Inisialisasi database untuk deploy Docker / Coolify
-- 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`);