menambah fitur-poverty
This commit is contained in:
+41
-58
@@ -3,6 +3,7 @@ const express = require("express");
|
||||
const cors = require("cors");
|
||||
const path = require("path");
|
||||
const db = require("./db");
|
||||
const povertyRoutes = require("./routes/poverty");
|
||||
require("dotenv").config();
|
||||
|
||||
const app = express();
|
||||
@@ -11,7 +12,7 @@ const PORT = process.env.PORT || 3000;
|
||||
// ─── Middleware ───────────────────────────────────────────────────────────────
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
app.use("/api/poverty", povertyRoutes);
|
||||
// Sajikan folder frontend secara statis
|
||||
app.use(express.static(path.join(__dirname, "../frontend")));
|
||||
|
||||
@@ -284,12 +285,10 @@ app.post("/api/spbu", async (req, res) => {
|
||||
.json({ success: false, message: "Semua field wajib diisi." });
|
||||
}
|
||||
if (!Array.isArray(jenis_bbm) || jenis_bbm.length === 0) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({
|
||||
success: false,
|
||||
message: "Minimal satu jenis BBM harus dipilih.",
|
||||
});
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: "Minimal satu jenis BBM harus dipilih.",
|
||||
});
|
||||
}
|
||||
try {
|
||||
const [result] = await db.execute(
|
||||
@@ -307,21 +306,17 @@ app.post("/api/spbu", async (req, res) => {
|
||||
manual_override || "auto",
|
||||
],
|
||||
);
|
||||
res
|
||||
.status(201)
|
||||
.json({
|
||||
success: true,
|
||||
message: "SPBU berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
message: "SPBU berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
} catch (err) {
|
||||
if (err.code === "ER_DUP_ENTRY") {
|
||||
return res
|
||||
.status(409)
|
||||
.json({
|
||||
success: false,
|
||||
message: `Kode SPBU '${kode}' sudah digunakan.`,
|
||||
});
|
||||
return res.status(409).json({
|
||||
success: false,
|
||||
message: `Kode SPBU '${kode}' sudah digunakan.`,
|
||||
});
|
||||
}
|
||||
res.status(500).json({ success: false, message: err.message });
|
||||
}
|
||||
@@ -460,12 +455,10 @@ app.get("/api/jalan/:id", async (req, res) => {
|
||||
app.post("/api/jalan", async (req, res) => {
|
||||
const { nama_jalan, jenis_jalan, koordinat } = req.body;
|
||||
if (!nama_jalan || !jenis_jalan || !koordinat) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({
|
||||
success: false,
|
||||
message: "nama_jalan, jenis_jalan, dan koordinat wajib diisi.",
|
||||
});
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: "nama_jalan, jenis_jalan, dan koordinat wajib diisi.",
|
||||
});
|
||||
}
|
||||
const jenisValid = ["nasional", "provinsi", "kota_kabupaten"];
|
||||
if (!jenisValid.includes(jenis_jalan)) {
|
||||
@@ -480,13 +473,11 @@ app.post("/api/jalan", async (req, res) => {
|
||||
"INSERT INTO jalan (nama_jalan, jenis_jalan, koordinat) VALUES (?, ?, ?)",
|
||||
[nama_jalan.trim(), jenis_jalan, koordinatStr],
|
||||
);
|
||||
res
|
||||
.status(201)
|
||||
.json({
|
||||
success: true,
|
||||
message: "Jalan berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
message: "Jalan berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ success: false, message: err.message });
|
||||
}
|
||||
@@ -496,12 +487,10 @@ app.post("/api/jalan", async (req, res) => {
|
||||
app.put("/api/jalan/:id", async (req, res) => {
|
||||
const { nama_jalan, jenis_jalan, koordinat } = req.body;
|
||||
if (!nama_jalan || !jenis_jalan || !koordinat) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({
|
||||
success: false,
|
||||
message: "nama_jalan, jenis_jalan, dan koordinat wajib diisi.",
|
||||
});
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: "nama_jalan, jenis_jalan, dan koordinat wajib diisi.",
|
||||
});
|
||||
}
|
||||
try {
|
||||
const koordinatStr =
|
||||
@@ -573,12 +562,10 @@ app.get("/api/bangunan/:id", async (req, res) => {
|
||||
app.post("/api/bangunan", async (req, res) => {
|
||||
const { nama_bangunan, jenis_bangunan, nama_jalan, koordinat } = req.body;
|
||||
if (!nama_bangunan || !jenis_bangunan || !koordinat) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({
|
||||
success: false,
|
||||
message: "nama_bangunan, jenis_bangunan, dan koordinat wajib diisi.",
|
||||
});
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: "nama_bangunan, jenis_bangunan, dan koordinat wajib diisi.",
|
||||
});
|
||||
}
|
||||
const jenisValid = ["SHM", "HGB", "HGU", "HP", "HPL"];
|
||||
if (!jenisValid.includes(jenis_bangunan)) {
|
||||
@@ -598,13 +585,11 @@ app.post("/api/bangunan", async (req, res) => {
|
||||
koordinatStr,
|
||||
],
|
||||
);
|
||||
res
|
||||
.status(201)
|
||||
.json({
|
||||
success: true,
|
||||
message: "Bangunan berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
message: "Bangunan berhasil ditambahkan.",
|
||||
id: result.insertId,
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ success: false, message: err.message });
|
||||
}
|
||||
@@ -614,12 +599,10 @@ app.post("/api/bangunan", async (req, res) => {
|
||||
app.put("/api/bangunan/:id", async (req, res) => {
|
||||
const { nama_bangunan, jenis_bangunan, nama_jalan, koordinat } = req.body;
|
||||
if (!nama_bangunan || !jenis_bangunan || !koordinat) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({
|
||||
success: false,
|
||||
message: "nama_bangunan, jenis_bangunan, dan koordinat wajib diisi.",
|
||||
});
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: "nama_bangunan, jenis_bangunan, dan koordinat wajib diisi.",
|
||||
});
|
||||
}
|
||||
try {
|
||||
const koordinatStr =
|
||||
|
||||
Reference in New Issue
Block a user