refactor core presenters

This commit is contained in:
2025-12-19 19:42:19 +01:00
parent 8116fe888f
commit 94fc538f44
228 changed files with 2817 additions and 3097 deletions

View File

@@ -1,43 +1,30 @@
import {
ITeamJoinRequestsPresenter,
TeamJoinRequestsResultDTO,
TeamJoinRequestsViewModel,
TeamJoinRequestViewModel,
} from '@core/racing/application/presenters/ITeamJoinRequestsPresenter';
import type { TeamJoinRequestsOutputPort } from '@core/racing/application/ports/output/TeamJoinRequestsOutputPort';
import type { GetTeamJoinRequestsOutputDTO } from '../dtos/GetTeamJoinRequestsOutputDTO';
export class TeamJoinRequestsPresenter implements ITeamJoinRequestsPresenter {
private result: TeamJoinRequestsViewModel | null = null;
export class TeamJoinRequestsPresenter {
private result: GetTeamJoinRequestsOutputDTO | null = null;
reset() {
this.result = null;
}
present(dto: TeamJoinRequestsResultDTO) {
const { requests, driverNames, avatarUrls } = dto;
const requestViewModels: TeamJoinRequestViewModel[] = requests.map((request) => ({
requestId: request.id,
driverId: request.driverId,
driverName: driverNames[request.driverId] || 'Unknown',
teamId: request.teamId,
status: 'pending' as const,
requestedAt: request.requestedAt.toISOString(),
avatarUrl: avatarUrls[request.driverId] || '',
}));
async present(outputPort: TeamJoinRequestsOutputPort): Promise<void> {
this.result = {
requests: requestViewModels,
pendingCount: requestViewModels.length,
totalCount: requestViewModels.length,
requests: outputPort.requests.map(request => ({
requestId: request.requestId,
driverId: request.driverId,
driverName: request.driverName,
teamId: request.teamId,
status: request.status,
requestedAt: request.requestedAt.toISOString(),
avatarUrl: request.avatarUrl,
})),
pendingCount: outputPort.pendingCount,
totalCount: outputPort.totalCount,
};
}
getViewModel(): TeamJoinRequestsViewModel | null {
return this.result;
}
get viewModel(): TeamJoinRequestsViewModel {
if (!this.result) throw new Error('Presenter not presented');
getViewModel(): GetTeamJoinRequestsOutputDTO | null {
return this.result;
}
}