89 lines
2.6 KiB
TypeScript
89 lines
2.6 KiB
TypeScript
import { Result } from '@/lib/contracts/Result';
|
|
import { Service } from '@/lib/contracts/services/Service';
|
|
import { LeagueStandingsApiDto, LeagueMembershipsApiDto } from '@/lib/types/tbd/LeagueStandingsApiDto';
|
|
import { LeaguesApiClient } from '@/lib/api/leagues/LeaguesApiClient';
|
|
import { ConsoleErrorReporter } from '@/lib/infrastructure/logging/ConsoleErrorReporter';
|
|
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
|
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
|
|
|
|
export class LeagueStandingsService implements Service {
|
|
private apiClient: LeaguesApiClient;
|
|
|
|
constructor() {
|
|
const baseUrl = getWebsiteApiBaseUrl();
|
|
this.apiClient = new LeaguesApiClient(
|
|
baseUrl,
|
|
new ConsoleErrorReporter(),
|
|
new ConsoleLogger()
|
|
);
|
|
}
|
|
|
|
async getStandingsData(leagueId: string): Promise<Result<{ standings: LeagueStandingsApiDto; memberships: LeagueMembershipsApiDto }, never>> {
|
|
// Mock data since backend may not be implemented
|
|
const mockStandings: LeagueStandingsApiDto = {
|
|
standings: [
|
|
{
|
|
driverId: 'driver1',
|
|
driver: {
|
|
id: 'driver1',
|
|
name: 'John Doe',
|
|
iracingId: '12345',
|
|
country: 'US',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
points: 100,
|
|
position: 1,
|
|
wins: 2,
|
|
podiums: 3,
|
|
races: 5,
|
|
},
|
|
{
|
|
driverId: 'driver2',
|
|
driver: {
|
|
id: 'driver2',
|
|
name: 'Jane Smith',
|
|
iracingId: '67890',
|
|
country: 'UK',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
points: 80,
|
|
position: 2,
|
|
wins: 1,
|
|
podiums: 2,
|
|
races: 5,
|
|
},
|
|
],
|
|
};
|
|
|
|
const mockMemberships: LeagueMembershipsApiDto = {
|
|
members: [
|
|
{
|
|
driverId: 'driver1',
|
|
driver: {
|
|
id: 'driver1',
|
|
name: 'John Doe',
|
|
iracingId: '12345',
|
|
country: 'US',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
role: 'member',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
{
|
|
driverId: 'driver2',
|
|
driver: {
|
|
id: 'driver2',
|
|
name: 'Jane Smith',
|
|
iracingId: '67890',
|
|
country: 'UK',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
role: 'member',
|
|
joinedAt: new Date().toISOString(),
|
|
},
|
|
],
|
|
};
|
|
|
|
return Result.ok({ standings: mockStandings, memberships: mockMemberships });
|
|
}
|
|
} |