/**
 * Dynamic Sitemap Generation
 * Generates sitemap with all school pages and main routes
 */

import { MetadataRoute } from 'next';
import { fetchSchools } from '@/lib/api';

const BASE_URL = 'https://schoolcompare.co.uk';

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  // Static pages
  const staticPages: MetadataRoute.Sitemap = [
    {
      url: BASE_URL,
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1.0,
    },
    {
      url: `${BASE_URL}/compare`,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.8,
    },
    {
      url: `${BASE_URL}/rankings`,
      lastModified: new Date(),
      changeFrequency: 'weekly',
      priority: 0.8,
    },
  ];

  // Fetch all schools (in batches if necessary)
  try {
    const schoolsData = await fetchSchools({
      page: 1,
      page_size: 10000, // Fetch all schools
    });

    const schoolPages: MetadataRoute.Sitemap = schoolsData.schools.map((school) => ({
      url: `${BASE_URL}/school/${school.urn}`,
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 0.6,
    }));

    return [...staticPages, ...schoolPages];
  } catch (error) {
    console.error('Failed to generate sitemap:', error);
    // Return just static pages if school fetch fails
    return staticPages;
  }
}
