feat: tambah migrate.php untuk inisialisasi tabel di Coolify
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// MIGRATION SCRIPT — Web GIS Layer
|
||||
// Akses sekali via browser untuk membuat semua tabel
|
||||
// Hapus file ini setelah migrasi berhasil!
|
||||
// ============================================================
|
||||
require_once 'config.php';
|
||||
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
$results = [];
|
||||
|
||||
function runSQL(mysqli $conn, string $label, string $sql): array {
|
||||
if ($conn->query($sql)) {
|
||||
return ['label' => $label, 'status' => 'OK', 'msg' => ''];
|
||||
} else {
|
||||
return ['label' => $label, 'status' => 'ERROR', 'msg' => $conn->error];
|
||||
}
|
||||
}
|
||||
|
||||
// ── 1. Tabel data_jalan ───────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'CREATE TABLE data_jalan', "
|
||||
CREATE TABLE IF NOT EXISTS data_jalan (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_jalan VARCHAR(150) NOT NULL,
|
||||
status_jalan ENUM('Jalan Nasional','Jalan Provinsi','Jalan Kabupaten') NOT NULL,
|
||||
panjang_m DECIMAL(12,2) DEFAULT 0.00,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
keterangan TEXT DEFAULT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
|
||||
// ── 2. Tabel data_parsil ──────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'CREATE TABLE data_parsil', "
|
||||
CREATE TABLE IF NOT EXISTS data_parsil (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_parsil VARCHAR(150) NOT NULL,
|
||||
status_hak ENUM('Sertifikat Hak Milik','Sertifikat Hak Guna Bangunan','Sertifikat Hak Guna Usaha','Sertifikat Hak Pakai') NOT NULL,
|
||||
luas_m2 DECIMAL(15,2) DEFAULT 0.00,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
pemilik VARCHAR(150) DEFAULT NULL,
|
||||
keterangan TEXT DEFAULT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
|
||||
// ── 3. Tabel data_spbu ────────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'CREATE TABLE data_spbu', "
|
||||
CREATE TABLE IF NOT EXISTS data_spbu (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_spbu VARCHAR(150) NOT NULL,
|
||||
telepon VARCHAR(20) DEFAULT NULL,
|
||||
buka_24jam TINYINT(1) NOT NULL DEFAULT 0,
|
||||
lat DECIMAL(10,7) NOT NULL,
|
||||
lng DECIMAL(10,7) NOT NULL,
|
||||
geojson LONGTEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
|
||||
// ── 4. Data contoh: Jalan ─────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'INSERT data_jalan (sample)', "
|
||||
INSERT IGNORE INTO data_jalan (id, nama_jalan, status_jalan, panjang_m, geojson, keterangan) VALUES
|
||||
(1, 'Jl. Ahmad Yani', 'Jalan Nasional', 2100.00,
|
||||
'{\"type\":\"LineString\",\"coordinates\":[[109.3300,-0.0200],[109.3350,-0.0210],[109.3400,-0.0220]]}',
|
||||
'Jalan utama Kota Pontianak'),
|
||||
(2, 'Jl. Gajah Mada', 'Jalan Provinsi', 1450.50,
|
||||
'{\"type\":\"LineString\",\"coordinates\":[[109.3200,-0.0350],[109.3250,-0.0360],[109.3300,-0.0370]]}',
|
||||
'Penghubung pusat kota'),
|
||||
(3, 'Jl. Tanjungpura', 'Jalan Kabupaten', 870.25,
|
||||
'{\"type\":\"LineString\",\"coordinates\":[[109.3450,-0.0100],[109.3470,-0.0110],[109.3490,-0.0120]]}',
|
||||
'Jalan lingkungan')
|
||||
");
|
||||
|
||||
// ── 5. Data contoh: Parsil ────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'INSERT data_parsil (sample)', "
|
||||
INSERT IGNORE INTO data_parsil (id, nama_parsil, status_hak, luas_m2, geojson, pemilik, keterangan) VALUES
|
||||
(1, 'Parsil A-001', 'Sertifikat Hak Milik', 1200.00,
|
||||
'{\"type\":\"Polygon\",\"coordinates\":[[[109.3200,-0.0200],[109.3210,-0.0200],[109.3210,-0.0210],[109.3200,-0.0210],[109.3200,-0.0200]]]}',
|
||||
'Budi Santoso', 'Tanah kavling perumahan'),
|
||||
(2, 'Parsil B-002', 'Sertifikat Hak Guna Bangunan', 850.50,
|
||||
'{\"type\":\"Polygon\",\"coordinates\":[[[109.3220,-0.0220],[109.3230,-0.0220],[109.3230,-0.0230],[109.3220,-0.0230],[109.3220,-0.0220]]]}',
|
||||
'PT. Maju Bersama', 'Kavling komersial')
|
||||
");
|
||||
|
||||
// ── 6. Data contoh: SPBU ─────────────────────────────────────
|
||||
$results[] = runSQL($conn, 'INSERT data_spbu (sample)', "
|
||||
INSERT IGNORE INTO data_spbu (id, nama_spbu, telepon, buka_24jam, lat, lng, geojson) VALUES
|
||||
(1, 'SPBU Jl. Ahmad Yani', '0561-123456', 1, -0.0200, 109.3300,
|
||||
'{\"type\":\"Point\",\"coordinates\":[109.3300,-0.0200]}'),
|
||||
(2, 'SPBU Jl. Gajah Mada', '0561-654321', 0, -0.0350, 109.3200,
|
||||
'{\"type\":\"Point\",\"coordinates\":[109.3200,-0.0350]}'),
|
||||
(3, 'SPBU Jl. Tanjungpura', '0561-789012', 1, -0.0100, 109.3450,
|
||||
'{\"type\":\"Point\",\"coordinates\":[109.3450,-0.0100]}')
|
||||
");
|
||||
|
||||
$conn->close();
|
||||
|
||||
// ── Tampilkan hasil ───────────────────────────────────────────
|
||||
$allOk = !in_array('ERROR', array_column($results, 'status'));
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Migration — Web GIS Layer</title>
|
||||
<style>
|
||||
body { font-family: 'Segoe UI', sans-serif; background: #0d1117; color: #e6edf3; padding: 40px; max-width: 700px; margin: auto; }
|
||||
h1 { color: #58a6ff; margin-bottom: 8px; }
|
||||
p.sub { color: #8b949e; margin-bottom: 30px; }
|
||||
.card { background: #161b22; border: 1px solid #30363d; border-radius: 10px; padding: 20px; margin-bottom: 12px; display: flex; align-items: center; gap: 16px; }
|
||||
.badge { padding: 4px 14px; border-radius: 20px; font-size: .8rem; font-weight: 700; }
|
||||
.ok { background: rgba(63,185,80,.15); color: #3fb950; border: 1px solid rgba(63,185,80,.4); }
|
||||
.err { background: rgba(248,81,73,.15); color: #f85149; border: 1px solid rgba(248,81,73,.4); }
|
||||
.label { flex: 1; font-size: .9rem; }
|
||||
.msg { font-size: .75rem; color: #f85149; margin-top: 4px; }
|
||||
.result-box { margin-top: 28px; padding: 20px; border-radius: 10px; text-align: center; }
|
||||
.result-ok { background: rgba(63,185,80,.1); border: 1px solid rgba(63,185,80,.3); }
|
||||
.result-err { background: rgba(248,81,73,.1); border: 1px solid rgba(248,81,73,.3); }
|
||||
.result-ok h2 { color: #3fb950; }
|
||||
.result-err h2 { color: #f85149; }
|
||||
.btn { display: inline-block; margin-top: 16px; padding: 10px 28px; background: #388bfd; color: #fff; border-radius: 8px; text-decoration: none; font-weight: 600; }
|
||||
.warn { background: rgba(210,153,34,.1); border: 1px solid rgba(210,153,34,.3); color: #d29922; border-radius: 8px; padding: 12px 16px; margin-top: 16px; font-size: .84rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>🚀 Migration — Web GIS Layer</h1>
|
||||
<p class="sub">Membuat tabel dan data contoh di database <code>default</code></p>
|
||||
|
||||
<?php foreach ($results as $r): ?>
|
||||
<div class="card">
|
||||
<span class="badge <?= $r['status'] === 'OK' ? 'ok' : 'err' ?>"><?= $r['status'] ?></span>
|
||||
<div class="label">
|
||||
<?= htmlspecialchars($r['label']) ?>
|
||||
<?php if ($r['msg']): ?><div class="msg">⚠ <?= htmlspecialchars($r['msg']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<div class="result-box <?= $allOk ? 'result-ok' : 'result-err' ?>">
|
||||
<?php if ($allOk): ?>
|
||||
<h2>✅ Migrasi Berhasil!</h2>
|
||||
<p>Semua tabel berhasil dibuat. Aplikasi WebGIS siap digunakan.</p>
|
||||
<a href="index.html" class="btn">Buka Aplikasi →</a>
|
||||
<?php else: ?>
|
||||
<h2>❌ Ada Error</h2>
|
||||
<p>Beberapa langkah gagal. Periksa pesan error di atas.</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<?php if ($allOk): ?>
|
||||
<div class="warn">
|
||||
⚠️ <strong>PENTING:</strong> Hapus file <code>migrate.php</code> setelah migrasi berhasil untuk keamanan!
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user