import type { MetadataRoute } from "next";

interface SitemapRoute {
  url: string;
  lastModified: string;
  changeFrequency?:
    | "always"
    | "hourly"
    | "daily"
    | "weekly"
    | "monthly"
    | "yearly"
    | "never";
  priority?: number;
}

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = "https://dki.one";

  // Fetch the sitemap data from the dynamic API routes
  const response = await fetch(`${baseUrl}/api/sitemap`);
  if (!response.ok) {
    throw new Error(`Failed to fetch sitemap: ${response.statusText}`);
  }
  const sitemapData = (await response.json()) as SitemapRoute[];

  return sitemapData.map((route) => {
    let changeFrequency: SitemapRoute["changeFrequency"];
    let priority: number;

    if (route.url === `${baseUrl}/`) {
      changeFrequency = "weekly";
      priority = 1.0;
    } else if (route.url.startsWith(`${baseUrl}/projects`)) {
      changeFrequency = "monthly";
      priority = 0.8;
    } else if (route.url.startsWith(`${baseUrl}/Blog`)) {
      changeFrequency = "weekly";
      priority = 0.6;
    } else {
      changeFrequency = "monthly";
      priority = 0.5;
    }

    return {
      url: route.url,
      lastModified: route.lastModified,
      changeFrequency,
      priority,
    };
  });
}
