UI & API Menu Ekonomi, Submenu Jumlah Penduduk usia yang menganggur

This commit is contained in:
2025-07-08 15:20:26 +08:00
parent bffe648802
commit adcbe3aa3d
30 changed files with 1778 additions and 454 deletions

View File

@@ -4,6 +4,8 @@ import LowonganKerja from "./lowongan-kerja";
import ProgramKemiskinan from "./program-kemiskinan";
import KategoriProduk from "./pasar-desa/kategori-produk";
import StrukturOrganisasi from "./struktur-organisasi";
import GrafikUsiaKerjaYangMenganggur from "./usia-kerja-yang-menganggur";
import GrafikMenganggurBerdasarkanPendidikan from "./usia-kerja-yang-menganggur/pengangguran-berdasrkan-pendidikan";
const Ekonomi = new Elysia({
prefix: "/api/ekonomi",
@@ -14,5 +16,7 @@ const Ekonomi = new Elysia({
.use(LowonganKerja)
.use(ProgramKemiskinan)
.use(StrukturOrganisasi)
.use(GrafikUsiaKerjaYangMenganggur)
.use(GrafikMenganggurBerdasarkanPendidikan)
export default Ekonomi

View File

@@ -0,0 +1,36 @@
import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.GrafikMenganggurBerdasarkanUsiaGetPayload<{
select: {
usia18_25: true;
usia26_35: true;
usia36_45: true;
usia46_keatas: true;
}
}>
export default async function grafikMenganggurBerdasarkanUsiaCreate(context: Context) {
const body = context.body as FormCreate;
const created = await prisma.grafikMenganggurBerdasarkanUsia.create({
data: {
usia18_25: body.usia18_25,
usia26_35: body.usia26_35,
usia36_45: body.usia36_45,
usia46_keatas: body.usia46_keatas,
},
select: {
id: true,
usia18_25: true,
usia26_35: true,
usia36_45: true,
usia46_keatas: true,
}
});
return {
success: true,
message: "Success create grafik menganggur berdasarkan usia",
data: created,
};
}

View File

@@ -0,0 +1,43 @@
import { Context } from "elysia";
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanUsiaDelete(context: Context) {
const {id} = context.params as {id: string}
try {
const existingData = await prisma.grafikMenganggurBerdasarkanUsia.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.grafikMenganggurBerdasarkanUsia.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: {
id: id,
},
}
} catch (error) {
console.error("Delete error:", error);
return {
success: false,
message: "Gagal menghapus data: " + (error instanceof Error ? error.message : 'Unknown error'),
data: null,
}
}
}

View File

@@ -0,0 +1,8 @@
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanUsiaFindMany() {
const res = await prisma.grafikMenganggurBerdasarkanUsia.findMany();
return {
data: res
}
}

View File

@@ -0,0 +1,50 @@
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanUsiaFindUnique(
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.grafikMenganggurBerdasarkanUsia.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
data: null,
}, { status: 404 });
}
return Response.json({
success: true,
message: "Data berhasil ditemukan",
data,
}, { status: 200 });
} catch (error) {
console.error("Find unique error:", error);
return Response.json({
success: false,
message: "Gagal menemukan data: " + (error instanceof Error ? error.message : 'Unknown error'),
data: null,
}, { status: 500 });
}
}

View File

@@ -0,0 +1,39 @@
import Elysia, { t } from "elysia";
import grafikMenganggurBerdasarkanUsiaFindMany from "./findMany";
import grafikMenganggurBerdasarkanUsiaFindUnique from "./findUnique";
import grafikMenganggurBerdasarkanUsiaUpdate from "./updt";
import grafikMenganggurBerdasarkanUsiaCreate from "./create";
import grafikMenganggurBerdasarkanUsiaDelete from "./del";
const GrafikUsiaKerjaYangMenganggur = new Elysia({prefix: "/grafikusiakerjayangmenganggur", tags: ["Ekonomi/Jumlah Penduduk Usia Kerja Yang Menganggur"]})
.get("/find-many", grafikMenganggurBerdasarkanUsiaFindMany)
.get("/:id", async (context) => {
const response = await grafikMenganggurBerdasarkanUsiaFindUnique(new Request(context.request))
return response
})
.put("/:id", grafikMenganggurBerdasarkanUsiaUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
usia18_25: t.String(),
usia26_35: t.String(),
usia36_45: t.String(),
usia46_keatas: t.String(),
}),
})
.post("/create", grafikMenganggurBerdasarkanUsiaCreate, {
body: t.Object({
usia18_25: t.String(),
usia26_35: t.String(),
usia36_45: t.String(),
usia46_keatas: t.String(),
}),
})
.delete("/del/:id", grafikMenganggurBerdasarkanUsiaDelete, {
params: t.Object({
id: t.String(),
}),
});
export default GrafikUsiaKerjaYangMenganggur;

View File

@@ -0,0 +1,39 @@
import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.GrafikMenganggurBerdasarkanPendidikanGetPayload<{
select: {
SD: true;
SMP: true;
SMA: true;
D3: true;
S1: true;
}
}>
export default async function grafikMenganggurBerdasarkanPendidikanCreate(context: Context) {
const body = context.body as FormCreate;
const created = await prisma.grafikMenganggurBerdasarkanPendidikan.create({
data: {
SD: body.SD,
SMP: body.SMP,
SMA: body.SMA,
D3: body.D3,
S1: body.S1,
},
select: {
id: true,
SD: true,
SMP: true,
SMA: true,
D3: true,
S1: true,
}
});
return {
success: true,
message: "Success create grafik menganggur berdasarkan pendidikan",
data: created,
};
}

View File

@@ -0,0 +1,43 @@
import { Context } from "elysia";
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanPendidikanDelete(context: Context) {
const {id} = context.params as {id: string}
try {
const existingData = await prisma.grafikMenganggurBerdasarkanPendidikan.findUnique({
where: {
id: id,
}
})
if (!existingData) {
return {
success: false,
message: "Data tidak ditemukan",
data: null,
}
}
await prisma.grafikMenganggurBerdasarkanPendidikan.delete({
where: {
id: id
}
})
return {
success: true,
message: "Data berhasil dihapus",
data: {
id: id,
},
}
} catch (error) {
console.error("Delete error:", error);
return {
success: false,
message: "Gagal menghapus data: " + (error instanceof Error ? error.message : 'Unknown error'),
data: null,
}
}
}

View File

@@ -0,0 +1,8 @@
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanPendidikanFindMany() {
const res = await prisma.grafikMenganggurBerdasarkanPendidikan.findMany();
return {
data: res
}
}

View File

@@ -0,0 +1,50 @@
import prisma from "@/lib/prisma";
export default async function grafikMenganggurBerdasarkanPendidikanFindUnique(
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.grafikMenganggurBerdasarkanPendidikan.findUnique({
where: { id },
});
if (!data) {
return Response.json({
success: false,
message: "Data tidak ditemukan",
data: null,
}, { status: 404 });
}
return Response.json({
success: true,
message: "Data berhasil ditemukan",
data,
}, { status: 200 });
} catch (error) {
console.error("Find unique error:", error);
return Response.json({
success: false,
message: "Gagal menemukan data: " + (error instanceof Error ? error.message : 'Unknown error'),
data: null,
}, { status: 500 });
}
}

View File

@@ -0,0 +1,42 @@
import Elysia, { t } from "elysia";
import grafikMenganggurBerdasarkanPendidikanCreate from "./create";
import grafikMenganggurBerdasarkanPendidikanDelete from "./del";
import grafikMenganggurBerdasarkanPendidikanFindMany from "./findMany";
import grafikMenganggurBerdasarkanPendidikanFindUnique from "./findUnique";
import grafikMenganggurBerdasarkanPendidikanUpdate from "./updt";
const GrafikMenganggurBerdasarkanPendidikan = new Elysia({prefix: "grafikmenganggurberdasarkanpendidikan", tags: ["Ekonomi/Usia Kerja Yang Menganggur/Pengangguran Berdasarkan Pendidikan"]})
.get("/find-many", grafikMenganggurBerdasarkanPendidikanFindMany)
.get("/:id", async (context) => {
const response = await grafikMenganggurBerdasarkanPendidikanFindUnique(new Request(context.request))
return response
})
.put("/:id", grafikMenganggurBerdasarkanPendidikanUpdate, {
params: t.Object({
id: t.String(),
}),
body: t.Object({
SD: t.String(),
SMP: t.String(),
SMA: t.String(),
D3: t.String(),
S1: t.String(),
}),
})
.post("/create", grafikMenganggurBerdasarkanPendidikanCreate, {
body: t.Object({
SD: t.String(),
SMP: t.String(),
SMA: t.String(),
D3: t.String(),
S1: t.String(),
}),
})
.delete("/del/:id", grafikMenganggurBerdasarkanPendidikanDelete, {
params: t.Object({
id: t.String(),
}),
});
export default GrafikMenganggurBerdasarkanPendidikan

View File

@@ -0,0 +1,53 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikMenganggurBerdasarkanPendidikanUpdate(context: Context) {
const id = context.params?.id;
if (!id) {
return {
success: false,
message: "Id tidak ditemukan",
}
}
const {SD, SMP, SMA, D3, S1} = context.body as {
SD: string;
SMP: string;
SMA: string;
D3: string;
S1: string;
}
const existing = await prisma.grafikMenganggurBerdasarkanPendidikan.findUnique({
where: {
id: id,
},
})
if (!existing) {
return {
success: false,
message: "Data tidak ditemukan",
}
}
const updated = await prisma.grafikMenganggurBerdasarkanPendidikan.update({
where: {
id: id,
},
data: {
SD: SD,
SMP: SMP,
SMA: SMA,
D3: D3,
S1: S1,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}

View File

@@ -0,0 +1,51 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function grafikMenganggurBerdasarkanUsiaUpdate(context: Context) {
const id = context.params?.id;
if (!id) {
return {
success: false,
message: "Id tidak ditemukan",
}
}
const {usia18_25, usia26_35, usia36_45, usia46_keatas} = context.body as {
usia18_25: string;
usia26_35: string;
usia36_45: string;
usia46_keatas: string;
}
const existing = await prisma.grafikMenganggurBerdasarkanUsia.findUnique({
where: {
id: id,
},
})
if (!existing) {
return {
success: false,
message: "Data tidak ditemukan",
}
}
const updated = await prisma.grafikMenganggurBerdasarkanUsia.update({
where: {
id: id,
},
data: {
usia18_25: usia18_25,
usia26_35: usia26_35,
usia36_45: usia36_45,
usia46_keatas: usia46_keatas,
},
})
return {
success: true,
message: "Data berhasil diupdate",
data: updated,
}
}