website refactor
This commit is contained in:
@@ -56,25 +56,82 @@ export class LeagueService implements Service {
|
||||
private sponsorsApiClient?: SponsorsApiClient;
|
||||
private racesApiClient?: RacesApiClient;
|
||||
|
||||
constructor() {
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
showUserNotifications: false,
|
||||
logToConsole: true,
|
||||
reportToExternal: isProductionEnvironment(),
|
||||
});
|
||||
this.apiClient = new LeaguesApiClient(baseUrl, errorReporter, logger);
|
||||
constructor(apiClient?: LeaguesApiClient) {
|
||||
if (apiClient) {
|
||||
this.apiClient = apiClient;
|
||||
} else {
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
showUserNotifications: false,
|
||||
logToConsole: true,
|
||||
reportToExternal: isProductionEnvironment(),
|
||||
});
|
||||
this.apiClient = new LeaguesApiClient(baseUrl, errorReporter, logger);
|
||||
}
|
||||
// Optional clients can be initialized if needed
|
||||
}
|
||||
|
||||
async getAllLeagues(): Promise<Result<AllLeaguesWithCapacityAndScoringDTO, DomainError>> {
|
||||
async getLeagueStandings(leagueId: string): Promise<any> {
|
||||
try {
|
||||
const data = await this.apiClient.getStandings(leagueId);
|
||||
return (data as any).value || data;
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueStats(): Promise<any> {
|
||||
try {
|
||||
const data = await this.apiClient.getTotal();
|
||||
return (data as any).value || data;
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueSchedule(leagueId: string): Promise<any> {
|
||||
try {
|
||||
const data = await this.apiClient.getSchedule(leagueId);
|
||||
return (data as any).value || data;
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueMemberships(leagueId: string): Promise<any> {
|
||||
try {
|
||||
const data = await this.apiClient.getMemberships(leagueId);
|
||||
return (data as any).value || data;
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async createLeague(input: CreateLeagueInputDTO): Promise<any> {
|
||||
try {
|
||||
const data = await this.apiClient.create(input);
|
||||
return (data as any).value || data;
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async removeMember(leagueId: string, targetDriverId: string): Promise<any> {
|
||||
try {
|
||||
const dto = await this.apiClient.removeRosterMember(leagueId, targetDriverId);
|
||||
return { success: dto.success };
|
||||
} catch (error: unknown) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async getAllLeagues(): Promise<any> {
|
||||
try {
|
||||
const dto = await this.apiClient.getAllWithCapacityAndScoring();
|
||||
return Result.ok(dto);
|
||||
return (dto as any).value || dto;
|
||||
} catch (error: unknown) {
|
||||
console.error('LeagueService.getAllLeagues failed:', error);
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to fetch leagues' });
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,28 +199,6 @@ export class LeagueService implements Service {
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueStandings(): Promise<Result<never, DomainError>> {
|
||||
return Result.err({ type: 'notImplemented', message: 'League standings endpoint not implemented' });
|
||||
}
|
||||
|
||||
async getLeagueStats(): Promise<Result<TotalLeaguesDTO, DomainError>> {
|
||||
try {
|
||||
const data = await this.apiClient.getTotal();
|
||||
return Result.ok(data);
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to fetch league stats' });
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueSchedule(leagueId: string): Promise<Result<LeagueScheduleDTO, DomainError>> {
|
||||
try {
|
||||
const data = await this.apiClient.getSchedule(leagueId);
|
||||
return Result.ok(data);
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to fetch league schedule' });
|
||||
}
|
||||
}
|
||||
|
||||
async getLeagueSeasons(leagueId: string): Promise<Result<LeagueSeasonSummaryDTO[], DomainError>> {
|
||||
try {
|
||||
const data = await this.apiClient.getSeasons(leagueId);
|
||||
@@ -289,33 +324,6 @@ export class LeagueService implements Service {
|
||||
return this.deleteAdminScheduleRace(leagueId, seasonId, raceId);
|
||||
}
|
||||
|
||||
async getLeagueMemberships(leagueId: string): Promise<Result<LeagueMembershipsDTO, DomainError>> {
|
||||
try {
|
||||
const data = await this.apiClient.getMemberships(leagueId);
|
||||
return Result.ok(data);
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to fetch memberships' });
|
||||
}
|
||||
}
|
||||
|
||||
async createLeague(input: CreateLeagueInputDTO): Promise<Result<CreateLeagueOutputDTO, DomainError>> {
|
||||
try {
|
||||
const data = await this.apiClient.create(input);
|
||||
return Result.ok(data);
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to create league' });
|
||||
}
|
||||
}
|
||||
|
||||
async removeMember(leagueId: string, targetDriverId: string): Promise<Result<{ success: boolean }, DomainError>> {
|
||||
try {
|
||||
const dto = await this.apiClient.removeRosterMember(leagueId, targetDriverId);
|
||||
return Result.ok({ success: dto.success });
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to remove member' });
|
||||
}
|
||||
}
|
||||
|
||||
async updateMemberRole(leagueId: string, targetDriverId: string, newRole: MembershipRole): Promise<Result<{ success: boolean }, DomainError>> {
|
||||
try {
|
||||
const dto = await this.apiClient.updateRosterMemberRole(leagueId, targetDriverId, newRole);
|
||||
|
||||
Reference in New Issue
Block a user