78 lines
1.2 KiB
TypeScript
78 lines
1.2 KiB
TypeScript
/**
|
|
* Driver Rankings Query Port
|
|
*
|
|
* Defines the interface for querying driver rankings data.
|
|
* This is a read-only query with search, filter, and sort capabilities.
|
|
*/
|
|
|
|
/**
|
|
* Query input for driver rankings
|
|
*/
|
|
export interface DriverRankingsQuery {
|
|
/**
|
|
* Search term for filtering drivers by name (case-insensitive)
|
|
*/
|
|
search?: string;
|
|
|
|
/**
|
|
* Minimum rating filter
|
|
*/
|
|
minRating?: number;
|
|
|
|
/**
|
|
* Filter by team ID
|
|
*/
|
|
teamId?: string;
|
|
|
|
/**
|
|
* Sort field (default: rating)
|
|
*/
|
|
sortBy?: 'rating' | 'name' | 'rank' | 'raceCount';
|
|
|
|
/**
|
|
* Sort order (default: desc)
|
|
*/
|
|
sortOrder?: 'asc' | 'desc';
|
|
|
|
/**
|
|
* Page number (default: 1)
|
|
*/
|
|
page?: number;
|
|
|
|
/**
|
|
* Number of results per page (default: 20)
|
|
*/
|
|
limit?: number;
|
|
}
|
|
|
|
/**
|
|
* Driver entry for rankings
|
|
*/
|
|
export interface DriverRankingEntry {
|
|
rank: number;
|
|
id: string;
|
|
name: string;
|
|
rating: number;
|
|
teamId?: string;
|
|
teamName?: string;
|
|
raceCount: number;
|
|
}
|
|
|
|
/**
|
|
* Pagination metadata
|
|
*/
|
|
export interface PaginationMetadata {
|
|
total: number;
|
|
page: number;
|
|
limit: number;
|
|
totalPages: number;
|
|
}
|
|
|
|
/**
|
|
* Driver rankings result
|
|
*/
|
|
export interface DriverRankingsResult {
|
|
drivers: DriverRankingEntry[];
|
|
pagination: PaginationMetadata;
|
|
}
|