import { platforms } from "@/lib/config/platform";
import { getGames } from "@/lib/igdb";
import { EGameCategory, EGameGenres, EGamePlatform } from "@/types/constants";
import { IPlatformCategrory } from "@/types/igdb-types";

import { NextRequest, NextResponse } from "next/server";

export async function GET(req: NextRequest) {
    const p = req.nextUrl.searchParams;
    try {
        const page = parseInt(p.get('page') as string)

        const search = p.get('search')
        const category = p.get('category')
        const genre = p.get('genre')
        const platform = p.get('platform')
        const sortby = p.get('sortby')
        const order = p.get('order')

        let filteredPlatforms: EGamePlatform[] | undefined;

        if (platform) {
            const selectedCategory = platforms.find(
                (platformCategory: IPlatformCategrory) =>
                    platformCategory.category === platform
            );
            filteredPlatforms = selectedCategory
                ? selectedCategory.platforms
                : undefined;
        }

        const games = await getGames(page,
            search ? search : '',
            category ? EGameCategory[category as keyof typeof EGameCategory] : undefined,
            genre ? EGameGenres[genre as keyof typeof EGameGenres] : undefined,
            filteredPlatforms,
            sortby ? sortby : '',
            order ? order : ''
        );
        return NextResponse.json(games);
    } catch (error) {
        return NextResponse.json(error, { status: 500 });
    }
}