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,18 +1,12 @@
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
import type { Logger } from '@core/shared/application';
import type {
AllRacesPageResultDTO,
AllRacesPageViewModel,
AllRacesListItemViewModel,
AllRacesFilterOptionsViewModel,
} from '../presenters/IAllRacesPagePresenter';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger , AsyncUseCase } from '@core/shared/application';
import type { AllRacesPageOutputPort, AllRacesListItem, AllRacesFilterOptions } from '../ports/output/AllRacesPageOutputPort';
import { Result } from '@core/shared/application/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
export class GetAllRacesPageDataUseCase
implements AsyncUseCase<void, AllRacesPageResultDTO, 'REPOSITORY_ERROR'> {
implements AsyncUseCase<void, AllRacesPageOutputPort, 'REPOSITORY_ERROR'> {
constructor(
private readonly raceRepository: IRaceRepository,
private readonly leagueRepository: ILeagueRepository,
@@ -30,7 +24,7 @@ export class GetAllRacesPageDataUseCase
const leagueMap = new Map(allLeagues.map((league) => [league.id.toString(), league.name.toString()]));
const races: AllRacesListItemViewModel[] = allRaces
const races: AllRacesListItem[] = allRaces
.slice()
.sort((a, b) => b.scheduledAt.getTime() - a.scheduledAt.getTime())
.map((race) => ({
@@ -49,7 +43,7 @@ export class GetAllRacesPageDataUseCase
uniqueLeagues.set(league.id.toString(), { id: league.id.toString(), name: league.name.toString() });
}
const filters: AllRacesFilterOptionsViewModel = {
const filters: AllRacesFilterOptions = {
statuses: [
{ value: 'all', label: 'All Statuses' },
{ value: 'scheduled', label: 'Scheduled' },
@@ -60,7 +54,7 @@ export class GetAllRacesPageDataUseCase
leagues: Array.from(uniqueLeagues.values()),
};
const viewModel: AllRacesPageViewModel = {
const viewModel: AllRacesPageOutputPort = {
races,
filters,
};