import { createClient } from "@supabase/supabase-js"; export default { async fetch(request, env) { const supabaseUrl = env.SUPABASE_URL; const supabaseKey = env.SUPABASE_KEY; const supabase = createClient(supabaseUrl, supabaseKey); try { const { data, error } = await supabase .from("optimized_sitemap") .select("url, lastmod, changefreq, priority"); if (error) { console.error("Error fetching sitemap data:", error); return new Response("Error fetching sitemap data", { status: 500 }); } const sitemapXml = generateSitemapXml(data); return new Response(sitemapXml, { headers: { "Content-Type": "application/xml", "Access-Control-Allow-Origin": "*", }, }); } catch (error) { console.error("Unexpected error:", error); return new Response("Internal Server Error", { status: 500 }); } }, }; function generateSitemapXml(data) { const urls = data .map( ({ url, lastmod, changefreq, priority }) => ` <url> <loc>${url}</loc> ${lastmod ? `<lastmod>${new Date(lastmod).toISOString()}</lastmod>` : ""} <changefreq>${changefreq}</changefreq> <priority>${priority}</priority> </url> ` ) .join(""); return `<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> ${urls} </urlset>`; }