/**
 * 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;
}
