API & UI Menu Inovasi & Submenu Layan Online Desa 2 tabs
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormCreateAjukanIdeInovatif = Prisma.AjukanIdeInovatifGetPayload<{
|
||||
select: {
|
||||
name: true;
|
||||
deskripsi: true;
|
||||
alamat: true;
|
||||
namaIde: true;
|
||||
masalah: true;
|
||||
benefit: true;
|
||||
}
|
||||
}>
|
||||
export default async function ajukanIdeInovatifCreate(context: Context){
|
||||
const body = context.body as FormCreateAjukanIdeInovatif;
|
||||
|
||||
await prisma.ajukanIdeInovatif.create({
|
||||
data: {
|
||||
name: body.name,
|
||||
deskripsi: body.deskripsi,
|
||||
alamat: body.alamat,
|
||||
namaIde: body.namaIde,
|
||||
masalah: body.masalah,
|
||||
benefit: body.benefit,
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Success create ajukan ide inovatif",
|
||||
data: {
|
||||
...body,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
export default async function ajukanIdeInovatifDelete(context: Context) {
|
||||
const id = context.params?.id as string;
|
||||
|
||||
if (!id) {
|
||||
return {
|
||||
status: 400,
|
||||
body: "ID tidak diberikan",
|
||||
};
|
||||
}
|
||||
|
||||
const ajukanIdeInovatif = await prisma.ajukanIdeInovatif.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!ajukanIdeInovatif) {
|
||||
return {
|
||||
status: 404,
|
||||
body: "Ajukan ide inovatif tidak ditemukan",
|
||||
};
|
||||
}
|
||||
|
||||
await prisma.ajukanIdeInovatif.delete({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Ajukan ide inovatif berhasil dihapus",
|
||||
status: 200,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function ajukanIdeInovatifFindMany() {
|
||||
try {
|
||||
const data = await prisma.ajukanIdeInovatif.findMany({});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Success fetch ajukan ide inovatif",
|
||||
data,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Find many error:", error);
|
||||
return {
|
||||
success: false,
|
||||
message: "Failed fetch ajukan ide inovatif",
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function ajukanIdeInovatifFindUnique(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 ditemukan",
|
||||
}, {status: 400});
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof id !== 'string') {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak valid",
|
||||
}, {status: 400});
|
||||
}
|
||||
|
||||
const data = await prisma.ajukanIdeInovatif.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Ajukan ide inovatif tidak ditemukan",
|
||||
}, {status: 404});
|
||||
}
|
||||
|
||||
return Response.json({
|
||||
success: true,
|
||||
message: "Success fetch ajukan ide inovatif by ID",
|
||||
data,
|
||||
}, {status: 200});
|
||||
} catch (error) {
|
||||
console.error("Find by ID error:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Gagal mengambil ajukan ide inovatif: " + (error instanceof Error ? error.message : 'Unknown error'),
|
||||
}, {status: 500});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import ajukanIdeInovatifCreate from "./create";
|
||||
import ajukanIdeInovatifFindMany from "./findMany";
|
||||
import ajukanIdeInovatifFindUnique from "./findUnique";
|
||||
import ajukanIdeInovatifDelete from "./del";
|
||||
|
||||
const AjukanIdeInovatif = new Elysia({
|
||||
prefix: "/ajukanideinovatif",
|
||||
tags: ["Inovasi/AjukanIde"],
|
||||
})
|
||||
.post("/create", ajukanIdeInovatifCreate, {
|
||||
body: t.Object({
|
||||
name: t.String(),
|
||||
deskripsi: t.String(),
|
||||
alamat: t.String(),
|
||||
namaIde: t.String(),
|
||||
masalah: t.String(),
|
||||
benefit: t.String(),
|
||||
}),
|
||||
})
|
||||
.get("/find-many", ajukanIdeInovatifFindMany)
|
||||
.get("/:id", async (context) => {
|
||||
const response = await ajukanIdeInovatifFindUnique(context.request);
|
||||
return response;
|
||||
})
|
||||
.delete("/del/:id", ajukanIdeInovatifDelete);
|
||||
export default AjukanIdeInovatif;
|
||||
Reference in New Issue
Block a user