harden media
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import type { ITeamRepository } from '../../domain/repositories/ITeamRepository';
|
||||
import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository';
|
||||
import type { ITeamStatsRepository } from '../../domain/repositories/ITeamStatsRepository';
|
||||
import type { IMediaRepository } from '../../domain/repositories/IMediaRepository';
|
||||
import type { IResultRepository } from '../../domain/repositories/IResultRepository';
|
||||
import type { Logger } from '@core/shared/application';
|
||||
import { Result } from '@core/shared/application/Result';
|
||||
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
|
||||
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
|
||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||
|
||||
export type GetAllTeamsInput = {};
|
||||
|
||||
@@ -27,7 +27,8 @@ export interface TeamSummary {
|
||||
specialization?: string;
|
||||
region?: string;
|
||||
languages?: string[];
|
||||
logoUrl?: string;
|
||||
logoRef?: MediaReference;
|
||||
logoUrl?: string | null;
|
||||
rating?: number;
|
||||
category?: string | undefined;
|
||||
isRecruiting: boolean;
|
||||
@@ -46,7 +47,6 @@ export class GetAllTeamsUseCase {
|
||||
private readonly teamRepository: ITeamRepository,
|
||||
private readonly teamMembershipRepository: ITeamMembershipRepository,
|
||||
private readonly teamStatsRepository: ITeamStatsRepository,
|
||||
private readonly mediaRepository: IMediaRepository,
|
||||
private readonly resultRepository: IResultRepository,
|
||||
private readonly logger: Logger,
|
||||
private readonly output: UseCaseOutputPort<GetAllTeamsResult>,
|
||||
@@ -64,7 +64,9 @@ export class GetAllTeamsUseCase {
|
||||
const enrichedTeams: TeamSummary[] = await Promise.all(
|
||||
teams.map(async (team) => {
|
||||
const memberCount = await this.teamMembershipRepository.countByTeamId(team.id);
|
||||
const logoUrl = await this.mediaRepository.getTeamLogo(team.id);
|
||||
|
||||
// Get logo reference from team entity
|
||||
const logoRef = team.logoRef;
|
||||
|
||||
// Try to get pre-computed stats first
|
||||
let stats = await this.teamStatsRepository.getTeamStats(team.id);
|
||||
@@ -95,7 +97,6 @@ export class GetAllTeamsUseCase {
|
||||
else performanceLevel = 'beginner';
|
||||
|
||||
stats = {
|
||||
logoUrl: await this.mediaRepository.getTeamLogo(team.id) || '',
|
||||
performanceLevel,
|
||||
specialization: 'mixed',
|
||||
region: 'International',
|
||||
@@ -121,7 +122,8 @@ export class GetAllTeamsUseCase {
|
||||
specialization: stats!.specialization,
|
||||
region: stats!.region,
|
||||
languages: stats!.languages,
|
||||
logoUrl: logoUrl || stats!.logoUrl,
|
||||
logoRef: logoRef,
|
||||
logoUrl: null, // Will be resolved by presenter
|
||||
rating: stats!.rating,
|
||||
category: team.category,
|
||||
isRecruiting: team.isRecruiting,
|
||||
|
||||
Reference in New Issue
Block a user