-- Database schema for WebGIS Pemetaan Kemiskinan Pontianak

CREATE DATABASE IF NOT EXISTS webgis;
USE webgis;

-- 1. Tabel rumah_ibadah
DROP TABLE IF EXISTS `log_bantuan`;
DROP TABLE IF EXISTS `rumah_ibadah`;
CREATE TABLE `rumah_ibadah` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(255) NOT NULL,
  `jenis` varchar(100) NOT NULL,
  `alamat` text,
  `radius` double NOT NULL DEFAULT 0,
  `lat` double NOT NULL,
  `lng` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2. Tabel penduduk_miskin
DROP TABLE IF EXISTS `penduduk_miskin`;
CREATE TABLE `penduduk_miskin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(255) NOT NULL,
  `kategori_bantuan` varchar(255) NOT NULL,
  `jumlah_jiwa` int(11) NOT NULL DEFAULT 1,
  `lat` double NOT NULL,
  `lng` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 3. Tabel log_bantuan
CREATE TABLE `log_bantuan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `miskin_id` int(11) NOT NULL,
  `ibadah_id` int(11) NOT NULL,
  `tipe_bantuan` varchar(255) NOT NULL,
  `tanggal` date NOT NULL,
  `keterangan` text,
  PRIMARY KEY (`id`),
  KEY `fk_log_miskin` (`miskin_id`),
  KEY `fk_log_ibadah` (`ibadah_id`),
  CONSTRAINT `fk_log_ibadah` FOREIGN KEY (`ibadah_id`) REFERENCES `rumah_ibadah` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_log_miskin` FOREIGN KEY (`miskin_id`) REFERENCES `penduduk_miskin` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 4. Tabel jalan
DROP TABLE IF EXISTS `jalan`;
CREATE TABLE `jalan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(255) NOT NULL,
  `status` varchar(100) NOT NULL DEFAULT 'Kabupaten',
  `panjang` double NOT NULL DEFAULT 0,
  `geom` geometry NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 5. Tabel parsil
DROP TABLE IF EXISTS `parsil`;
CREATE TABLE `parsil` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(255) NOT NULL,
  `status` varchar(100) NOT NULL DEFAULT 'SHM',
  `luas` double NOT NULL DEFAULT 0,
  `geom` geometry NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 6. Tabel spbu
DROP TABLE IF EXISTS `spbu`;
CREATE TABLE `spbu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(255) NOT NULL,
  `no_wa` varchar(20) DEFAULT NULL,
  `is_24_jam` tinyint(1) NOT NULL DEFAULT 0,
  `lat` double NOT NULL,
  `lng` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Data Contoh (Sample Data) untuk Pontianak

-- Data Contoh Rumah Ibadah
INSERT INTO `rumah_ibadah` (`nama`, `jenis`, `alamat`, `radius`, `lat`, `lng`) VALUES
('Masjid Raya Mujahidin', 'Masjid', 'Jl. Jenderal Ahmad Yani, Akcaya, Kec. Pontianak Sel.', 500, -0.0435, 109.3440),
('Gereja Katedral Santo Yosef', 'Gereja', 'Jl. Patria Tama, Darat Sekip, Kec. Pontianak Kota', 500, -0.0278, 109.3370),
('Vihara Bodhisatva Karaniya Metta', 'Vihara', 'Jl. Kapten Marsan, Darat Sekip, Kec. Pontianak Kota', 500, -0.0232, 109.3432);

-- Data Contoh Penduduk Miskin
INSERT INTO `penduduk_miskin` (`nama`, `kategori_bantuan`, `jumlah_jiwa`, `lat`, `lng`) VALUES
('Budi Santoso', 'Makan', 4, -0.0420, 109.3415),
('Siti Aminah', 'Pemberdayaan', 3, -0.0285, 109.3395),
('Ahmad Subarjo', 'Makan', 5, -0.0245, 109.3448);

-- Data Contoh Log Bantuan
INSERT INTO `log_bantuan` (`miskin_id`, `ibadah_id`, `tipe_bantuan`, `tanggal`, `keterangan`) VALUES
(1, 1, 'Sembako', '2026-05-15', 'Pembagian paket sembako bulanan'),
(2, 2, 'Pendidikan', '2026-05-20', 'Bantuan biaya sekolah anak'),
(3, 1, 'Uang Tunai', '2026-06-01', 'Santunan tunai darurat');

-- Data Contoh SPBU
INSERT INTO `spbu` (`nama`, `no_wa`, `is_24_jam`, `lat`, `lng`) VALUES
('SPBU Ahmad Yani', '081234567890', 1, -0.0485, 109.3490),
('SPBU Oesman Sapta Odang', '081234567891', 0, -0.0345, 109.3512),
('SPBU Kota Baru', '081234567892', 1, -0.0512, 109.3198);

-- Data Contoh Jalan (Polyline)
-- Menggunakan ST_GeomFromText untuk membuat LineString
INSERT INTO `jalan` (`nama`, `status`, `panjang`, `geom`) VALUES
('Jl. Jenderal Ahmad Yani', 'Nasional', 2500, ST_GeomFromText('LINESTRING(109.3400 -0.0380, 109.3450 -0.0450, 109.3500 -0.0520)')),
('Jl. Gajah Mada', 'Provinsi', 1800, ST_GeomFromText('LINESTRING(109.3350 -0.0290, 109.3410 -0.0280, 109.3480 -0.0270)'));

-- Data Contoh Parsil (Polygon)
-- Menggunakan ST_GeomFromText untuk membuat Polygon (pastikan koordinat berputar kembali ke titik awal untuk menutup polygon)
INSERT INTO `parsil` (`nama`, `status`, `luas`, `geom`) VALUES
('Parsil Tanah A', 'SHM', 150, ST_GeomFromText('POLYGON((109.3360 -0.0250, 109.3375 -0.0250, 109.3375 -0.0260, 109.3360 -0.0260, 109.3360 -0.0250))')),
('Parsil Tanah B', 'HGB', 320, ST_GeomFromText('POLYGON((109.3405 -0.0310, 109.3420 -0.0310, 109.3420 -0.0330, 109.3405 -0.0330, 109.3405 -0.0310))'));
