import type { MetadataRoute } from "next";
import { STORE_URL } from "@/lib/store-info";
import { supabase } from "@/lib/supabase";

export const dynamic = "force-dynamic";

const publicPages: MetadataRoute.Sitemap = [
  { url: STORE_URL, changeFrequency: "weekly", priority: 1 },
  { url: `${STORE_URL}/boutique`, changeFrequency: "daily", priority: 0.9 },
  { url: `${STORE_URL}/collections`, changeFrequency: "weekly", priority: 0.8 },
  { url: `${STORE_URL}/blog`, changeFrequency: "weekly", priority: 0.8 },
  { url: `${STORE_URL}/a-propos`, changeFrequency: "monthly", priority: 0.7 },
  { url: `${STORE_URL}/contact`, changeFrequency: "monthly", priority: 0.7 },
  { url: `${STORE_URL}/faq`, changeFrequency: "monthly", priority: 0.6 },
  { url: `${STORE_URL}/guide-tailles`, changeFrequency: "monthly", priority: 0.6 },
  { url: `${STORE_URL}/ecart-pupillaire`, changeFrequency: "monthly", priority: 0.6 },
  { url: `${STORE_URL}/cgv`, changeFrequency: "yearly", priority: 0.3 },
  { url: `${STORE_URL}/mentions-legales`, changeFrequency: "yearly", priority: 0.3 },
  { url: `${STORE_URL}/politique-retour`, changeFrequency: "yearly", priority: 0.3 },
  {
    url: `${STORE_URL}/politique-confidentialite`,
    changeFrequency: "yearly",
    priority: 0.2,
  },
  { url: `${STORE_URL}/cookies`, changeFrequency: "yearly", priority: 0.2 },
];

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const [{ data: products }, { data: collections }, { data: posts }] = await Promise.all([
    supabase
      .from("products")
      .select("slug, updated_at")
      .eq("is_active", true),
    supabase
      .from("collections")
      .select("slug")
      .eq("is_active", true),
    supabase
      .from("blog_posts")
      .select("slug, updated_at")
      .eq("is_published", true)
      .lte("published_at", new Date().toISOString()),
  ]);

  const productPages: MetadataRoute.Sitemap = (products || []).map(
    ({ slug, updated_at }) => ({
      url: `${STORE_URL}/produit/${slug}`,
      lastModified: updated_at,
      changeFrequency: "weekly",
      priority: 0.8,
    })
  );

  const collectionPages: MetadataRoute.Sitemap = (collections || []).map(
    ({ slug }) => ({
      url: `${STORE_URL}/collections/${slug}`,
      changeFrequency: "weekly",
      priority: 0.7,
    })
  );

  const blogPages: MetadataRoute.Sitemap = (posts || []).map(
    ({ slug, updated_at }) => ({
      url: `${STORE_URL}/blog/${slug}`,
      lastModified: updated_at,
      changeFrequency: "monthly",
      priority: 0.7,
    })
  );

  return [...publicPages, ...collectionPages, ...productPages, ...blogPages];
}
