harden media

This commit is contained in:
2025-12-31 15:39:28 +01:00
parent 92226800df
commit 8260bf7baf
413 changed files with 8361 additions and 1544 deletions

View File

@@ -7,6 +7,7 @@ import type { IDriverRepository } from '../../domain/repositories/IDriverReposit
import type { IDriverStatsUseCase } from './IDriverStatsUseCase';
import type { IRankingUseCase } from './IRankingUseCase';
import { SkillLevelService, type SkillLevel } from '../../domain/services/SkillLevelService';
import { MediaReference } from '@core/domain/media/MediaReference';
export type GetDriversLeaderboardInput = {
leagueId?: string;
@@ -23,7 +24,7 @@ export interface DriverLeaderboardItem {
podiums: number;
isActive: boolean;
rank: number;
avatarUrl?: string;
avatarRef?: MediaReference;
}
export interface GetDriversLeaderboardResult {
@@ -47,7 +48,6 @@ export class GetDriversLeaderboardUseCase implements UseCase<GetDriversLeaderboa
private readonly driverRepository: IDriverRepository,
private readonly rankingUseCase: IRankingUseCase,
private readonly driverStatsUseCase: IDriverStatsUseCase,
private readonly getDriverAvatar: (driverId: string) => Promise<string | undefined>,
private readonly logger: Logger,
private readonly output: UseCaseOutputPort<GetDriversLeaderboardResult>,
) {}
@@ -66,12 +66,6 @@ export class GetDriversLeaderboardUseCase implements UseCase<GetDriversLeaderboa
const drivers = await this.driverRepository.findAll();
const rankings = await this.rankingUseCase.getAllDriverRankings();
const avatarUrls: Record<string, string | undefined> = {};
for (const driver of drivers) {
avatarUrls[driver.id] = await this.getDriverAvatar(driver.id);
}
// Get stats for all drivers
const statsPromises = drivers.map(driver =>
this.driverStatsUseCase.getDriverStats(driver.id)
@@ -90,7 +84,6 @@ export class GetDriversLeaderboardUseCase implements UseCase<GetDriversLeaderboa
const rating = ranking?.rating ?? 0;
const racesCompleted = stats?.totalRaces ?? 0;
const skillLevel: SkillLevel = SkillLevelService.getSkillLevel(rating);
const avatarUrl = avatarUrls[driver.id];
return {
driver,
@@ -101,7 +94,7 @@ export class GetDriversLeaderboardUseCase implements UseCase<GetDriversLeaderboa
podiums: stats?.podiums ?? 0,
isActive: racesCompleted > 0,
rank: ranking?.overallRank ?? 0,
...(avatarUrl !== undefined ? { avatarUrl } : {}),
avatarRef: driver.avatarRef,
};
});
@@ -132,4 +125,4 @@ export class GetDriversLeaderboardUseCase implements UseCase<GetDriversLeaderboa
});
}
}
}
}