import prismadb from "@/lib/prisma";

import { dateFormatter, formatter } from '@/lib/utils';
import { ProductClient } from "./components/client";
import { ProductColumn } from "./components/columns";

const ProductsPage = async ({
  params
}: {
  params: { storeId: string }
}) => {
  const products = await prismadb.product.findMany({
    where: {
      storeId: params.storeId
    },
    include: {
      category: true,
      featureValueToProduct: {
        include: {
          featureValue: {
            include: {
              feature: true
            }
          }
        }
      }
    },
    orderBy: {
      createdAt: 'desc'
    }
  });

  const formattedProducts: ProductColumn[] = products.map((item) => ({
    id: item.id,
    name: item.name,
    isFeatured: item.isFeatured,
    isArchived: item.isArchived,
    price: formatter.format(item.price.toNumber()),
    stock: item.stock,
    showOutOfStock: item.showOutOfStock,
    category: item.category.name,
    featureValue: item.featureValueToProduct.map((fv) => ({
      featureValueId: fv.featureValue.id,
      featureValue: fv.featureValue.value
    })),
    createdAt: dateFormatter.format(item.createdAt)
  }));

  return (
    <div className="flex-col">
      <div className="flex-1 space-y-4 p-8 pt-6">
        <ProductClient data={formattedProducts} />
      </div>
    </div>
  );
}

export default ProductsPage;