49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import type { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
|
|
import type { Logger } from '@core/shared/application';
|
|
|
|
export class InMemoryImageServiceAdapter implements IImageServicePort {
|
|
constructor(private readonly logger: Logger) {
|
|
this.logger.info('InMemoryImageServiceAdapter initialized.');
|
|
}
|
|
|
|
getDriverAvatar(driverId: string): string {
|
|
this.logger.debug(`[InMemoryImageServiceAdapter] Getting avatar for driver: ${driverId}`);
|
|
const driverNumber = Number(driverId.replace('driver-', ''));
|
|
const index = Number.isFinite(driverNumber) ? driverNumber % 3 : 0;
|
|
|
|
const avatars = [
|
|
'/images/avatars/male-default-avatar.jpg',
|
|
'/images/avatars/female-default-avatar.jpeg',
|
|
'/images/avatars/neutral-default-avatar.jpeg',
|
|
] as const;
|
|
|
|
return avatars[index] ?? avatars[0];
|
|
}
|
|
|
|
getTeamLogo(teamId: string): string {
|
|
this.logger.debug(`[InMemoryImageServiceAdapter] Getting logo for team: ${teamId}`);
|
|
const teamNumber = Number(teamId.replace('team-', ''));
|
|
const index = Number.isFinite(teamNumber) ? teamNumber % 6 : 0;
|
|
|
|
const logos = [
|
|
'/images/ff1600.jpeg',
|
|
'/images/header.jpeg',
|
|
'/images/avatars/male-default-avatar.jpg',
|
|
'/images/avatars/female-default-avatar.jpeg',
|
|
'/images/avatars/neutral-default-avatar.jpeg',
|
|
'/images/leagues/placeholder-cover.svg',
|
|
] as const;
|
|
|
|
return logos[index] ?? logos[0];
|
|
}
|
|
|
|
getLeagueCover(leagueId: string): string {
|
|
this.logger.debug(`[InMemoryImageServiceAdapter] Getting cover for league: ${leagueId}`);
|
|
return '/images/header.jpeg';
|
|
}
|
|
|
|
getLeagueLogo(leagueId: string): string {
|
|
this.logger.debug(`[InMemoryImageServiceAdapter] Getting logo for league: ${leagueId}`);
|
|
return '/images/ff1600.jpeg';
|
|
}
|
|
} |