FODASSE QUE BORRAÇO
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
// 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<Server>; // 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<T> {
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user