Kebutuhan Deploy

This commit is contained in:
2025-06-26 11:00:15 +08:00
parent 4683034cd7
commit 4f6cc66b7c
18 changed files with 219 additions and 173 deletions

View File

@@ -0,0 +1,32 @@
/*
Warnings:
- The primary key for the `DataKematian_Kelahiran` table will be changed. If it partially fails, the table could be left without primary key constraint.
- The `id` column on the `DataKematian_Kelahiran` table would be dropped and recreated. This will lead to data loss if there is data in the column.
- The primary key for the `GrafikKepuasan` table will be changed. If it partially fails, the table could be left without primary key constraint.
- The `id` column on the `GrafikKepuasan` table would be dropped and recreated. This will lead to data loss if there is data in the column.
- A unique constraint covering the columns `[uuid]` on the table `DataKematian_Kelahiran` will be added. If there are existing duplicate values, this will fail.
- A unique constraint covering the columns `[uuid]` on the table `GrafikKepuasan` will be added. If there are existing duplicate values, this will fail.
- The required column `uuid` was added to the `DataKematian_Kelahiran` table with a prisma-level default value. This is not possible if the table is not empty. Please add this column as optional, then populate it before making it required.
- The required column `uuid` was added to the `GrafikKepuasan` table with a prisma-level default value. This is not possible if the table is not empty. Please add this column as optional, then populate it before making it required.
*/
-- AlterTable
ALTER TABLE "DataKematian_Kelahiran" DROP CONSTRAINT "DataKematian_Kelahiran_pkey",
ADD COLUMN "uuid" TEXT NOT NULL,
DROP COLUMN "id",
ADD COLUMN "id" SERIAL NOT NULL,
ADD CONSTRAINT "DataKematian_Kelahiran_pkey" PRIMARY KEY ("id");
-- AlterTable
ALTER TABLE "GrafikKepuasan" DROP CONSTRAINT "GrafikKepuasan_pkey",
ADD COLUMN "uuid" TEXT NOT NULL,
DROP COLUMN "id",
ADD COLUMN "id" SERIAL NOT NULL,
ADD CONSTRAINT "GrafikKepuasan_pkey" PRIMARY KEY ("id");
-- CreateIndex
CREATE UNIQUE INDEX "DataKematian_Kelahiran_uuid_key" ON "DataKematian_Kelahiran"("uuid");
-- CreateIndex
CREATE UNIQUE INDEX "GrafikKepuasan_uuid_key" ON "GrafikKepuasan"("uuid");

View File

@@ -630,7 +630,8 @@ model PendaftaranJadwalKegiatan {
// ========================================= PERSENTASE KELAHIRAN & KEMATIAN ========================================= // // ========================================= PERSENTASE KELAHIRAN & KEMATIAN ========================================= //
model DataKematian_Kelahiran { model DataKematian_Kelahiran {
id String @id @default(cuid()) id Int @id @default(autoincrement())
uuid String @default(cuid()) @unique
tahun String tahun String
kematianKasar String kematianKasar String
kematianBayi String kematianBayi String
@@ -643,7 +644,8 @@ model DataKematian_Kelahiran {
// ========================================= GRAFIK KEPUASAN ========================================= // // ========================================= GRAFIK KEPUASAN ========================================= //
model GrafikKepuasan { model GrafikKepuasan {
id String @id @default(cuid()) id Int @id @default(autoincrement())
uuid String @default(cuid()) @unique
label String label String
jumlah String jumlah String
createdAt DateTime @default(now()) createdAt DateTime @default(now())

View File

@@ -39,15 +39,15 @@ const grafikkepuasan = proxy({
const res = await ApiFetch.api.kesehatan.grafikkepuasan["create"].post(grafikkepuasan.create.form); const res = await ApiFetch.api.kesehatan.grafikkepuasan["create"].post(grafikkepuasan.create.form);
if (res.status === 200) { if (res.status === 200) {
const id = res.data?.data?.id; const uuid = res.data?.data?.uuid;
if (id) { if (uuid) {
toast.success("Success create"); toast.success("Success create");
grafikkepuasan.create.form = { grafikkepuasan.create.form = {
label: "", label: "",
jumlah: "", jumlah: "",
}; };
grafikkepuasan.findMany.load(); grafikkepuasan.findMany.load();
return id; return uuid;
} }
} }
toast.error("failed create"); toast.error("failed create");
@@ -77,9 +77,9 @@ const grafikkepuasan = proxy({
data: null as Prisma.GrafikKepuasanGetPayload<{ data: null as Prisma.GrafikKepuasanGetPayload<{
omit: { isActive: true } omit: { isActive: true }
}> | null, }> | null,
async load(id: string) { async load(uuid: string) {
try { try {
const res = await fetch(`/api/kesehatan/grafikkepuasan/${id}`); const res = await fetch(`/api/kesehatan/grafikkepuasan/${uuid}`);
if (res.ok) { if (res.ok) {
const data = await res.json(); const data = await res.json();
grafikkepuasan.findUnique.data = data.data ?? null; grafikkepuasan.findUnique.data = data.data ?? null;
@@ -94,14 +94,14 @@ const grafikkepuasan = proxy({
}, },
}, },
update: { update: {
id: "", uuid: "",
form: {...defaultForm}, form: {...defaultForm},
loading: false, loading: false,
async byId() { async byId() {
}, },
async submit() { async submit() {
const id = this.id; const uuid = this.uuid;
if (!id) { if (!uuid) {
toast.warn("ID tidak valid"); toast.warn("ID tidak valid");
return null; return null;
} }
@@ -114,7 +114,7 @@ const grafikkepuasan = proxy({
} }
try { try {
this.loading = true; this.loading = true;
const response = await fetch(`/api/kesehatan/grafikkepuasan/${id}`, { const response = await fetch(`/api/kesehatan/grafikkepuasan/${uuid}`, {
method: "PUT", method: "PUT",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
@@ -143,14 +143,14 @@ const grafikkepuasan = proxy({
}, },
delete: { delete: {
loading: false, loading: false,
async byId(id: string) { async byId(uuid: string) {
if (!id) { if (!uuid) {
return toast.warn("ID tidak valid"); return toast.warn("ID tidak valid");
} }
try { try {
grafikkepuasan.delete.loading = true; grafikkepuasan.delete.loading = true;
const response = await fetch(`/api/kesehatan/grafikkepuasan/del/${id}`, { const response = await fetch(`/api/kesehatan/grafikkepuasan/del/${uuid}`, {
method: "DELETE", method: "DELETE",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",

View File

@@ -34,28 +34,23 @@ const persentasekelahiran = proxy({
async create() { async create() {
const cek = templatePersentase.safeParse(persentasekelahiran.create.form); const cek = templatePersentase.safeParse(persentasekelahiran.create.form);
if (!cek.success) { if (!cek.success) {
const err = `[${cek.error.issues const err = `[${cek.error.issues.map((v) => `${v.path.join(".")}`).join("\n")}] required`;
.map((v) => `${v.path.join(".")}`)
.join("\n")}] required`;
toast.error(err); toast.error(err);
return null; return null;
} }
try { try {
persentasekelahiran.create.loading = true; persentasekelahiran.create.loading = true;
const res = await ApiFetch.api.kesehatan.persentasekelahiran["create"].post(persentasekelahiran.create.form); const res = await ApiFetch.api.kesehatan.persentasekelahiran["create"].post(
persentasekelahiran.create.form
);
if (res.status === 200) { if (res.status === 200) {
const id = res.data?.data?.id; const uuid = res.data?.data?.uuid;
if (id) { if (uuid) {
toast.success("Success create"); toast.success("Success create");
persentasekelahiran.create.form = { persentasekelahiran.create.form = { ...defaultForm };
tahun: "",
kematianKasar: "",
kelahiranKasar: "",
kematianBayi: "",
};
persentasekelahiran.findMany.load(); persentasekelahiran.findMany.load();
return id; return uuid;
} }
} }
toast.error("failed create"); toast.error("failed create");
@@ -68,26 +63,26 @@ const persentasekelahiran = proxy({
} }
}, },
}, },
findMany: { findMany: {
data: null as data: null as Prisma.DataKematian_KelahiranGetPayload<{
| Prisma.DataKematian_KelahiranGetPayload<{ omit: { isActive: true } }>[] omit: { isActive: true };
| null, }>[] | null,
async load() { async load() {
const res = await ApiFetch.api.kesehatan.persentasekelahiran[ const res = await ApiFetch.api.kesehatan.persentasekelahiran["find-many"].get();
"find-many"
].get();
if (res.status === 200) { if (res.status === 200) {
persentasekelahiran.findMany.data = res.data?.data ?? []; persentasekelahiran.findMany.data = res.data?.data ?? [];
} }
}, },
}, },
findUnique: { findUnique: {
data: null as Prisma.DataKematian_KelahiranGetPayload<{ data: null as Prisma.DataKematian_KelahiranGetPayload<{
omit: { isActive: true }; omit: { isActive: true };
}> | null, }> | null,
async load(id: string) { async load(uuid: string) {
try { try {
const res = await fetch(`/api/kesehatan/persentasekelahiran/${id}`); const res = await fetch(`/api/kesehatan/persentasekelahiran/${uuid}`);
if (res.ok) { if (res.ok) {
const data = await res.json(); const data = await res.json();
persentasekelahiran.findUnique.data = data.data ?? null; persentasekelahiran.findUnique.data = data.data ?? null;
@@ -101,82 +96,86 @@ const persentasekelahiran = proxy({
} }
}, },
}, },
update: {
id: "", update: {
form: { ...defaultForm }, uuid: "",
loading: false, form: { ...defaultForm },
async byId() {}, loading: false,
async submit() { async submit() {
const id = this.id; const uuid = this.uuid;
if (!id) { if (!uuid) {
toast.warn("ID tidak valid"); toast.warn("UUID tidak valid");
return null; return null;
}
const formData = {
tahun: this.form.tahun,
kematianKasar: this.form.kematianKasar,
kelahiranKasar: this.form.kelahiranKasar,
kematianBayi: this.form.kematianBayi,
};
const cek = templatePersentase.safeParse(formData);
if (!cek.success) {
const err = `[${cek.error.issues
.map((v) => `${v.path.join(".")}`)
.join("\n")}] required`;
toast.error(err);
return null;
}
try {
this.loading = true;
const res = await fetch(`/api/kesehatan/persentasekelahiran/${uuid}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(formData),
});
const result = await res.json();
if (!res.ok || !result?.success) {
throw new Error(result?.message || "Gagal update data");
} }
const cek = templatePersentase.safeParse(persentasekelahiran.update.form);
if (!cek.success) {
const err = `[${cek.error.issues
.map((v) => `${v.path.join(".")}`)
.join("\n")}] required`;
return toast.error(err);
}
try {
this.loading = true;
const response = await fetch(`/api/kesehatan/persentasekelahiran/${id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(this.form),
});
const result = await response.json();
if (!response.ok || !result?.success) { toast.success("Berhasil update data!");
throw new Error(result?.message || "Gagal update data"); await persentasekelahiran.findMany.load();
} return result.data;
} catch (error) {
toast.success("Berhasil update data!"); console.error("Update error:", error);
toast.error("Gagal update data persentase kelahiran");
// ✅ Optional: refresh list kalau kamu langsung ke halaman list throw error;
await persentasekelahiran.findMany.load(); } finally {
this.loading = false;
return result.data; }
} catch (error) {
console.error("Error update data:", error);
toast.error("Gagal update data persentase kelahiran");
} finally {
this.loading = false;
}
},
}, },
},
delete: { delete: {
loading: false, loading: false,
async byId(id: string) { async byId(uuid: string) {
if (!id) return toast.warn("ID tidak valid"); if (!uuid) return toast.warn("UUID tidak valid");
try { try {
persentasekelahiran.delete.loading = true; persentasekelahiran.delete.loading = true;
const response = await fetch( const response = await fetch(`/api/kesehatan/persentasekelahiran/del/${uuid}`, {
`/api/kesehatan/persentasekelahiran/del/${id}`, method: "DELETE",
{ headers: {
method: "DELETE", "Content-Type": "application/json",
headers: { },
"Content-Type": "application/json", });
},
}
);
const result = await response.json(); const result = await response.json();
if (response.ok && result?.success) { if (response.ok && result?.success) {
toast.success( toast.success(result.message || "Persentase kelahiran berhasil dihapus");
result.message || "Persentase kelahiran berhasil dihapus" await persentasekelahiran.findMany.load();
);
await persentasekelahiran.findMany.load(); // refresh list
} else { } else {
toast.error( toast.error(result?.message || "Gagal menghapus persentase kelahiran");
result?.message || "Gagal menghapus persentase kelahiran"
);
} }
} catch (error) { } catch (error) {
console.error("Gagal delete:", error); console.error("Gagal delete:", error);

View File

@@ -11,15 +11,15 @@ import { useProxy } from 'valtio/utils';
function EditGrafikHasilKepuasan() { function EditGrafikHasilKepuasan() {
const router = useRouter() const router = useRouter()
const params = useParams() as { id: string } const params = useParams() as { uuid: string }
const stateGrafikKepuasan = useProxy(grafikkepuasan) const stateGrafikKepuasan = useProxy(grafikkepuasan)
const id = params.id const uuid = params.uuid
// Load data saat komponen mount // Load data saat komponen mount
useEffect(() => { useEffect(() => {
if (id) { if (uuid) {
stateGrafikKepuasan.findUnique.load(id).then(() => { stateGrafikKepuasan.findUnique.load(uuid).then(() => {
const data = stateGrafikKepuasan.findUnique.data const data = stateGrafikKepuasan.findUnique.data
if (data) { if (data) {
stateGrafikKepuasan.update.form = { stateGrafikKepuasan.update.form = {
@@ -29,11 +29,11 @@ function EditGrafikHasilKepuasan() {
} }
}) })
} }
}, [id]) }, [uuid])
const handleSubmit = async () => { const handleSubmit = async () => {
// Set the ID before submitting // Set the ID before submitting
stateGrafikKepuasan.update.id = id; stateGrafikKepuasan.update.uuid = uuid;
await stateGrafikKepuasan.update.submit(); await stateGrafikKepuasan.update.submit();
router.push('/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan') router.push('/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan')
} }

View File

@@ -45,7 +45,7 @@ function GrafikHasilKepuasanMasyarakat() {
setMounted(true); setMounted(true);
if (stateGrafikKepuasan.findMany.data) { if (stateGrafikKepuasan.findMany.data) {
setChartData(stateGrafikKepuasan.findMany.data.map((item) => ({ setChartData(stateGrafikKepuasan.findMany.data.map((item) => ({
id: item.id, id: item.uuid,
label: item.label, label: item.label,
jumlah: Number(item.jumlah), jumlah: Number(item.jumlah),
}))); })));
@@ -82,11 +82,11 @@ function GrafikHasilKepuasanMasyarakat() {
</TableThead> </TableThead>
<TableTbody> <TableTbody>
{stateGrafikKepuasan.findMany.data?.map((item) => ( {stateGrafikKepuasan.findMany.data?.map((item) => (
<TableTr key={item.id}> <TableTr key={item.uuid}>
<TableTd>{item.label}</TableTd> <TableTd>{item.label}</TableTd>
<TableTd>{item.jumlah}</TableTd> <TableTd>{item.jumlah}</TableTd>
<TableTd> <TableTd>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan/${item.id}`)}> <Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan/${item.uuid}`)}>
<IconEdit size={20} /> <IconEdit size={20} />
</Button> </Button>
</TableTd> </TableTd>
@@ -95,7 +95,7 @@ function GrafikHasilKepuasanMasyarakat() {
color='red' color='red'
disabled={stateGrafikKepuasan.delete.loading} disabled={stateGrafikKepuasan.delete.loading}
onClick={() => { onClick={() => {
setSelectedId(item.id) setSelectedId(item.uuid)
setModalHapus(true) setModalHapus(true)
}}> }}>
<IconTrash size={20} /> <IconTrash size={20} />

View File

@@ -7,38 +7,51 @@ import { Box, Button, Paper, Stack, TextInput, Title } from '@mantine/core';
import { IconArrowBack } from '@tabler/icons-react'; import { IconArrowBack } from '@tabler/icons-react';
import { useParams, useRouter } from 'next/navigation'; import { useParams, useRouter } from 'next/navigation';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { toast } from 'react-toastify';
import { useProxy } from 'valtio/utils'; import { useProxy } from 'valtio/utils';
function EditPersentaseDataKelahiranKematian() { function EditPersentaseDataKelahiranKematian() {
const router = useRouter() const router = useRouter()
const params = useParams() as { id: string } const params = useParams() as { uuid: string }
const statePresentase = useProxy(persentasekelahiran) const statePresentase = useProxy(persentasekelahiran)
const id = params.id const id = params.uuid
// Load data saat komponen mount // Load data saat komponen mount
useEffect(() => { // Di file page.tsx, ubah useEffect-nya menjadi:
if (id) { useEffect(() => {
statePresentase.findUnique.load(id).then(() => { if (!id) return;
const data = statePresentase.findUnique.data statePresentase.update.uuid = id;
if (data) { statePresentase.findUnique.load(id)
statePresentase.update.form = { .then(() => {
tahun: data.tahun || '', const data = statePresentase.findUnique.data;
kematianKasar: data.kematianKasar || '', if (data) {
kelahiranKasar: data.kelahiranKasar || '', statePresentase.update.form = {
kematianBayi: data.kematianBayi || '', tahun: String(data.tahun || ''),
} kematianKasar: String(data.kematianKasar || ''),
} kelahiranKasar: String(data.kelahiranKasar || ''),
}) kematianBayi: String(data.kematianBayi || '')
} };
}, [id]) }
})
.catch(error => {
console.error('Error loading data:', error);
toast.error('Gagal memuat data');
});
}, [id]);
const handleSubmit = async () => { // Di handleSubmit, ubah menjadi:
// Set the ID before submitting const handleSubmit = async () => {
statePresentase.update.id = id; try {
statePresentase.update.uuid = id;
await statePresentase.update.submit(); await statePresentase.update.submit();
router.push('/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian') toast.success('Data berhasil diperbarui');
router.push('/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian');
} catch (error) {
console.error('Error updating data:', error);
toast.error('Gagal memperbarui data');
} }
};
return ( return (
<Box> <Box>

View File

@@ -13,7 +13,7 @@ import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
function PersentaseDataKelahiranKematian() { function PersentaseDataKelahiranKematian() {
type PDKMGrafik = { type PDKMGrafik = {
id: string; uuid: string;
tahun: string; tahun: string;
kematianKasar: number; kematianKasar: number;
kematianBayi: number; kematianBayi: number;
@@ -47,7 +47,7 @@ function PersentaseDataKelahiranKematian() {
setMounted(true); setMounted(true);
if (statePersentase.findMany.data) { if (statePersentase.findMany.data) {
setChartData(statePersentase.findMany.data.map((item) => ({ setChartData(statePersentase.findMany.data.map((item) => ({
id: item.id, uuid: item.uuid,
tahun: item.tahun, tahun: item.tahun,
kematianKasar: Number(item.kematianKasar), kematianKasar: Number(item.kematianKasar),
kematianBayi: Number(item.kematianBayi), kematianBayi: Number(item.kematianBayi),
@@ -88,13 +88,13 @@ function PersentaseDataKelahiranKematian() {
</TableThead> </TableThead>
<TableTbody> <TableTbody>
{statePersentase.findMany.data?.map((item) => ( {statePersentase.findMany.data?.map((item) => (
<TableTr key={item.id}> <TableTr key={item.uuid}>
<TableTd>{item.tahun}</TableTd> <TableTd>{item.tahun}</TableTd>
<TableTd>{item.kematianKasar}</TableTd> <TableTd>{item.kematianKasar}</TableTd>
<TableTd>{item.kematianBayi}</TableTd> <TableTd>{item.kematianBayi}</TableTd>
<TableTd>{item.kelahiranKasar}</TableTd> <TableTd>{item.kelahiranKasar}</TableTd>
<TableTd> <TableTd>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/${item.id}`)}> <Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/${item.uuid}`)}>
<IconEdit size={20} /> <IconEdit size={20} />
</Button> </Button>
</TableTd> </TableTd>
@@ -103,7 +103,7 @@ function PersentaseDataKelahiranKematian() {
color='red' color='red'
disabled={statePersentase.delete.loading} disabled={statePersentase.delete.loading}
onClick={() => { onClick={() => {
setSelectedId(item.id) setSelectedId(item.uuid)
setModalHapus(true) setModalHapus(true)
}}> }}>
<IconTrash size={20} /> <IconTrash size={20} />

View File

@@ -17,7 +17,7 @@ export default async function grafikKepuasanCreate(context: Context) {
jumlah: body.jumlah, jumlah: body.jumlah,
}, },
select: { select: {
id: true, uuid: true,
label: true, label: true,
jumlah: true, jumlah: true,
} }

View File

@@ -2,9 +2,9 @@ import prisma from "@/lib/prisma";
import { Context } from "elysia"; import { Context } from "elysia";
export default async function grafikKepuasanDelete(context: Context) { export default async function grafikKepuasanDelete(context: Context) {
const id = context.params?.id; const uuid = context.params?.uuid;
if (!id) { if (!uuid) {
return { return {
success: false, success: false,
message: "ID tidak ditemukan" message: "ID tidak ditemukan"
@@ -13,7 +13,7 @@ export default async function grafikKepuasanDelete(context: Context) {
const existing = await prisma.grafikKepuasan.findUnique({ const existing = await prisma.grafikKepuasan.findUnique({
where: { where: {
id: id, uuid: uuid,
}, },
}) })
@@ -25,7 +25,7 @@ export default async function grafikKepuasanDelete(context: Context) {
} }
const deleted = await prisma.grafikKepuasan.delete({ const deleted = await prisma.grafikKepuasan.delete({
where: { id }, where: { uuid },
}) })
return { return {

View File

@@ -3,9 +3,9 @@ import prisma from "@/lib/prisma";
export default async function grafikKepuasanFindUnique(request: Request) { export default async function grafikKepuasanFindUnique(request: Request) {
const url = new URL(request.url); const url = new URL(request.url);
const pathSegments = url.pathname.split('/'); const pathSegments = url.pathname.split('/');
const id = pathSegments[pathSegments.length - 1]; const uuid = pathSegments[pathSegments.length - 1];
if (!id) { if (!uuid) {
return Response.json({ return Response.json({
success: false, success: false,
message: 'ID tidak boleh kosong', message: 'ID tidak boleh kosong',
@@ -13,7 +13,7 @@ export default async function grafikKepuasanFindUnique(request: Request) {
} }
try { try {
if (typeof id !== 'string') { if (typeof uuid !== 'string') {
return Response.json({ return Response.json({
success: false, success: false,
message: "ID tidak valid", message: "ID tidak valid",
@@ -21,7 +21,7 @@ export default async function grafikKepuasanFindUnique(request: Request) {
} }
const data = await prisma.grafikKepuasan.findUnique({ const data = await prisma.grafikKepuasan.findUnique({
where: { id }, where: { uuid },
}); });
if (!data) { if (!data) {

View File

@@ -9,7 +9,7 @@ const GrafikKepuasan = new Elysia({
prefix: "/grafikkepuasan", prefix: "/grafikkepuasan",
tags: ["Data Kesehatan/Grafik Kepuasan"] tags: ["Data Kesehatan/Grafik Kepuasan"]
}) })
.get("/:id", async (context) => { .get("/:uuid", async (context) => {
const response = await grafikKepuasanFindUnique(new Request(context.request)); const response = await grafikKepuasanFindUnique(new Request(context.request));
return response; return response;
}) })
@@ -20,18 +20,18 @@ const GrafikKepuasan = new Elysia({
jumlah: t.String(), jumlah: t.String(),
}), }),
}) })
.put("/:id", grafikKepuasanUpdate, { .put("/:uuid", grafikKepuasanUpdate, {
params: t.Object({ params: t.Object({
id: t.String(), uuid: t.String(),
}), }),
body: t.Object({ body: t.Object({
label: t.String(), label: t.String(),
jumlah: t.String(), jumlah: t.String(),
}), }),
}) })
.delete("/del/:id", grafikKepuasanDelete, { .delete("/del/:uuid", grafikKepuasanDelete, {
params: t.Object({ params: t.Object({
id: t.String(), uuid: t.String(),
}), }),
}) })
export default GrafikKepuasan export default GrafikKepuasan

View File

@@ -2,9 +2,9 @@ import prisma from "@/lib/prisma";
import { Context } from "elysia"; import { Context } from "elysia";
export default async function grafikKepuasanUpdate(context: Context) { export default async function grafikKepuasanUpdate(context: Context) {
const id = context.params?.id; const uuid = context.params?.uuid;
if (!id) { if (!uuid) {
return { return {
success: false, success: false,
message: "ID tidak ditemukan" message: "ID tidak ditemukan"
@@ -18,7 +18,7 @@ export default async function grafikKepuasanUpdate(context: Context) {
const existing = await prisma.grafikKepuasan.findUnique({ const existing = await prisma.grafikKepuasan.findUnique({
where: { where: {
id: id, uuid: uuid,
}, },
}) })
@@ -30,7 +30,7 @@ export default async function grafikKepuasanUpdate(context: Context) {
} }
const updated = await prisma.grafikKepuasan.update({ const updated = await prisma.grafikKepuasan.update({
where: { id }, where: { uuid },
data: { data: {
label, label,
jumlah, jumlah,

View File

@@ -22,7 +22,7 @@ export default async function persentaseKelahiranKematianCreate(context: Context
kelahiranKasar: body.kelahiranKasar, kelahiranKasar: body.kelahiranKasar,
}, },
select: { select: {
id: true, uuid: true,
tahun: true, tahun: true,
kematianKasar: true, kematianKasar: true,
kematianBayi: true, kematianBayi: true,

View File

@@ -2,18 +2,18 @@ import prisma from "@/lib/prisma";
import { Context } from "elysia"; import { Context } from "elysia";
export default async function persentaseKelahiranKematianDelete(context: Context) { export default async function persentaseKelahiranKematianDelete(context: Context) {
const id = context.params?.id; const uuid = context.params?.uuid;
if (!id) { if (!uuid) {
return { return {
success: false, success: false,
message: "Id tidak ditemukan", message: "ID tidak ditemukan",
} }
} }
const existing = await prisma.dataKematian_Kelahiran.findUnique({ const existing = await prisma.dataKematian_Kelahiran.findUnique({
where: { where: {
id: id, uuid: uuid,
}, },
}) })
@@ -25,7 +25,7 @@ export default async function persentaseKelahiranKematianDelete(context: Context
} }
const deleted = await prisma.dataKematian_Kelahiran.delete({ const deleted = await prisma.dataKematian_Kelahiran.delete({
where: { id }, where: { uuid },
}) })
return { return {

View File

@@ -3,9 +3,9 @@ import prisma from "@/lib/prisma";
export default async function persentaseKelahiranKematianFindUnique(request: Request) { export default async function persentaseKelahiranKematianFindUnique(request: Request) {
const url = new URL(request.url); const url = new URL(request.url);
const pathSegments = url.pathname.split('/'); const pathSegments = url.pathname.split('/');
const id = pathSegments[pathSegments.length - 1]; const uuid = pathSegments[pathSegments.length - 1];
if (!id) { if (!uuid) {
return Response.json({ return Response.json({
success: false, success: false,
message: "ID tidak boleh kosong", message: "ID tidak boleh kosong",
@@ -13,7 +13,7 @@ export default async function persentaseKelahiranKematianFindUnique(request: Req
} }
try { try {
if (typeof id !== 'string') { if (typeof uuid !== 'string') {
return Response.json({ return Response.json({
success: false, success: false,
message: "ID tidak valid", message: "ID tidak valid",
@@ -21,7 +21,7 @@ export default async function persentaseKelahiranKematianFindUnique(request: Req
} }
const data = await prisma.dataKematian_Kelahiran.findUnique({ const data = await prisma.dataKematian_Kelahiran.findUnique({
where: { id }, where: { uuid },
}); });
if (!data) { if (!data) {

View File

@@ -9,7 +9,7 @@ const PersentaseKelahiranKematian = new Elysia({
prefix: "/persentasekelahiran", prefix: "/persentasekelahiran",
tags: ["Data Kesehatan/Persentase Kelahiran Kematian"], tags: ["Data Kesehatan/Persentase Kelahiran Kematian"],
}) })
.get("/:id", async (context) => { .get("/:uuid", async (context) => {
const response = await persentaseKelahiranKematianFindUnique(new Request(context.request)) const response = await persentaseKelahiranKematianFindUnique(new Request(context.request))
return response return response
}) })
@@ -22,9 +22,9 @@ const PersentaseKelahiranKematian = new Elysia({
kelahiranKasar: t.String(), kelahiranKasar: t.String(),
}), }),
}) })
.put("/:id", persentaseKelahiranKematianUpdate, { .put("/:uuid", persentaseKelahiranKematianUpdate, {
params: t.Object({ params: t.Object({
id: t.String(), uuid: t.String(),
}), }),
body: t.Object({ body: t.Object({
tahun: t.String(), tahun: t.String(),
@@ -33,9 +33,9 @@ const PersentaseKelahiranKematian = new Elysia({
kelahiranKasar: t.String(), kelahiranKasar: t.String(),
}), }),
}) })
.delete("/del/:id", persentaseKelahiranKematianDelete, { .delete("/del/:uuid", persentaseKelahiranKematianDelete, {
params: t.Object({ params: t.Object({
id: t.String(), uuid: t.String(),
}), }),
}) })
export default PersentaseKelahiranKematian; export default PersentaseKelahiranKematian;

View File

@@ -2,12 +2,12 @@ import prisma from "@/lib/prisma";
import { Context } from "elysia"; import { Context } from "elysia";
export default async function persentaseKelahiranKematianUpdate(context: Context) { export default async function persentaseKelahiranKematianUpdate(context: Context) {
const id = context.params?.id; const uuid = context.params?.uuid;
if (!id) { if (!uuid) {
return { return {
success: false, success: false,
message: "Id tidak ditemukan", message: "ID tidak ditemukan",
} }
} }
@@ -20,7 +20,7 @@ export default async function persentaseKelahiranKematianUpdate(context: Context
const existing = await prisma.dataKematian_Kelahiran.findUnique({ const existing = await prisma.dataKematian_Kelahiran.findUnique({
where: { where: {
id: id, uuid: uuid,
}, },
}) })
@@ -32,7 +32,7 @@ export default async function persentaseKelahiranKematianUpdate(context: Context
} }
const updated = await prisma.dataKematian_Kelahiran.update({ const updated = await prisma.dataKematian_Kelahiran.update({
where: { id }, where: { uuid },
data: { data: {
tahun, tahun,
kematianKasar, kematianKasar,