API & UI Menu Ekonomi, Submenu Jumlah Pengangguran
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import detailDataPengangguranFindMany from "./findMany";
|
||||
import detailDataPengangguranCreate from "./create";
|
||||
import detailDataPengangguranUpdate from "./updt";
|
||||
import detailDataPengangguranFindUnique from "./findUnique";
|
||||
import detailDataPengangguranDelete from "./del";
|
||||
import findByMonthYear from "./findByMonthYear";
|
||||
import detailDataPengangguranFindMany from "./findMany";
|
||||
import detailDataPengangguranFindUnique from "./findUnique";
|
||||
import detailDataPengangguranUpdate from "./updt";
|
||||
|
||||
const DetailDataPengangguran = new Elysia({
|
||||
prefix: "/detaildatapengangguran",
|
||||
@@ -50,6 +50,6 @@ const DetailDataPengangguran = new Elysia({
|
||||
month: t.String(),
|
||||
year: t.String(),
|
||||
}),
|
||||
});
|
||||
})
|
||||
|
||||
export default DetailDataPengangguran;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
import Elysia from "elysia";
|
||||
import DetailDataPengangguran from "./detail-data-pengangguran";
|
||||
import RingkasanDataPengangguran from "./ringkasan-data-pengangguran";
|
||||
import SedangMencariKerja from "./sedang-mencari-kerja";
|
||||
|
||||
const JumlahPengangguran = new Elysia({
|
||||
prefix: "/jumlahpengangguran",
|
||||
})
|
||||
.use(DetailDataPengangguran)
|
||||
.use(RingkasanDataPengangguran)
|
||||
.use(SedangMencariKerja)
|
||||
|
||||
|
||||
export default JumlahPengangguran;
|
||||
@@ -1,61 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormCreate = Prisma.RingkasanDataPengangguranGetPayload<{
|
||||
select: {
|
||||
year: true;
|
||||
totalUnemployment: true;
|
||||
educatedUnemployment: true;
|
||||
percentageEducatedOfTotal: true;
|
||||
productiveAgePopulation: true;
|
||||
percentageProductiveOfTotal: true;
|
||||
percentageChangeFromPreviousYear: true;
|
||||
};
|
||||
}>;
|
||||
|
||||
export default async function ringkasanDataPengangguranCreate(context: Context) {
|
||||
const body = context.body as FormCreate;
|
||||
|
||||
const existing = await prisma.ringkasanDataPengangguran.findFirst({
|
||||
where: {
|
||||
year: body.year,
|
||||
},
|
||||
});
|
||||
|
||||
if (existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: `Data tahun ${body.year} sudah ada.`,
|
||||
data: null,
|
||||
};
|
||||
}
|
||||
|
||||
const created = await prisma.ringkasanDataPengangguran.create({
|
||||
data: {
|
||||
year: body.year,
|
||||
totalUnemployment: body.totalUnemployment,
|
||||
educatedUnemployment: body.educatedUnemployment,
|
||||
percentageEducatedOfTotal: body.percentageEducatedOfTotal,
|
||||
productiveAgePopulation: body.productiveAgePopulation,
|
||||
percentageProductiveOfTotal: body.percentageProductiveOfTotal,
|
||||
percentageChangeFromPreviousYear: body.percentageChangeFromPreviousYear,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
year: true,
|
||||
totalUnemployment: true,
|
||||
educatedUnemployment: true,
|
||||
percentageEducatedOfTotal: true,
|
||||
productiveAgePopulation: true,
|
||||
percentageProductiveOfTotal: true,
|
||||
percentageChangeFromPreviousYear: true,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Berhasil menambahkan data ringkasan pengangguran",
|
||||
data: created,
|
||||
};
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function ringkasanDataPengangguranDelete(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const existing = await prisma.ringkasanDataPengangguran.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const deleted = await prisma.ringkasanDataPengangguran.delete({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Berhasil menghapus data ringkasan pengangguran",
|
||||
data: deleted,
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function ringkasanDataPengangguranFindMany() {
|
||||
const res = await prisma.ringkasanDataPengangguran.findMany({
|
||||
orderBy: [{ year: "desc" }],
|
||||
});
|
||||
return {
|
||||
data: res,
|
||||
};
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function ringkasanDataPengangguranFindUnique(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.ringkasanDataPengangguran.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json({
|
||||
success: true,
|
||||
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 });
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import ringkasanDataPengangguranFindUnique from "./findUnique";
|
||||
import ringkasanDataPengangguranFindMany from "./findMany";
|
||||
import ringkasanDataPengangguranCreate from "./create";
|
||||
import ringkasanDataPengangguranUpdate from "./updt";
|
||||
import ringkasanDataPengangguranDelete from "./del";
|
||||
|
||||
const RingkasanDataPengangguran = new Elysia({
|
||||
prefix: "/ringkasandatapengangguran",
|
||||
tags: ["Ekonomi/Jumlah Pengangguran/Ringkasan Data Pengangguran"],
|
||||
})
|
||||
.get("/:id", async (context) => {
|
||||
const response = await ringkasanDataPengangguranFindUnique(
|
||||
new Request(context.request)
|
||||
);
|
||||
return response;
|
||||
})
|
||||
.get("/find-many", ringkasanDataPengangguranFindMany)
|
||||
.post("/create", ringkasanDataPengangguranCreate, {
|
||||
body: t.Object({
|
||||
year: t.Number(),
|
||||
totalUnemployment: t.Number(),
|
||||
educatedUnemployment: t.Number(),
|
||||
percentageEducatedOfTotal: t.Number(),
|
||||
productiveAgePopulation: t.Number(),
|
||||
percentageProductiveOfTotal: t.Number(),
|
||||
percentageChangeFromPreviousYear: t.Number(),
|
||||
}),
|
||||
})
|
||||
.put("/:id", ringkasanDataPengangguranUpdate, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
body: t.Object({
|
||||
year: t.Number(),
|
||||
totalUnemployment: t.Number(),
|
||||
educatedUnemployment: t.Number(),
|
||||
percentageEducatedOfTotal: t.Number(),
|
||||
productiveAgePopulation: t.Number(),
|
||||
percentageProductiveOfTotal: t.Number(),
|
||||
percentageChangeFromPreviousYear: t.Number(),
|
||||
}),
|
||||
})
|
||||
.delete("/del/:id", ringkasanDataPengangguranDelete, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
});
|
||||
|
||||
export default RingkasanDataPengangguran;
|
||||
@@ -1,70 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function ringkasanDataPengangguranUpdate(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const { year, totalUnemployment, educatedUnemployment, percentageEducatedOfTotal, productiveAgePopulation, percentageProductiveOfTotal, percentageChangeFromPreviousYear } = context.body as {
|
||||
year: number;
|
||||
totalUnemployment: number;
|
||||
educatedUnemployment: number;
|
||||
percentageEducatedOfTotal: number;
|
||||
productiveAgePopulation: number;
|
||||
percentageProductiveOfTotal: number;
|
||||
percentageChangeFromPreviousYear: number;
|
||||
}
|
||||
|
||||
const duplicate = await prisma.ringkasanDataPengangguran.findFirst({
|
||||
where: {
|
||||
year,
|
||||
NOT: { id },
|
||||
},
|
||||
});
|
||||
|
||||
if (duplicate) {
|
||||
return {
|
||||
success: false,
|
||||
message: `Data tahun ${year} sudah ada.`,
|
||||
};
|
||||
}
|
||||
|
||||
const existing = await prisma.ringkasanDataPengangguran.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const updated = await prisma.ringkasanDataPengangguran.update({
|
||||
where: { id },
|
||||
data: {
|
||||
year,
|
||||
totalUnemployment,
|
||||
educatedUnemployment,
|
||||
percentageEducatedOfTotal,
|
||||
productiveAgePopulation,
|
||||
percentageProductiveOfTotal,
|
||||
percentageChangeFromPreviousYear,
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Data berhasil diupdate",
|
||||
data: updated,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormCreate = Prisma.SedangMencariKerjaGetPayload<{
|
||||
select: {
|
||||
count: true;
|
||||
percentageOfTotal: true;
|
||||
recordedDate: true;
|
||||
};
|
||||
}>;
|
||||
|
||||
export default async function sedangMencariKerjaCreate(context: Context) {
|
||||
const body = context.body as FormCreate;
|
||||
|
||||
const existing = await prisma.sedangMencariKerja.findFirst({
|
||||
where: {
|
||||
recordedDate: body.recordedDate,
|
||||
},
|
||||
});
|
||||
|
||||
if (existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data sudah ada",
|
||||
data: null,
|
||||
};
|
||||
}
|
||||
|
||||
const created = await prisma.sedangMencariKerja.create({
|
||||
data: {
|
||||
count: body.count,
|
||||
percentageOfTotal: body.percentageOfTotal,
|
||||
recordedDate: body.recordedDate,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
count: true,
|
||||
percentageOfTotal: true,
|
||||
recordedDate: true,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Berhasil menambahkan data sedang mencari kerja",
|
||||
data: created,
|
||||
};
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function sedangMencariKerjaDelete(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const existing = await prisma.sedangMencariKerja.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const deleted = await prisma.sedangMencariKerja.delete({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Berhasil menghapus data sedang mencari kerja",
|
||||
data: deleted,
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function sedangMencariKerjaFindMany() {
|
||||
const res = await prisma.sedangMencariKerja.findMany({
|
||||
orderBy: [{ recordedDate: "desc" }],
|
||||
});
|
||||
return {
|
||||
data: res,
|
||||
};
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function sedangMencariKerjaFindUnique(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.sedangMencariKerja.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,
|
||||
}, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error("Error fetching data:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Terjadi kesalahan saat mengambil data",
|
||||
}, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import sedangMencariKerjaFindUnique from "./findUnique";
|
||||
import sedangMencariKerjaFindMany from "./findMany";
|
||||
import sedangMencariKerjaCreate from "./create";
|
||||
import sedangMencariKerjaUpdate from "./updt";
|
||||
import sedangMencariKerjaDelete from "./del";
|
||||
|
||||
const SedangMencariKerja = new Elysia({
|
||||
prefix: "/sedangmencarikerja",
|
||||
tags: ["Ekonomi/Jumlah Pengangguran/Sedang Mencari Kerja"],
|
||||
})
|
||||
.get("/:id", async (context) => {
|
||||
const response = await sedangMencariKerjaFindUnique(
|
||||
new Request(context.request)
|
||||
);
|
||||
return response;
|
||||
})
|
||||
.get("/find-many", sedangMencariKerjaFindMany)
|
||||
.post("/create", sedangMencariKerjaCreate, {
|
||||
body: t.Object({
|
||||
count: t.Number(),
|
||||
percentageOfTotal: t.Number(),
|
||||
recordedDate: t.String(),
|
||||
}),
|
||||
})
|
||||
.put("/:id", sedangMencariKerjaUpdate, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
body: t.Object({
|
||||
count: t.Number(),
|
||||
percentageOfTotal: t.Number(),
|
||||
recordedDate: t.String(),
|
||||
}),
|
||||
})
|
||||
.delete("/del/:id", sedangMencariKerjaDelete, {
|
||||
params: t.Object({
|
||||
id: t.String(),
|
||||
}),
|
||||
});
|
||||
|
||||
export default SedangMencariKerja;
|
||||
@@ -1,49 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function sedangMencariKerjaUpdate(context: Context) {
|
||||
const id = context.params?.id;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
success: false,
|
||||
message: "ID tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const { count, percentageOfTotal, recordedDate } = context.body as {
|
||||
count: number;
|
||||
percentageOfTotal: number;
|
||||
recordedDate: string;
|
||||
}
|
||||
|
||||
const existing = await prisma.sedangMencariKerja.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
})
|
||||
|
||||
if (!existing) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Data tidak ditemukan",
|
||||
}
|
||||
}
|
||||
|
||||
const updated = await prisma.sedangMencariKerja.update({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
data: {
|
||||
count: count,
|
||||
percentageOfTotal: percentageOfTotal,
|
||||
recordedDate: recordedDate,
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Berhasil mengupdate data sedang mencari kerja",
|
||||
data: updated,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user