interface UpcomingRaceCardDTO {
  id: string;
  track: string;
  car: string;
  scheduledAt: string;
}

/**
 * Upcoming race card view model
 * UI representation of an upcoming race on the landing page.
 */
export class UpcomingRaceCardViewModel {
  readonly id: string;
  readonly track: string;
  readonly car: string;
  readonly scheduledAt: string;

  constructor(dto: UpcomingRaceCardDTO) {
    this.id = dto.id;
    this.track = dto.track;
    this.car = dto.car;
    this.scheduledAt = dto.scheduledAt;
  }

  /** UI-specific: formatted date label */
  get formattedDate(): string {
    return new Date(this.scheduledAt).toLocaleDateString(undefined, {
      month: 'short',
      day: 'numeric',
    });
  }
}
