159 lines
7.6 KiB
SQL
159 lines
7.6 KiB
SQL
-- =============================================================================
|
|
-- SIPKEM - Sistem Informasi Pemetaan Kemiskinan
|
|
-- Database Setup Script
|
|
-- =============================================================================
|
|
-- Usage: Run this file in your MySQL/MariaDB client:
|
|
-- mysql -u root -p < sipkem_database.sql
|
|
-- Or import it via phpMyAdmin / any MySQL GUI tool.
|
|
-- =============================================================================
|
|
|
|
-- Create and select the database
|
|
CREATE DATABASE IF NOT EXISTS `sipkem`
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE `sipkem`;
|
|
|
|
-- =============================================================================
|
|
-- TABLE: users
|
|
-- Stores both 'pengguna' (regular users) and 'pengurus' (admin) accounts.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` VARCHAR(36) NOT NULL,
|
|
`nama` VARCHAR(100) NOT NULL,
|
|
`email` VARCHAR(150) NOT NULL,
|
|
`password_hash` VARCHAR(255) NOT NULL,
|
|
`role` ENUM('pengguna', 'pengurus') NOT NULL DEFAULT 'pengguna',
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uq_users_email` (`email`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- TABLE: rumah_ibadah
|
|
-- Houses of worship (mosques, churches, etc.) used as aid distribution hubs.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `rumah_ibadah` (
|
|
`id` VARCHAR(36) NOT NULL,
|
|
`nama` VARCHAR(150) NOT NULL,
|
|
`jenis` VARCHAR(50) NOT NULL COMMENT 'e.g. Masjid, Gereja, Pura, Vihara',
|
|
`kontak` VARCHAR(100) NOT NULL DEFAULT '-',
|
|
`alamat` TEXT,
|
|
`geom` POINT NOT NULL COMMENT 'Spatial point (lng, lat)',
|
|
`jangkauan_m` INT NOT NULL DEFAULT 500 COMMENT 'Coverage radius in meters',
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- TABLE: rumah_miskin
|
|
-- Low-income households to be mapped and assigned to a rumah_ibadah.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `rumah_miskin` (
|
|
`id` VARCHAR(36) NOT NULL,
|
|
`nama_kk` VARCHAR(150) NOT NULL COMMENT 'Head of household name',
|
|
`kontak` VARCHAR(100) NOT NULL DEFAULT '-',
|
|
`alamat` TEXT,
|
|
`geom` POINT NOT NULL COMMENT 'Spatial point (lng, lat)',
|
|
`ri_id` VARCHAR(36) NULL COMMENT 'Assigned rumah_ibadah',
|
|
`jarak_ke_ri_m` FLOAT NULL COMMENT 'Distance to assigned rumah_ibadah in meters',
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_rm_ri_id` (`ri_id`),
|
|
CONSTRAINT `fk_rm_ri`
|
|
FOREIGN KEY (`ri_id`) REFERENCES `rumah_ibadah` (`id`)
|
|
ON DELETE SET NULL ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- TABLE: jenis_bantuan
|
|
-- Types / categories of aid that can be given to low-income households.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `jenis_bantuan` (
|
|
`id` VARCHAR(36) NOT NULL,
|
|
`nama` VARCHAR(100) NOT NULL,
|
|
`kategori` VARCHAR(50) NOT NULL DEFAULT 'Lainnya',
|
|
`deskripsi` TEXT,
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- TABLE: riwayat_bantuan
|
|
-- Aid history — records each instance of aid given to a household.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `riwayat_bantuan` (
|
|
`id` VARCHAR(36) NOT NULL,
|
|
`rm_id` VARCHAR(36) NOT NULL,
|
|
`bantuan_id` VARCHAR(36) NOT NULL,
|
|
`tanggal` DATE NOT NULL,
|
|
`catatan` TEXT,
|
|
`user_id` VARCHAR(36) NULL COMMENT 'User who confirmed the aid',
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_rb_rm_id` (`rm_id`),
|
|
KEY `idx_rb_bantuan_id` (`bantuan_id`),
|
|
CONSTRAINT `fk_rb_rm`
|
|
FOREIGN KEY (`rm_id`) REFERENCES `rumah_miskin` (`id`)
|
|
ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `fk_rb_bantuan`
|
|
FOREIGN KEY (`bantuan_id`) REFERENCES `jenis_bantuan` (`id`)
|
|
ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `fk_rb_user`
|
|
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
|
ON DELETE SET NULL ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- TABLE: riwayat_binaan
|
|
-- Assignment history — tracks when a household is moved between rumah_ibadah.
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS `riwayat_binaan` (
|
|
`id` INT NOT NULL AUTO_INCREMENT,
|
|
`rm_id` VARCHAR(36) NOT NULL,
|
|
`ri_id_lama` VARCHAR(36) NULL COMMENT 'Previous rumah_ibadah',
|
|
`ri_id_baru` VARCHAR(36) NULL COMMENT 'New rumah_ibadah',
|
|
`alasan` VARCHAR(255) NOT NULL DEFAULT 'otomatis',
|
|
`dibuat_pada` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_rib_rm_id` (`rm_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
-- =============================================================================
|
|
-- DEFAULT SEED DATA
|
|
-- =============================================================================
|
|
|
|
-- Default 'pengurus' (admin) account
|
|
-- Email: admin@sipkem.id | Password: admin1234
|
|
INSERT IGNORE INTO `users` (`id`, `nama`, `email`, `password_hash`, `role`)
|
|
VALUES (
|
|
'admin-0000-0000-0000-000000000001',
|
|
'Administrator',
|
|
'admin@sipkem.id',
|
|
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- password: admin1234
|
|
'pengurus'
|
|
);
|
|
|
|
-- Common aid types
|
|
INSERT IGNORE INTO `jenis_bantuan` (`id`, `nama`, `kategori`, `deskripsi`) VALUES
|
|
('bt-0000-0000-0000-000000000001', 'Sembako', 'Pangan', 'Paket bahan pokok makanan'),
|
|
('bt-0000-0000-0000-000000000002', 'Uang Tunai', 'Finansial', 'Bantuan langsung tunai'),
|
|
('bt-0000-0000-0000-000000000003', 'Pakaian Layak', 'Sandang', 'Pakaian bekas layak pakai'),
|
|
('bt-0000-0000-0000-000000000004', 'Biaya Sekolah', 'Pendidikan', 'Bantuan biaya pendidikan anak'),
|
|
('bt-0000-0000-0000-000000000005', 'Obat-obatan', 'Kesehatan', 'Obat dan kebutuhan medis dasar');
|
|
|
|
-- =============================================================================
|
|
-- DONE
|
|
-- =============================================================================
|
|
-- After running this script:
|
|
-- 1. Open api.php and set DB_HOST, DB_USER, DB_PASS to match your environment.
|
|
-- 2. Default admin login: admin@sipkem.id / admin1234 (change this immediately).
|
|
-- 3. Run `npm install && npm run dev` in the project folder to start the frontend.
|
|
-- =============================================================================
|