import { MetadataRoute } from 'next'
import { createClient } from '@supabase/supabase-js'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = 'https://proximap.space'
  
  const staticPages: MetadataRoute.Sitemap = [
    {
      url: baseUrl,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 1.0,
    },
    {
      url: `${baseUrl}/about`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.8,
    },
    {
      url: `${baseUrl}/pricing`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.8,
    },
    {
      url: `${baseUrl}/download`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.7,
    },
    {
      url: `${baseUrl}/gallery`,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.8,
    },
    {
      url: `${baseUrl}/viewer`,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.8,
    },
    {
      url: `${baseUrl}/contact`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.7,
    },
    {
      url: `${baseUrl}/agency-signup`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.6,
    },
    {
      url: `${baseUrl}/terms`,
      lastModified: new Date(),
      changeFrequency: 'yearly',
      priority: 0.5,
    },
    {
      url: `${baseUrl}/privacy`,
      lastModified: new Date(),
      changeFrequency: 'yearly',
      priority: 0.5,
    },
    {
      url: `${baseUrl}/privacy/proximar`,
      lastModified: new Date(),
      changeFrequency: 'yearly',
      priority: 0.5,
    },
    {
      url: `${baseUrl}/auth/login`,
      lastModified: new Date(),
      changeFrequency: 'yearly',
      priority: 0.4,
    },
    {
      url: `${baseUrl}/news`,
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 0.9,
    },
  ]

  let dynamicPages: MetadataRoute.Sitemap = []
  
  try {
    const supabase = createClient(
      process.env.NEXT_PUBLIC_SUPABASE_URL!,
      process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
    )
    
    // Fetch reconstructions
    const { data: reconstructions } = await supabase
      .from('reconstructions')
      .select('id, created_at')
      
    if (reconstructions) {
      const recPages: MetadataRoute.Sitemap = reconstructions.map((item: any) => ({
        url: `${baseUrl}/gallery/${item.id}`,
        lastModified: item.created_at ? new Date(item.created_at) : new Date(),
        changeFrequency: 'weekly',
        priority: 0.6,
      }))
      dynamicPages.push(...recPages)
    }

    // Fetch published news articles
    const { data: newsArticles } = await supabase
      .from('news_articles')
      .select('id, published_at, updated_at')
      .eq('is_published', true)

    if (newsArticles) {
      const newsPages: MetadataRoute.Sitemap = newsArticles.map((item: any) => ({
        url: `${baseUrl}/news/${item.id}`,
        lastModified: item.updated_at ? new Date(item.updated_at) : item.published_at ? new Date(item.published_at) : new Date(),
        changeFrequency: 'weekly',
        priority: 0.8,
      }))
      dynamicPages.push(...newsPages)
    }
  } catch (error) {
    console.error('Failed to generate dynamic sitemap routes:', error)
  }

  return [...staticPages, ...dynamicPages]
}

