website refactor

This commit is contained in:
2026-01-21 01:56:07 +01:00
parent 977dcc4e86
commit c06f93f1b6
22 changed files with 576 additions and 487 deletions

View File

@@ -18,72 +18,51 @@ export class LeagueStandingsService implements Service {
);
}
async getStandingsData(_: string): Promise<Result<{ standings: LeagueStandingsApiDto; memberships: LeagueMembershipsApiDto }, DomainError>> {
// 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,
},
],
};
async getStandingsData(leagueId: string): Promise<Result<{ standings: LeagueStandingsApiDto; memberships: LeagueMembershipsApiDto }, DomainError>> {
try {
const [standingsData, membershipsData] = await Promise.all([
this.apiClient.getStandings(leagueId),
this.apiClient.getMemberships(leagueId),
]);
const mockMemberships: LeagueMembershipsApiDto = {
members: [
{
driverId: 'driver1',
// Map LeagueStandingsDTO to LeagueStandingsApiDto
const standings: LeagueStandingsApiDto = {
standings: standingsData.standings.map(s => ({
driverId: s.driverId,
driver: {
id: 'driver1',
name: 'John Doe',
iracingId: '12345',
country: 'US',
joinedAt: new Date().toISOString(),
id: s.driver.id,
name: s.driver.name,
iracingId: s.driver.iracingId,
country: s.driver.country,
joinedAt: s.driver.joinedAt,
},
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(),
},
],
};
points: s.points,
position: s.position,
wins: s.wins,
podiums: s.podiums,
races: s.races,
})),
};
return Result.ok({ standings: mockStandings, memberships: mockMemberships });
// Map LeagueMembershipsDTO to LeagueMembershipsApiDto
const memberships: LeagueMembershipsApiDto = {
members: (membershipsData.members || []).map(m => ({
driverId: m.driverId,
driver: {
id: m.driver.id,
name: m.driver.name,
iracingId: m.driver.iracingId,
country: m.driver.country,
joinedAt: m.driver.joinedAt,
},
role: m.role as any,
joinedAt: m.joinedAt,
})),
};
return Result.ok({ standings, memberships });
} catch (error: unknown) {
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to fetch standings' });
}
}
}