import db from "@/lib/db";
import { NextRequest, NextResponse } from "next/server";
import { getLogger } from "@/utils/logger";


export const dynamic = "force-dynamic";


const logger = getLogger('/api/specialProducts')

export const GET = async (request: NextRequest) => {
    try {

        const mostSoldVariants = await db.orderItems.groupBy({
            by: ['variant_id'],
            _sum: {
                quantity: true
            },
            orderBy: {
                _sum: {
                    quantity: 'desc'
                }
            },
            take: 12
        })

        const variantIds = mostSoldVariants.map(item => item.variant_id)

        const variants = await db.productVariant.findMany({
            where: {
                id: {
                    in: variantIds,
                },
                quantity: {gt: 0}
            },
            include: {
                variant_images: true,
            }
        })

        const latestProducts = await db.productVariant.findMany({
            where: {
                quantity: {gt: 0}
            },
            orderBy: {
                created_on: 'desc'
            },
            take: 12,
            include: {
                variant_images: true
            }
        });

        return NextResponse.json({ variants, latestProducts }, { status: 200 });

    }
    catch (error: any) {
        logger.error("Failed to fetch specialProducts in HomePage", {
            error: error?.config?.data ?? error?.message ?? "Unknown error"
        })
        return new Response("Internal Server Error", { status: 500 });
    }

}

