import type { MetadataRoute } from "next"; import { prisma } from "@/lib/prisma"; import { CarbetStatus } from "@/generated/prisma/enums"; const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || "http://localhost:3000"; function abs(path: string): string { return `${siteUrl.replace(/\/+$/, "")}${path}`; } export default async function sitemap(): Promise { const staticRoutes: MetadataRoute.Sitemap = [ { url: abs("/"), changeFrequency: "weekly", priority: 1 }, { url: abs("/carbets"), changeFrequency: "daily", priority: 0.9 }, { url: abs("/cgv"), changeFrequency: "yearly", priority: 0.2 }, { url: abs("/mentions-legales"), changeFrequency: "yearly", priority: 0.2 }, { url: abs("/politique-de-confidentialite"), changeFrequency: "yearly", priority: 0.2, }, ]; const carbets = await prisma.carbet.findMany({ where: { status: CarbetStatus.PUBLISHED }, select: { slug: true, updatedAt: true }, }); const carbetRoutes: MetadataRoute.Sitemap = carbets.map((carbet) => ({ url: abs(`/carbets/${carbet.slug}`), lastModified: carbet.updatedAt, changeFrequency: "weekly", priority: 0.7, })); return [...staticRoutes, ...carbetRoutes]; }