/**
 * Rankings Page (SSR)
 * Display top-ranked schools by various metrics
 */

import { fetchRankings, fetchFilters, fetchMetrics } from '@/lib/api';
import { RankingsView } from '@/components/RankingsView';
import type { Metadata } from 'next';

interface RankingsPageProps {
  searchParams: Promise<{
    metric?: string;
    local_authority?: string;
    year?: string;
  }>;
}

export const metadata: Metadata = {
  title: 'School Rankings',
  description: 'Top-ranked primary schools by KS2 performance across England',
  keywords: 'school rankings, top schools, best schools, KS2 rankings, school league tables',
};

// Force dynamic rendering
export const dynamic = 'force-dynamic';

export default async function RankingsPage({ searchParams }: RankingsPageProps) {
  const { metric: metricParam, local_authority, year: yearParam } = await searchParams;

  const metric = metricParam || 'rwm_expected_pct';
  const year = yearParam ? parseInt(yearParam) : undefined;

  // Fetch rankings data with error handling
  try {
    const [rankingsResponse, filtersResponse, metricsResponse] = await Promise.all([
      fetchRankings({
        metric,
        local_authority,
        year,
        limit: 100,
      }),
      fetchFilters(),
      fetchMetrics(),
    ]);

    // Metrics is already an array
    const metricsArray = metricsResponse?.metrics || [];

    return (
      <RankingsView
        rankings={rankingsResponse?.rankings || []}
        filters={filtersResponse || { local_authorities: [], school_types: [], years: [] }}
        metrics={metricsArray}
        selectedMetric={metric}
        selectedArea={local_authority}
        selectedYear={year}
      />
    );
  } catch (error) {
    console.error('Error fetching data for rankings page:', error);

    // Return error state with empty data
    return (
      <RankingsView
        rankings={[]}
        filters={{ local_authorities: [], school_types: [], years: [] }}
        metrics={[]}
        selectedMetric={metric}
        selectedArea={local_authority}
        selectedYear={year}
      />
    );
  }
}
