import { MetadataRoute } from 'next'
import { createServiceRoleClient } from "@/utils/auth";

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://iioote.netlify.app';
  
  // Static pages
  const staticPages = [
    {
      url: baseUrl,
      lastModified: new Date(),
      changeFrequency: 'daily' as const,
      priority: 1,
    },
    {
      url: `${baseUrl}/about`,
      lastModified: new Date(),
      changeFrequency: 'monthly' as const,
      priority: 0.8,
    },
    {
      url: `${baseUrl}/contact`,
      lastModified: new Date(),
      changeFrequency: 'monthly' as const,
      priority: 0.7,
    },
    {
      url: `${baseUrl}/pricing`,
      lastModified: new Date(),
      changeFrequency: 'monthly' as const,
      priority: 0.8,
    },
    {
      url: `${baseUrl}/iot-solutions`,
      lastModified: new Date(),
      changeFrequency: 'weekly' as const,
      priority: 0.9,
    },
    {
      url: `${baseUrl}/news`,
      lastModified: new Date(),
      changeFrequency: 'daily' as const,
      priority: 0.9,
    },
  ];

  // Dynamic pages - fetch all published articles
  let articlePages: MetadataRoute.Sitemap = [];
  
  try {
    const supabase = createServiceRoleClient();
    
    if (supabase) {
      const { data: articles, error } = await supabase
        .from('articles')
        .select('slug, published_at, updated_at')
        .eq('published', true)
        .order('published_at', { ascending: false });
      
      if (!error && articles) {
        articlePages = articles.map((article) => ({
          url: `${baseUrl}/news/${article.slug}`,
          lastModified: new Date(article.updated_at || article.published_at || new Date()),
          changeFrequency: 'weekly' as const,
          priority: 0.6,
        }));
      }
    }
  } catch (error) {
    console.error('Error fetching articles for sitemap:', error);
  }

  return [...staticPages, ...articlePages];
}
