52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { BaseApiClient } from '../base/BaseApiClient';
|
|
import type {
|
|
AllLeaguesWithCapacityDto,
|
|
LeagueStatsDto,
|
|
LeagueStandingsDto,
|
|
LeagueScheduleDto,
|
|
LeagueMembershipsDto,
|
|
CreateLeagueInputDto,
|
|
CreateLeagueOutputDto,
|
|
} from '../../dtos';
|
|
|
|
/**
|
|
* Leagues API Client
|
|
*
|
|
* Handles all league-related API operations.
|
|
*/
|
|
export class LeaguesApiClient extends BaseApiClient {
|
|
/** Get all leagues with capacity information */
|
|
getAllWithCapacity(): Promise<AllLeaguesWithCapacityDto> {
|
|
return this.get<AllLeaguesWithCapacityDto>('/leagues/all-with-capacity');
|
|
}
|
|
|
|
/** Get total number of leagues */
|
|
getTotal(): Promise<LeagueStatsDto> {
|
|
return this.get<LeagueStatsDto>('/leagues/total-leagues');
|
|
}
|
|
|
|
/** Get league standings */
|
|
getStandings(leagueId: string): Promise<LeagueStandingsDto> {
|
|
return this.get<LeagueStandingsDto>(`/leagues/${leagueId}/standings`);
|
|
}
|
|
|
|
/** Get league schedule */
|
|
getSchedule(leagueId: string): Promise<LeagueScheduleDto> {
|
|
return this.get<LeagueScheduleDto>(`/leagues/${leagueId}/schedule`);
|
|
}
|
|
|
|
/** Get league memberships */
|
|
getMemberships(leagueId: string): Promise<LeagueMembershipsDto> {
|
|
return this.get<LeagueMembershipsDto>(`/leagues/${leagueId}/memberships`);
|
|
}
|
|
|
|
/** Create a new league */
|
|
create(input: CreateLeagueInputDto): Promise<CreateLeagueOutputDto> {
|
|
return this.post<CreateLeagueOutputDto>('/leagues', input);
|
|
}
|
|
|
|
/** Remove a member from league */
|
|
removeMember(leagueId: string, performerDriverId: string, targetDriverId: string): Promise<{ success: boolean }> {
|
|
return this.patch<{ success: boolean }>(`/leagues/${leagueId}/members/${targetDriverId}/remove`, { performerDriverId });
|
|
}
|
|
} |