API & UI Menu Lingkungan, Submenu Edukas Lingkungan

This commit is contained in:
2025-07-18 21:24:51 +08:00
parent f05a096633
commit e2f75ff3ad
30 changed files with 1176 additions and 255 deletions

View File

@@ -0,0 +1,33 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function contohKegiatanDesaFindUnique(context: Context) {
try {
const id = context?.params?.slugs?.[0];
// If no ID provided, get the first profile
if (!id) {
const data = await prisma.contohEdukasiLingkungan.findFirst();
return {
success: true,
data,
};
}
const data = await prisma.contohEdukasiLingkungan.findUniqueOrThrow({
where: { id },
});
return {
success: true,
data,
};
} catch (error) {
console.error("Error fetching contoh edukasi lingkungan:", error);
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
};
}
}

View File

@@ -0,0 +1,18 @@
import Elysia, { t } from "elysia";
import contohKegiatanDesaFindUnique from "./findUnique";
import contohKegiatanDesaUpdate from "./updt";
const ContohKegiatanDesa = new Elysia({
prefix: "/contohkegiatandesa",
tags: ["Lingkungan/Edukasi Lingkungan/Contoh Kegiatan Desa"]
})
.get("/find-by-id", contohKegiatanDesaFindUnique)
.post("/update", contohKegiatanDesaUpdate, {
body: t.Object({
id: t.String(),
judul: t.String(),
deskripsi: t.String(),
})
})
export default ContohKegiatanDesa

View File

@@ -0,0 +1,29 @@
import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.ContohEdukasiLingkunganGetPayload<{
select: {
id: true;
judul: true;
deskripsi: true;
}
}>
export default async function contohKegiatanDesaUpdate(context: Context) {
const body = context.body as FormCreate;
await prisma.contohEdukasiLingkungan.update({
where: {
id: body.id
},
data: {
judul: body.judul,
deskripsi: body.deskripsi,
}
})
return {
success: true,
message: "Contoh kegiatan desa berhasil diupdate",
}
}

View File

@@ -0,0 +1,14 @@
import Elysia from "elysia";
import TujuanEdukasiLingkungan from "./tujuan-edukasi-lingkungan";
import MateriEdukasiLingkungan from "./materi-edukasi-lingkunga";
import ContohKegiatanDesa from "./contoh-kegiatan-desa";
const EdukasiLingkungan = new Elysia({
prefix: "/edukasilingkungan",
tags: ["Lingkungan/Edukasi Lingkungan"]
})
.use(TujuanEdukasiLingkungan)
.use(MateriEdukasiLingkungan)
.use(ContohKegiatanDesa)
export default EdukasiLingkungan;

View File

@@ -0,0 +1,33 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function materiEdukasiLingkunganFindUnique(context: Context) {
try {
const id = context?.params?.slugs?.[0];
// If no ID provided, get the first profile
if (!id) {
const data = await prisma.materiEdukasiLingkungan.findFirst();
return {
success: true,
data,
};
}
const data = await prisma.materiEdukasiLingkungan.findUniqueOrThrow({
where: { id },
});
return {
success: true,
data,
};
} catch (error) {
console.error("Error fetching materi edukasi lingkungan:", error);
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
};
}
}

View File

@@ -0,0 +1,19 @@
import Elysia, { t } from "elysia";
import materiEdukasiLingkunganUpdate from "./updt";
import materiEdukasiLingkunganFindUnique from "./findUnique";
const MateriEdukasiLingkungan = new Elysia({
prefix: "/materiedukasilingkungan",
tags: ["Lingkungan/Edukasi Lingkungan/Materi Edukasi Lingkungan"]
})
.get("/find-by-id", materiEdukasiLingkunganFindUnique)
.post("/update", materiEdukasiLingkunganUpdate, {
body: t.Object({
id: t.String(),
judul: t.String(),
deskripsi: t.String(),
})
})
export default MateriEdukasiLingkungan

View File

@@ -0,0 +1,29 @@
import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.MateriEdukasiLingkunganGetPayload<{
select: {
id: true;
judul: true;
deskripsi: true;
}
}>
export default async function materiEdukasiLingkunganUpdate(context: Context) {
const body = context.body as FormCreate;
await prisma.materiEdukasiLingkungan.update({
where: {
id: body.id
},
data: {
judul: body.judul,
deskripsi: body.deskripsi,
}
})
return {
success: true,
message: "Materi edukasi lingkungan berhasil diupdate",
}
}

View File

@@ -0,0 +1,33 @@
import prisma from "@/lib/prisma";
import { Context } from "elysia";
export default async function tujuanEdukasiLingkunganFindUnique(context: Context) {
try {
const id = context?.params?.slugs?.[0];
// If no ID provided, get the first profile
if (!id) {
const data = await prisma.tujuanEdukasiLingkungan.findFirst();
return {
success: true,
data,
};
}
const data = await prisma.tujuanEdukasiLingkungan.findUniqueOrThrow({
where: { id },
});
return {
success: true,
data,
};
} catch (error) {
console.error("Error fetching tujuan edukasi lingkungan:", error);
return {
success: false,
message: error instanceof Error ? error.message : "Unknown error",
};
}
}

View File

@@ -0,0 +1,18 @@
import Elysia, { t } from "elysia";
import tujuanEdukasiLingkunganFindUnique from "./findUnqiue";
import tujuanEdukasiLingkunganUpdate from "./updt";
const TujuanEdukasiLingkungan = new Elysia({
prefix: "/tujuanedukasilingkungan",
tags: ["Lingkungan/Edukasi Lingkungan/Tujuan Edukasi Lingkungan"]
})
.get("/find-by-id", tujuanEdukasiLingkunganFindUnique)
.post("/update", tujuanEdukasiLingkunganUpdate, {
body: t.Object({
id: t.String(),
judul: t.String(),
deskripsi: t.String(),
})
})
export default TujuanEdukasiLingkungan

View File

@@ -0,0 +1,29 @@
import prisma from "@/lib/prisma";
import { Prisma } from "@prisma/client";
import { Context } from "elysia";
type FormCreate = Prisma.TujuanEdukasiLingkunganGetPayload<{
select: {
id: true;
judul: true;
deskripsi: true;
}
}>
export default async function tujuanEdukasiLingkunganUpdate(context: Context) {
const body = context.body as FormCreate;
await prisma.tujuanEdukasiLingkungan.update({
where: {
id: body.id
},
data: {
judul: body.judul,
deskripsi: body.deskripsi,
}
})
return {
success: true,
message: "Tujuan edukasi lingkungan berhasil diupdate",
}
}

View File

@@ -2,6 +2,7 @@ import Elysia from "elysia";
import PengelolaanSampah from "./pengelolaan-sampah";
import ProgramPenghijauan from "./program-penghijauan";
import DataLingkunganDesa from "./data-lingkungan-desa";
import EdukasiLingkungan from "./edukasi-lingkungan";
const Lingkungan = new Elysia({
prefix: "/api/lingkungan",
@@ -11,5 +12,6 @@ const Lingkungan = new Elysia({
.use(PengelolaanSampah)
.use(ProgramPenghijauan)
.use(DataLingkunganDesa)
.use(EdukasiLingkungan)
export default Lingkungan;