Seeder menu keamanan -> menu ekonomi submenu : demografi pekerjaan, junlah pengangguran, lowongan kerja lokal, pasar desa, program kemiskinan, sektor unggulan, struktur organisasi
73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
import prisma from "@/lib/prisma";
|
|
import { Context } from "elysia";
|
|
|
|
type FormUpdate = {
|
|
id: string;
|
|
nama: string;
|
|
harga: number;
|
|
alamatUsaha: string;
|
|
imageId: string;
|
|
rating: number;
|
|
kategoriId: string[]; // Array of KategoriProduk IDs
|
|
kontak: string;
|
|
deskripsi: string;
|
|
};
|
|
|
|
export default async function pasarDesaUpdate(context: Context) {
|
|
const body = context.body as FormUpdate;
|
|
|
|
if (!body.id) {
|
|
throw new Error("ID pasar desa tidak boleh kosong");
|
|
}
|
|
|
|
if (!body.kategoriId || body.kategoriId.length === 0) {
|
|
throw new Error("Minimal 1 kategori harus dipilih");
|
|
}
|
|
|
|
// 1. Update data utama pasar desa
|
|
await prisma.pasarDesa.update({
|
|
where: { id: body.id },
|
|
data: {
|
|
nama: body.nama,
|
|
harga: Number(body.harga),
|
|
alamatUsaha: body.alamatUsaha,
|
|
imageId: body.imageId,
|
|
rating: Number(body.rating),
|
|
kontak: body.kontak,
|
|
deskripsi: body.deskripsi
|
|
},
|
|
});
|
|
|
|
// 2. Hapus semua relasi kategori lama
|
|
await prisma.kategoriToPasar.deleteMany({
|
|
where: { pasarDesaId: body.id },
|
|
});
|
|
|
|
// 3. Tambah relasi kategori yang baru
|
|
await prisma.kategoriToPasar.createMany({
|
|
data: body.kategoriId.map((kategoriProdukId) => ({
|
|
pasarDesaId: body.id,
|
|
kategoriId: kategoriProdukId,
|
|
})),
|
|
});
|
|
|
|
// 4. Ambil data lengkap setelah update
|
|
const updated = await prisma.pasarDesa.findUnique({
|
|
where: { id: body.id },
|
|
include: {
|
|
image: true,
|
|
KategoriToPasar: {
|
|
include: {
|
|
kategori: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
return {
|
|
success: true,
|
|
message: "Success update pasar desa",
|
|
data: updated,
|
|
};
|
|
}
|