UI & API Menu Ekonomi, Submenu Demografi
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormCreate = Prisma.DataDemografiPekerjaanGetPayload<{
|
||||
select: {
|
||||
pekerjaan: true;
|
||||
lakiLaki: true;
|
||||
perempuan: true;
|
||||
}
|
||||
}>
|
||||
|
||||
export default async function demografiPekerjaanCreate(context: Context) {
|
||||
const body = context.body as FormCreate;
|
||||
|
||||
const created = await prisma.dataDemografiPekerjaan.create({
|
||||
data: {
|
||||
pekerjaan: body.pekerjaan,
|
||||
lakiLaki: body.lakiLaki,
|
||||
perempuan: body.perempuan,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
pekerjaan: true,
|
||||
lakiLaki: true,
|
||||
perempuan: true,
|
||||
}
|
||||
});
|
||||
return {
|
||||
success: true,
|
||||
message: "Success create demografi pekerjaan",
|
||||
data: created,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function demografiPekerjaanDelete(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const existing = await prisma.dataDemografiPekerjaan.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const deleted = await prisma.dataDemografiPekerjaan.delete({
|
||||
where: { id },
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Data berhasil dihapus",
|
||||
data: deleted,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function demografiPekerjaanFindMany() {
|
||||
const res = await prisma.dataDemografiPekerjaan.findMany();
|
||||
return {
|
||||
data: res
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function demografiPekerjaanFindUnique(request: Request) {
|
||||
const url = new URL(request.url);
|
||||
const pathSegments = url.pathname.split('/');
|
||||
const id = pathSegments[pathSegments.length - 1];
|
||||
|
||||
if (!id) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak boleh kosong",
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof id !== 'string') {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak valid",
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
const data = await prisma.dataDemografiPekerjaan.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json({
|
||||
success: true,
|
||||
message: "Data ditemukan",
|
||||
data: data,
|
||||
}, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error("Error fetching data:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Terjadi kesalahan saat mengambil data",
|
||||
}, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import demografiPekerjaanFindUnique from "./findUnique";
|
||||
import demografiPekerjaanUpdate from "./updt";
|
||||
import demografiPekerjaanFindMany from "./findMany";
|
||||
import demografiPekerjaanCreate from "./create";
|
||||
import demografiPekerjaanDelete from "./del";
|
||||
|
||||
const DemografiPekerjaan = new Elysia({
|
||||
prefix: "/demografipekerjaan",
|
||||
tags: ["Ekonomi/Demografi Pekerjaan"],
|
||||
})
|
||||
.get("/:id", async (context) => {
|
||||
const response = await demografiPekerjaanFindUnique(new Request(context.request))
|
||||
return response
|
||||
})
|
||||
.get("/find-many", demografiPekerjaanFindMany)
|
||||
.post("/create", demografiPekerjaanCreate, {
|
||||
body: t.Object({
|
||||
pekerjaan: t.String(),
|
||||
lakiLaki: t.Number(),
|
||||
perempuan: t.Number(),
|
||||
}),
|
||||
})
|
||||
.put("/:id", demografiPekerjaanUpdate, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
body: t.Object({
|
||||
pekerjaan: t.String(),
|
||||
lakiLaki: t.Number(),
|
||||
perempuan: t.Number(),
|
||||
}),
|
||||
})
|
||||
.delete("/del/:id", demografiPekerjaanDelete, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
})
|
||||
export default DemografiPekerjaan;
|
||||
@@ -0,0 +1,47 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function demografiPekerjaanUpdate(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const {pekerjaan, lakiLaki, perempuan} = context.body as {
|
||||
pekerjaan: string;
|
||||
lakiLaki: number;
|
||||
perempuan: number;
|
||||
}
|
||||
|
||||
const existing = await prisma.dataDemografiPekerjaan.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const updated = await prisma.dataDemografiPekerjaan.update({
|
||||
where: { id },
|
||||
data: {
|
||||
pekerjaan,
|
||||
lakiLaki,
|
||||
perempuan,
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Data berhasil diupdate",
|
||||
data: updated,
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import GrafikUsiaKerjaYangMenganggur from "./usia-kerja-yang-menganggur";
|
||||
import GrafikMenganggurBerdasarkanPendidikan from "./usia-kerja-yang-menganggur/pengangguran-berdasrkan-pendidikan";
|
||||
import JumlahPendudukMiskin from "./jumlah-penduduk-miskin";
|
||||
import SektorUnggulanDesa from "./sektor-unggulan-desa";
|
||||
import DemografiPekerjaan from "./demografi-pekerjaan";
|
||||
|
||||
const Ekonomi = new Elysia({
|
||||
prefix: "/api/ekonomi",
|
||||
@@ -22,5 +23,6 @@ const Ekonomi = new Elysia({
|
||||
.use(GrafikMenganggurBerdasarkanPendidikan)
|
||||
.use(JumlahPendudukMiskin)
|
||||
.use(SektorUnggulanDesa)
|
||||
.use(DemografiPekerjaan)
|
||||
|
||||
export default Ekonomi
|
||||
Reference in New Issue
Block a user