Files
2026-06-09 12:39:17 +07:00

123 lines
4.6 KiB
SQL

-- Create Database
CREATE DATABASE IF NOT EXISTS `webgis_poverty` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `webgis_poverty`;
-- Table: users
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`nama` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL UNIQUE,
`password_hash` VARCHAR(255) NOT NULL,
`role` ENUM('super_admin', 'admin_daerah', 'pengurus_ri', 'donatur', 'masyarakat') NOT NULL DEFAULT 'masyarakat',
`wilayah` VARCHAR(255) DEFAULT NULL,
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: rumah_ibadah
CREATE TABLE IF NOT EXISTS `rumah_ibadah` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`nama` VARCHAR(255) NOT NULL,
`tipe` VARCHAR(100) NOT NULL,
`agama` VARCHAR(100) DEFAULT NULL,
`alamat` TEXT,
`kelurahan` VARCHAR(100) DEFAULT NULL,
`kecamatan` VARCHAR(100) DEFAULT NULL,
`lat` DOUBLE NOT NULL,
`lng` DOUBLE NOT NULL,
`radius` DOUBLE DEFAULT 500,
`kapasitas` INT DEFAULT 10,
`pengurus_id` INT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`pengurus_id`) REFERENCES `users`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: rumah_tangga
CREATE TABLE IF NOT EXISTS `rumah_tangga` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`nama_kk` VARCHAR(255) NOT NULL,
`alamat` TEXT,
`kelurahan` VARCHAR(100) DEFAULT NULL,
`kecamatan` VARCHAR(100) DEFAULT NULL,
`lat` DOUBLE NOT NULL,
`lng` DOUBLE NOT NULL,
`anggota` INT DEFAULT 1,
`penghasilan` VARCHAR(255) DEFAULT NULL,
`kondisi` VARCHAR(255) DEFAULT NULL,
`kebutuhan` TEXT,
`catatan` TEXT,
`dilaporkan_oleh` INT DEFAULT NULL,
`status` ENUM('pending', 'verified', 'rejected') DEFAULT 'pending',
`confirmations` INT DEFAULT 0,
`assigned_ri` INT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`dilaporkan_oleh`) REFERENCES `users`(`id`) ON DELETE SET NULL,
FOREIGN KEY (`assigned_ri`) REFERENCES `rumah_ibadah`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: tanggungan
CREATE TABLE IF NOT EXISTS `tanggungan` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`rumah_tangga_id` INT NOT NULL,
`nama` VARCHAR(255) NOT NULL,
`tanggal_lahir` DATE NOT NULL,
`jenis_kelamin` ENUM('L', 'P') DEFAULT 'L',
`hubungan` VARCHAR(100) DEFAULT NULL,
`pendidikan` VARCHAR(100) DEFAULT NULL,
`pekerjaan` VARCHAR(100) DEFAULT NULL,
FOREIGN KEY (`rumah_tangga_id`) REFERENCES `rumah_tangga`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: verifikasi
CREATE TABLE IF NOT EXISTS `verifikasi` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`rumah_tangga_id` INT NOT NULL,
`user_id` INT NOT NULL,
`aksi` ENUM('confirm', 'reject', 'admin_approve') NOT NULL,
`alasan` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`rumah_tangga_id`) REFERENCES `rumah_tangga`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: program_bantuan
CREATE TABLE IF NOT EXISTS `program_bantuan` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`ri_id` INT NOT NULL,
`nama` VARCHAR(255) NOT NULL,
`tipe` VARCHAR(100) DEFAULT 'Pangan',
`deskripsi` TEXT,
`target` INT DEFAULT 10,
`tanggal` DATE NOT NULL,
`status` VARCHAR(50) DEFAULT 'Aktif',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`ri_id`) REFERENCES `rumah_ibadah`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: donasi
CREATE TABLE IF NOT EXISTS `donasi` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`donatur_id` INT NOT NULL,
`ri_id` INT NOT NULL,
`jumlah` DECIMAL(15, 2) NOT NULL DEFAULT 0.00,
`keterangan` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`donatur_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`ri_id`) REFERENCES `rumah_ibadah`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Table: notifikasi
CREATE TABLE IF NOT EXISTS `notifikasi` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`pesan` TEXT NOT NULL,
`tipe` VARCHAR(50) DEFAULT 'info',
`sudah_baca` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Insert default Super Admin (Password: admin123 -> SHA256)
-- Hash for 'admin123' is 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
INSERT INTO `users` (`nama`, `email`, `password_hash`, `role`, `wilayah`, `is_active`)
VALUES ('Super Admin', 'admin@webgis.com', '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', 'super_admin', 'Semua', 1)
ON DUPLICATE KEY UPDATE `id`=`id`;