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
};

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),
    },
  });

  // 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,
  };
}
