initial commit
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
-- Migration: Add bantuan_terakhir column to lokasi and populate from last_assisted_at
|
||||
-- Idempotent statements for MySQL
|
||||
|
||||
ALTER TABLE lokasi ADD COLUMN IF NOT EXISTS bantuan_terakhir DATETIME NULL;
|
||||
|
||||
-- Populate bantuan_terakhir for records that already have last_assisted_at
|
||||
UPDATE lokasi
|
||||
SET bantuan_terakhir = last_assisted_at
|
||||
WHERE bantuan_terakhir IS NULL AND last_assisted_at IS NOT NULL;
|
||||
|
||||
-- Add index on assisted for performance (ignore error if exists)
|
||||
CREATE INDEX idx_lokasi_assisted ON lokasi (assisted);
|
||||
@@ -0,0 +1,101 @@
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
DROP TABLE IF EXISTS bantuan_detail;
|
||||
DROP TABLE IF EXISTS lokasi;
|
||||
DROP TABLE IF EXISTS users;
|
||||
DROP TABLE IF EXISTS migrations;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
name VARCHAR(255) DEFAULT NULL,
|
||||
organization VARCHAR(255) DEFAULT NULL,
|
||||
org_address TEXT DEFAULT NULL,
|
||||
org_phone VARCHAR(32) DEFAULT NULL,
|
||||
org_proof_path VARCHAR(255) DEFAULT NULL,
|
||||
role ENUM('manager','admin') NOT NULL DEFAULT 'manager',
|
||||
status ENUM('pending','active','rejected','pending_verification') NOT NULL DEFAULT 'pending',
|
||||
email_verified TINYINT(1) NOT NULL DEFAULT 0,
|
||||
email_verification_token_hash VARCHAR(128) DEFAULT NULL,
|
||||
email_verification_expires DATETIME DEFAULT NULL,
|
||||
email_verification_sent_at DATETIME DEFAULT NULL,
|
||||
email_verification_attempts INT NOT NULL DEFAULT 0,
|
||||
email_verification_last_sent DATETIME DEFAULT NULL,
|
||||
email_verification_locked_until DATETIME DEFAULT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
approved_by INT UNSIGNED DEFAULT NULL,
|
||||
approved_at DATETIME DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_users_email (email),
|
||||
KEY idx_users_status (status),
|
||||
KEY idx_users_role (role),
|
||||
KEY idx_users_approved_by (approved_by),
|
||||
CONSTRAINT fk_users_approved_by FOREIGN KEY (approved_by) REFERENCES users (id) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE lokasi (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
nama VARCHAR(255) NOT NULL,
|
||||
no_telp VARCHAR(32) DEFAULT NULL,
|
||||
buka_24_jam TINYINT(1) NOT NULL DEFAULT 0,
|
||||
latitude DECIMAL(10,6) DEFAULT NULL,
|
||||
longitude DECIMAL(10,6) DEFAULT NULL,
|
||||
alamat TEXT,
|
||||
jenis VARCHAR(50) NOT NULL,
|
||||
nama_kk VARCHAR(255) DEFAULT NULL,
|
||||
rumah_status VARCHAR(100) DEFAULT NULL,
|
||||
members INT DEFAULT NULL,
|
||||
monthly_income DECIMAL(18,0) DEFAULT NULL,
|
||||
assisted TINYINT(1) NOT NULL DEFAULT 0,
|
||||
last_assisted_at DATETIME DEFAULT NULL,
|
||||
assistance_notes TEXT DEFAULT NULL,
|
||||
photo_path VARCHAR(255) DEFAULT NULL,
|
||||
sumber_bantuan INT UNSIGNED DEFAULT NULL,
|
||||
bentuk_bantuan VARCHAR(100) DEFAULT NULL,
|
||||
created_by INT UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_lokasi_assisted (assisted),
|
||||
KEY idx_lokasi_jenis (jenis),
|
||||
KEY idx_lokasi_sumber_bantuan (sumber_bantuan),
|
||||
KEY idx_lokasi_created_by (created_by),
|
||||
KEY idx_lokasi_last_assisted_at (last_assisted_at),
|
||||
CONSTRAINT fk_lokasi_sumber_bantuan FOREIGN KEY (sumber_bantuan) REFERENCES lokasi (id) ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_lokasi_created_by FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE bantuan_detail (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
lokasi_id INT UNSIGNED NOT NULL,
|
||||
tanggal_bantuan DATE DEFAULT NULL,
|
||||
pemberi_bantuan VARCHAR(255) DEFAULT NULL,
|
||||
catatan TEXT DEFAULT NULL,
|
||||
pemberi_lokasi_id INT UNSIGNED DEFAULT NULL,
|
||||
jumlah INT NOT NULL DEFAULT 1,
|
||||
created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_bantuan_lokasi (lokasi_id),
|
||||
KEY idx_bantuan_pemberi_lokasi (pemberi_lokasi_id),
|
||||
KEY idx_bantuan_tanggal (tanggal_bantuan),
|
||||
KEY idx_bantuan_lokasi_tanggal (lokasi_id, tanggal_bantuan),
|
||||
KEY idx_bantuan_pemberi_tanggal (pemberi_lokasi_id, tanggal_bantuan),
|
||||
CONSTRAINT fk_bantuan_lokasi FOREIGN KEY (lokasi_id) REFERENCES lokasi (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_bantuan_pemberi_lokasi FOREIGN KEY (pemberi_lokasi_id) REFERENCES lokasi (id) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE migrations (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
applied_at DATETIME NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uq_migrations_name (name)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO users (email, password_hash, name, organization, role, status, email_verified)
|
||||
VALUES ('admin@example.com', '$2y$10$M/ZHyO83wi6HquVGBGDfoO1OpKDuh.uhxd9G8fX.RptI6I9PvrW9S', 'Admin', 'WebGIS', 'admin', 'active', 1);
|
||||
|
||||
INSERT INTO migrations (name, applied_at)
|
||||
VALUES ('001_init_schema', CURRENT_TIMESTAMP);
|
||||
@@ -0,0 +1,10 @@
|
||||
-- Extend lokasi table to support household attributes
|
||||
ALTER TABLE lokasi
|
||||
ADD COLUMN nama_kk VARCHAR(100) NULL AFTER alamat,
|
||||
ADD COLUMN building_type VARCHAR(50) NULL AFTER nama_kk,
|
||||
ADD COLUMN rumah_status VARCHAR(50) NULL AFTER building_type,
|
||||
ADD COLUMN members INT NULL AFTER rumah_status,
|
||||
ADD COLUMN monthly_income DECIMAL(12,2) NULL AFTER members;
|
||||
|
||||
-- Remove default 'spbu' if present; set default to NULL
|
||||
ALTER TABLE lokasi ALTER jenis DROP DEFAULT;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- Add assistance tracking fields to lokasi
|
||||
ALTER TABLE lokasi
|
||||
ADD COLUMN assisted TINYINT(1) DEFAULT 0 AFTER monthly_income,
|
||||
ADD COLUMN last_assisted_at DATETIME NULL AFTER assisted,
|
||||
ADD COLUMN assistance_notes TEXT NULL AFTER last_assisted_at;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Add photo_path column to lokasi for storing uploaded house photos
|
||||
ALTER TABLE lokasi
|
||||
ADD COLUMN photo_path VARCHAR(255) NULL AFTER assistance_notes;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Seed default users for admin and example roles
|
||||
INSERT INTO users (email, password_hash, name, organization, role, status, email_verified)
|
||||
VALUES
|
||||
('admin@example.com', '$2y$10$NrDZy2k2x55F3Sx/EBSioOtK.fgb/HMIwndLhzG3Pi9pybNY65sle', 'Admin', 'WebGIS', 'admin', 'active', 1),
|
||||
('manager@example.com', '$2y$10$kerIUWb8wDgF4VT7mIlPNeWSNb/iePRaFF0J6C9Zyb5L9MqdlpdwW', 'Pengurus Masjid', 'Masjid Contoh', 'manager', 'active', 1),
|
||||
('field@example.com', '$2y$10$zc5g2yqNmZbU5csI0wbJHu.1DWM7EA0mNYoZzWa/78eafdyi.7WiK', 'Petugas Lapangan', 'Tim Lapangan', 'manager', 'active', 1);
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
-- MySQL dump 10.13 Distrib 8.0.45, for Linux (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: webgis
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 8.0.45-0ubuntu0.22.04.1
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!50503 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `jalan`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `jalan`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `jalan` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`nama` varchar(100) DEFAULT NULL,
|
||||
`status` varchar(50) DEFAULT NULL,
|
||||
`panjang` double DEFAULT NULL,
|
||||
`geom` text,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `jalan`
|
||||
--
|
||||
|
||||
LOCK TABLES `jalan` WRITE;
|
||||
/*!40000 ALTER TABLE `jalan` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `jalan` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `lokasi`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `lokasi`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `lokasi` (
|
||||
`id` varchar(8) NOT NULL,
|
||||
`nama` varchar(50) NOT NULL,
|
||||
`no_telp` varchar(20) DEFAULT NULL,
|
||||
`buka_24_jam` tinyint(1) DEFAULT NULL,
|
||||
`latitude` decimal(10,6) DEFAULT NULL,
|
||||
`longitude` decimal(10,6) DEFAULT NULL,
|
||||
`alamat` text,
|
||||
`jenis` varchar(50) NOT NULL DEFAULT 'spbu',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_lokasi_alamat` ((left(`alamat`,255)))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `lokasi`
|
||||
--
|
||||
|
||||
LOCK TABLES `lokasi` WRITE;
|
||||
/*!40000 ALTER TABLE `lokasi` DISABLE KEYS */;
|
||||
INSERT INTO `lokasi` VALUES ('5092','Rumah','',0,-0.040882,109.335197,'Daeng Abdul Hadi, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78117, Indonesia','rumah'),('7853','Masjid Mujahiddin','',1,-0.041462,109.336345,'Mujahiddin, Jalan Mujahidin, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78121, Indonesia','masjid'),('8476','SPBU OSO MT. Haryono','',0,-0.044863,109.336726,'SPBU OSO MT. Haryono, Jalan M.T. Haryono, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78121, Indonesia','spbu');
|
||||
/*!40000 ALTER TABLE `lokasi` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `tanah`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `tanah`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `tanah` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`nama` varchar(100) DEFAULT NULL,
|
||||
`status` varchar(50) DEFAULT NULL,
|
||||
`luas` double DEFAULT NULL,
|
||||
`geom` text,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `tanah`
|
||||
--
|
||||
|
||||
LOCK TABLES `tanah` WRITE;
|
||||
/*!40000 ALTER TABLE `tanah` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `tanah` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-04-23 9:46:58
|
||||
Reference in New Issue
Block a user