import type { MetadataRoute } from "next";
import { loadAllGames } from "@/lib/catalog/server";
import { getSiteUrl } from "@/lib/site";

export const dynamic = "force-dynamic";

export default function sitemap(): MetadataRoute.Sitemap {
  const base = getSiteUrl();
  const staticRoutes = [
    "",
    "/about",
    "/privacy",
    "/terms",
    "/cookies",
    "/dmca",
    "/contact",
    "/contribute",
    "/load",
    "/account",
    "/leaderboards",
  ].map((path) => ({
    url: `${base}${path || "/"}`,
    lastModified: new Date(),
    changeFrequency: "weekly" as const,
    priority: path === "" ? 1 : 0.6,
  }));

  let gameRoutes: MetadataRoute.Sitemap = [];
  try {
    gameRoutes = loadAllGames(true).flatMap((g) => [
      {
        url: `${base}/games/${g.slug}`,
        lastModified: new Date(),
        changeFrequency: "weekly" as const,
        priority: 0.7,
      },
      {
        url: `${base}/play/${g.slug}`,
        lastModified: new Date(),
        changeFrequency: "weekly" as const,
        priority: 0.5,
      },
    ]);
  } catch {
    gameRoutes = [];
  }

  return [...staticRoutes, ...gameRoutes];
}
