Initial commit of unified WebGIS projects

This commit is contained in:
ilham_gmail
2026-06-11 17:42:40 +07:00
commit a0c61f2bc2
64 changed files with 7924 additions and 0 deletions
@@ -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);