// types/racing.ts // These match your PostgreSQL schema exactly export type FlagType = 'NONE' | 'YELLOW' | 'BLUE' | 'BLACK' | 'CHECKERED'; export interface Server { server_id: number; session_type: number; session_flag: FlagType; session_count: number; server_name: string; server_track: string; server_config: string; server_weather_graphics: string | null; typ: number | null; session_time: number; session_laps: number; session_wait_time: number; session_ambient_temp: number; session_road_temp: number; session_elapsed_time: number; connected_players: number; created_at: Date; updated_at: Date; } export interface Driver { driver_guid: number; driver_name: string; driver_team: string | null; car_model: string | null; car_skin: string | null; cuts_alltime: number; contacts_alltime: number; laps_completed: number; user_rank: number; is_connect: boolean; is_loading: boolean; current_server: number | null; created_at: Date; } // Helpful joined type for displaying drivers with their server info export interface DriverWithServer extends Driver { server?: Partial; // Make it partial since we don't always need all fields } // For live tracking (you mentioned getting positions from parser) export interface LivePosition { driver_guid: number; driver_name: string; position: number; lap: number; last_lap_time?: number; best_lap_time?: number; car_model: string; // Add whatever else your parser sends } // API Response wrappers export interface ApiResponse { success: boolean; data?: T; error?: string; } export interface DashboardStats { total_drivers_online: number; active_servers: number; total_laps_today: number; fastest_lap_today?: { driver_name: string; lap_time: number; track: string; }; } // Events types export interface Event { event_id: number; event_name: string; event_description: string | null; event_track: string; event_date: Date; event_duration: number | null; max_participants: number; registration_deadline: Date | null; event_status: 'OPEN' | 'CLOSED' | 'COMPLETED' | 'CANCELLED'; event_banner_url: string | null; event_rules: string | null; created_at: Date; updated_at: Date; } export interface EventRegistration { registration_id: number; event_id: number; driver_guid: number; // Changed from string to number (BIGINT) car_model: string; car_skin: string | null; team_name: string | null; registration_date: Date; status: 'REGISTERED' | 'CONFIRMED' | 'CANCELLED'; notes: string | null; } export interface EventWithRegistrations extends Event { registrations_count: number; user_registered?: boolean; }