import type { Metadata } from 'next';
import RacePageClient from '@/components/pages/RacePageClient';
import { getMod, getRace, getRaceUnits, getRaceBuildings } from '@/lib/api-server';

export const dynamic = 'force-dynamic';

interface Props {
    params: { modId: string; raceId: string };
}

export async function generateMetadata({ params }: Props): Promise<Metadata> {
    const [mod, race] = await Promise.all([getMod(params.modId), getRace(params.raceId)]);
    if (!mod || !race) {
        return { title: 'Race' };
    }
    const title = `${race.name} — ${mod.name}`;
    const description = `${race.name} race in ${mod.name} mod. Units, buildings and stats.`;
    return {
        title,
        description,
        alternates: {
            canonical: `/mod/${params.modId}/race/${params.raceId}`,
        },
        openGraph: {
            title,
            description,
        },
    };
}

export default async function RacePage({ params }: Props) {
    const [mod, race, raceUnits, raceBuildings] = await Promise.all([
        getMod(params.modId),
        getRace(params.raceId),
        getRaceUnits(params.modId, params.raceId),
        getRaceBuildings(params.modId, params.raceId),
    ]);
    return (
        <RacePageClient
            initialMod={mod}
            initialRace={race}
            raceUnits={raceUnits}
            raceBuildings={raceBuildings}
        />
    );
}