import type { Metadata } from "next";
import { db } from "@/lib/db";
import AdminProductsClient from "./AdminProductsClient";

export const metadata: Metadata = { title: "Admin: E Commerce" };

export default async function AdminProductsPage() {
  const [products, categories, slides, orders, customers] = await Promise.all([
    db.product.findMany({
      include: { category: true, images: { orderBy: { sortOrder: "asc" } }, _count: { select: { variations: true } } },
      orderBy: { createdAt: "desc" },
    }),
    db.productCategory.findMany({ orderBy: { name: "asc" } }),
    db.shopSlide.findMany({ orderBy: { sortOrder: "asc" } }),
    db.order.findMany({
      include: {
        user: { select: { name: true, email: true } },
        items: { include: { product: { select: { name: true } } } },
      },
      orderBy: { createdAt: "desc" },
      take: 200,
    }),
    db.user.findMany({
      where: {
        orders: {
          some: {},
        },
      },
      include: {
        orders: {
          select: {
            id: true,
            total: true,
            status: true,
            createdAt: true,
          },
          orderBy: { createdAt: "desc" },
        },
        _count: {
          select: {
            orders: true,
          },
        },
      },
      orderBy: { createdAt: "desc" },
    }),
  ]);

  return <AdminProductsClient products={products as never} categories={categories} slides={slides} orders={orders as never} customers={customers as never} />;
}
