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,17 +1,39 @@
import { IGetAllRacesPresenter, GetAllRacesResultDTO, AllRacesPageViewModel } from '@core/racing/application/presenters/IGetAllRacesPresenter';
import { GetAllRacesOutputPort } from '@core/racing/application/ports/output/GetAllRacesOutputPort';
import { AllRacesPageDTO } from '../dtos/AllRacesPageDTO';
export class GetAllRacesPresenter implements IGetAllRacesPresenter {
private result: AllRacesPageViewModel | null = null;
export class GetAllRacesPresenter {
private result: AllRacesPageDTO | null = null;
reset() {
this.result = null;
}
present(dto: GetAllRacesResultDTO) {
this.result = dto;
async present(output: GetAllRacesOutputPort) {
this.result = {
races: output.races.map(race => ({
id: race.id,
track: race.track,
car: race.car,
scheduledAt: race.scheduledAt,
status: race.status,
leagueId: race.leagueId,
leagueName: race.leagueName,
strengthOfField: race.strengthOfField,
})),
filters: {
statuses: [
{ value: 'all', label: 'All' },
{ value: 'scheduled', label: 'Scheduled' },
{ value: 'running', label: 'Running' },
{ value: 'completed', label: 'Completed' },
{ value: 'cancelled', label: 'Cancelled' },
],
leagues: [], // TODO: populate if needed
},
};
}
getViewModel(): AllRacesPageViewModel | null {
getViewModel(): AllRacesPageDTO | null {
return this.result;
}
}

View File

@@ -1,19 +1,20 @@
import { IGetTotalRacesPresenter, GetTotalRacesResultDTO, GetTotalRacesViewModel } from '@core/racing/application/presenters/IGetTotalRacesPresenter';
import { GetTotalRacesOutputPort } from '@core/racing/application/ports/output/GetTotalRacesOutputPort';
import { RaceStatsDTO } from '../dtos/RaceStatsDTO';
export class GetTotalRacesPresenter implements IGetTotalRacesPresenter {
private result: GetTotalRacesViewModel | null = null;
export class GetTotalRacesPresenter {
private result: RaceStatsDTO | null = null;
reset() {
this.result = null;
}
present(dto: GetTotalRacesResultDTO) {
present(output: GetTotalRacesOutputPort) {
this.result = {
totalRaces: dto.totalRaces,
totalRaces: output.totalRaces,
};
}
getViewModel(): GetTotalRacesViewModel | null {
getViewModel(): RaceStatsDTO | null {
return this.result;
}
}

View File

@@ -1,17 +1,24 @@
import { IImportRaceResultsApiPresenter, ImportRaceResultsApiResultDTO, ImportRaceResultsSummaryViewModel } from '@core/racing/application/presenters/IImportRaceResultsApiPresenter';
import { ImportRaceResultsApiOutputPort } from '@core/racing/application/ports/output/ImportRaceResultsApiOutputPort';
import { ImportRaceResultsSummaryDTO } from '../dtos/ImportRaceResultsSummaryDTO';
export class ImportRaceResultsApiPresenter implements IImportRaceResultsApiPresenter {
private result: ImportRaceResultsSummaryViewModel | null = null;
export class ImportRaceResultsApiPresenter {
private result: ImportRaceResultsSummaryDTO | null = null;
reset() {
this.result = null;
}
present(dto: ImportRaceResultsApiResultDTO) {
this.result = dto;
present(output: ImportRaceResultsApiOutputPort) {
this.result = {
success: output.success,
raceId: output.raceId,
driversProcessed: output.driversProcessed,
resultsRecorded: output.resultsRecorded,
errors: output.errors,
};
}
getViewModel(): ImportRaceResultsSummaryViewModel | null {
getViewModel(): ImportRaceResultsSummaryDTO | null {
return this.result;
}
}