// app/events/page.tsx // Events listing page import { query } from '@/lib/db'; import { Event } from '@/types/racing'; import Link from 'next/link'; import { TrophyIcon, UsersIcon, MapPinIcon, ClockIcon, CalendarIcon } from '@/components/ui/icons'; export const dynamic = "force-dynamic"; async function getEvents(): Promise { const sql = ` SELECT e.*, COUNT(er.registration_id) as registrations_count FROM events e LEFT JOIN event_registrations er ON e.event_id = er.event_id AND er.status = 'REGISTERED' WHERE e.event_status IN ('OPEN', 'CLOSED') GROUP BY e.event_id ORDER BY e.event_date ASC `; const rows = await query(sql); return rows as Event[]; } function formatDate(date: Date): string { return new Date(date).toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }); } export default async function EventsPage() { const events = await getEvents(); return ( <> {/* Hero */}
RACING EVENTS

EVENTS

Join competitive racing events, championships, and special races. Register now to secure your spot.

{/* Events List */}
{events.length === 0 ? (

NO UPCOMING EVENTS

Check back soon for new racing events

) : ( events.map((event: any) => { const isOpen = event.event_status === 'OPEN'; const isFull = event.registrations_count >= event.max_participants; const deadlinePassed = event.registration_deadline && new Date(event.registration_deadline) < new Date(); const canRegister = isOpen && !isFull && !deadlinePassed; return (
{event.event_name} {/* Event Header */}
{event.event_status}
ID: {event.event_id}

{event.event_name}

{event.event_description}

{event.event_track}
{event.registrations_count}/{event.max_participants} registered
{formatDate(event.event_date)}
{event.event_duration && (
{event.event_duration} minutes
)}
{/* Event Actions */}
{deadlinePassed && Registration deadline passed} {isFull && !deadlinePassed && Event is full} {!canRegister && !deadlinePassed && !isFull && event.event_status === 'CLOSED' && Registration closed}
{canRegister ? 'REGISTER NOW' : 'VIEW DETAILS'}
); }) )}
); }