49 lines
1.5 KiB
TypeScript

// app/api/events/[event_id]/results/route.ts
import { query } from '@/lib/db';
import { NextResponse, NextRequest } from 'next/server';
export const dynamic = 'force-dynamic';
export async function GET(
request: NextRequest,
context: { params: Promise<{ event_id: string }> }
) {
const { event_id } = await context.params;
try {
const standingsSql = `
SELECT
tcs.team_id,
t.name as team_name,
tcs.total_points,
tcs.races_participated,
tcs.best_finish,
json_agg(
json_build_object(
'driver_guid', u.driver_guid,
'driver_name', u.driver_name,
'position', er.position,
'points_awarded', er.points_awarded,
'laps_completed', er.laps_completed,
'dnf', er.dnf
) ORDER BY er.position ASC
) as drivers
FROM team_championship_standings tcs
JOIN teams t ON tcs.team_id = t.id
LEFT JOIN event_results er ON tcs.event_id = er.event_id AND tcs.team_id = er.team_id
LEFT JOIN users u ON er.driver_guid = u.driver_guid
WHERE tcs.event_id = $1
GROUP BY tcs.team_id, t.name, tcs.total_points, tcs.races_participated, tcs.best_finish
ORDER BY tcs.total_points DESC, tcs.best_finish ASC
`;
const standings = await query(standingsSql, [event_id]);
return NextResponse.json({ standings });
} catch (error) {
console.error('[Event Results API] Error:', error);
return NextResponse.json({ error: 'Failed to fetch results' }, { status: 500 });
}
}