import type { MetadataRoute } from "next"; import { API_URL } from "@/config/constants"; import { getAvailablePlaceConfigs } from "@/app/facilityData"; import { buildAbsoluteUrl } from "@/app/seo"; type SitemapFacility = { slug?: string; status_updated_at?: string | null; vtg_updated_at?: string | null; }; const staticRoutes: MetadataRoute.Sitemap = [ { url: buildAbsoluteUrl("/"), lastModified: new Date(), changeFrequency: "daily", priority: 1, }, { url: buildAbsoluteUrl("/golfbaner"), lastModified: new Date(), changeFrequency: "daily", priority: 0.95, }, { url: buildAbsoluteUrl("/medlemskap"), lastModified: new Date(), changeFrequency: "daily", priority: 0.8, }, { url: buildAbsoluteUrl("/vtg"), lastModified: new Date(), changeFrequency: "daily", priority: 0.8, }, ]; export default async function sitemap(): Promise { let facilities: SitemapFacility[] = []; try { const res = await fetch(`${API_URL}/facilities`, { cache: "no-store" }); if (res.ok) { const data = await res.json(); facilities = Array.isArray(data) ? data : []; } } catch { facilities = []; } const placeRoutes = getAvailablePlaceConfigs().map((slug) => ({ url: buildAbsoluteUrl(`/sted/${slug}`), lastModified: new Date(), changeFrequency: "daily" as const, priority: slug === "norge" ? 0.9 : 0.75, })); const facilityRoutes = facilities .filter((facility) => Boolean(facility.slug)) .map((facility) => ({ url: buildAbsoluteUrl(`/golfbaner/${facility.slug}`), lastModified: facility.status_updated_at || facility.vtg_updated_at || new Date(), changeFrequency: "daily" as const, priority: 0.7, })); return [...staticRoutes, ...placeRoutes, ...facilityRoutes]; }