fix(api): clean up redundant /api prefixes and fix swagger documentation

This commit is contained in:
2026-04-01 15:24:12 +08:00
parent 7d9b7b0c60
commit 3cd6fcbd81
14 changed files with 39 additions and 30 deletions

View File

@@ -15,7 +15,7 @@ import AjukanPermohonan from "./layanan/ajukan_permohonan";
import Musik from "./musik"; import Musik from "./musik";
const Desa = new Elysia({ prefix: "/api/desa", tags: ["Desa"] }) const Desa = new Elysia({ prefix: "/desa", tags: ["Desa"] })
.use(Berita) .use(Berita)
.use(Pengumuman) .use(Pengumuman)
.use(ProfileDesa) .use(ProfileDesa)

View File

@@ -13,7 +13,7 @@ import PendapatanAsliDesa from "./pendapatan-asli-desa";
import StrukturOrganisasi from "./struktur-bumdes"; import StrukturOrganisasi from "./struktur-bumdes";
const Ekonomi = new Elysia({ const Ekonomi = new Elysia({
prefix: "/api/ekonomi", prefix: "/ekonomi",
tags: ["Ekonomi"], tags: ["Ekonomi"],
}) })
.use(PasarDesa) .use(PasarDesa)

View File

@@ -5,7 +5,7 @@ import { fileStorageFindMany } from "./_lib/findMany";
import fileStorageDelete from "./_lib/del"; import fileStorageDelete from "./_lib/del";
const FileStorage = new Elysia({ const FileStorage = new Elysia({
prefix: "/api/fileStorage", prefix: "/fileStorage",
tags: ["FileStorage"], tags: ["FileStorage"],
}) })
.post("/create", fileStorageCreate, { .post("/create", fileStorageCreate, {

View File

@@ -8,7 +8,7 @@ import LayananOnlineDesa from "./layanan-online-desa";
import MitraKolaborasi from "./kolaborasi-inovasi/mitra-kolaborasi"; import MitraKolaborasi from "./kolaborasi-inovasi/mitra-kolaborasi";
const Inovasi = new Elysia({ const Inovasi = new Elysia({
prefix: "/api/inovasi", prefix: "/inovasi",
tags: ["Inovasi"], tags: ["Inovasi"],
}) })
.use(DesaDigital) .use(DesaDigital)

View File

@@ -9,7 +9,7 @@ import KontakDaruratKeamanan from "./kontak-darurat-keamanan";
import KontakItem from "./kontak-darurat-keamanan/kontak-item"; import KontakItem from "./kontak-darurat-keamanan/kontak-item";
import LayananPolsek from "./polsek-terdekat/layanan-polsek"; import LayananPolsek from "./polsek-terdekat/layanan-polsek";
const Keamanan = new Elysia({ prefix: "/api/keamanan", tags: ["Keamanan"] }) const Keamanan = new Elysia({ prefix: "/keamanan", tags: ["Keamanan"] })
.use(KeamananLingkungan) .use(KeamananLingkungan)
.use(PolsekTerdekat) .use(PolsekTerdekat)
.use(PencegahanKriminalitas) .use(PencegahanKriminalitas)

View File

@@ -24,7 +24,7 @@ import TarifLayanan from "./data_kesehatan_warga/fasilitas_kesehatan/tarif-layan
const Kesehatan = new Elysia({ const Kesehatan = new Elysia({
prefix: "/api/kesehatan", prefix: "/kesehatan",
tags: ["Kesehatan"], tags: ["Kesehatan"],
}) })
.use(PersentaseKelahiranKematian) .use(PersentaseKelahiranKematian)

View File

@@ -14,7 +14,7 @@ import UmurResponden from "./indeks_kepuasan/umur-responden";
import Responden from "./indeks_kepuasan/responden"; import Responden from "./indeks_kepuasan/responden";
const LandingPage = new Elysia({ const LandingPage = new Elysia({
prefix: "/api/landingpage", prefix: "/landingpage",
tags: ["Landing Page/Profile"] tags: ["Landing Page/Profile"]
}) })

View File

@@ -9,7 +9,7 @@ import KategoriKegiatan from "./gotong-royong/kategori-kegiatan";
import KeteranganBankSampahTerdekat from "./pengelolaan-sampah/keterangan-bank-sampah"; import KeteranganBankSampahTerdekat from "./pengelolaan-sampah/keterangan-bank-sampah";
const Lingkungan = new Elysia({ const Lingkungan = new Elysia({
prefix: "/api/lingkungan", prefix: "/lingkungan",
tags: ["Lingkungan"], tags: ["Lingkungan"],
}) })

View File

@@ -8,7 +8,7 @@ import Beasiswa from "./beasiswa-desa";
import PerpustakaanDigital from "./perpustakaan-digital"; import PerpustakaanDigital from "./perpustakaan-digital";
const Pendidikan = new Elysia({ const Pendidikan = new Elysia({
prefix: "/api/pendidikan", prefix: "/pendidikan",
tags: ["Pendidikan"] tags: ["Pendidikan"]
}) })

View File

@@ -14,7 +14,7 @@ import GrafikHasilKepuasanMasyarakat from "./ikm/grafik_hasil_kepuasan_masyaraka
const PPID = new Elysia({ prefix: "/api/ppid", tags: ["PPID"] }) const PPID = new Elysia({ prefix: "/ppid", tags: ["PPID"] })
.use(ProfilePPID) .use(ProfilePPID)
.use(DaftarInformasiPublik) .use(DaftarInformasiPublik)
.use(GrafikHasilKepuasanMasyarakat) .use(GrafikHasilKepuasanMasyarakat)

View File

@@ -2,7 +2,7 @@ import Elysia from "elysia";
import searchFindMany from "./findMany"; import searchFindMany from "./findMany";
const Search = new Elysia({ const Search = new Elysia({
prefix: "/api/search", prefix: "/search",
tags: ["Search"], tags: ["Search"],
}) })
.get("/findMany", searchFindMany); .get("/findMany", searchFindMany);

View File

@@ -7,7 +7,7 @@ import userDelete from "./del"; // `delete` nggak boleh jadi nama file JS langsu
import userUpdate from "./updt"; import userUpdate from "./updt";
import userDeleteAccount from "./delUser"; import userDeleteAccount from "./delUser";
const User = new Elysia({ prefix: "/api/user" }) const User = new Elysia({ prefix: "/user" })
.get("/findMany", userFindMany) .get("/findMany", userFindMany)
.get("/findUnique/:id", userFindUnique) .get("/findUnique/:id", userFindUnique)
.put("/del/:id", userDelete, { .put("/del/:id", userDelete, {

View File

@@ -6,7 +6,7 @@ import roleFindUnique from "./findUnique";
import roleUpdate from "./updt"; import roleUpdate from "./updt";
const Role = new Elysia({ const Role = new Elysia({
prefix: "/api/role", prefix: "/role",
tags: ["User / Role"], tags: ["User / Role"],
}) })

View File

@@ -67,7 +67,7 @@ async function layanan() {
} }
const Utils = new Elysia({ const Utils = new Elysia({
prefix: "/api/utils", prefix: "/utils",
tags: ["Utils"], tags: ["Utils"],
}).get("/version", async () => { }).get("/version", async () => {
const packageJson = await fs.readFile( const packageJson = await fs.readFile(
@@ -82,7 +82,17 @@ if (!process.env.WIBU_UPLOAD_DIR)
throw new Error("WIBU_UPLOAD_DIR is not defined"); throw new Error("WIBU_UPLOAD_DIR is not defined");
const ApiServer = new Elysia() const ApiServer = new Elysia()
.use(swagger({ path: "/api/docs" })) .use(
swagger({
path: "/api/docs",
documentation: {
info: {
title: "Desa Darmasaba API Documentation",
version: "1.0.0",
},
},
}),
)
.use( .use(
staticPlugin({ staticPlugin({
assets: UPLOAD_DIR, assets: UPLOAD_DIR,
@@ -90,21 +100,6 @@ const ApiServer = new Elysia()
}), }),
) )
.use(cors(corsConfig)) .use(cors(corsConfig))
.use(Utils)
.use(FileStorage)
.use(LandingPage)
.use(PPID)
.use(Desa)
.use(Kesehatan)
.use(Keamanan)
.use(Ekonomi)
.use(Inovasi)
.use(Lingkungan)
.use(Pendidikan)
.use(User)
.use(Role)
.use(Search)
.onError(({ code }) => { .onError(({ code }) => {
if (code === "NOT_FOUND") { if (code === "NOT_FOUND") {
return { return {
@@ -115,6 +110,20 @@ const ApiServer = new Elysia()
}) })
.group("/api", (app) => .group("/api", (app) =>
app app
.use(Utils)
.use(FileStorage)
.use(LandingPage)
.use(PPID)
.use(Desa)
.use(Kesehatan)
.use(Keamanan)
.use(Ekonomi)
.use(Inovasi)
.use(Lingkungan)
.use(Pendidikan)
.use(User)
.use(Role)
.use(Search)
.get("/layanan", layanan) .get("/layanan", layanan)
.get("/potensi", getPotensi) .get("/potensi", getPotensi)
.get( .get(