fix issues in core

This commit is contained in:
2025-12-23 15:38:50 +01:00
parent df5c20c5cc
commit 120d3bb1a1
125 changed files with 1005 additions and 793 deletions

View File

@@ -1,9 +1,10 @@
import { Result as DomainResult, Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/application/Result';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { League } from '../../domain/entities/League';
import type { Race } from '../../domain/entities/Race';
import type { RaceRegistration } from '../../domain/entities/RaceRegistration';
import type { Result as RaceResult } from '../../domain/entities/result/Result';
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
@@ -26,14 +27,12 @@ export type GetRaceDetailResult = {
league: League | null;
registrations: RaceRegistration[];
drivers: NonNullable<Awaited<ReturnType<IDriverRepository['findById']>>>[];
userResult: DomainResult | null;
userResult: RaceResult | null;
isUserRegistered: boolean;
canRegister: boolean;
};
export class GetRaceDetailUseCase {
private output: UseCaseOutputPort<GetRaceDetailResult> | null = null; // TODO wtf this must be injected via constructor
constructor(
private readonly raceRepository: IRaceRepository,
private readonly leagueRepository: ILeagueRepository,
@@ -41,12 +40,9 @@ export class GetRaceDetailUseCase {
private readonly raceRegistrationRepository: IRaceRegistrationRepository,
private readonly resultRepository: IResultRepository,
private readonly leagueMembershipRepository: ILeagueMembershipRepository,
private readonly output: UseCaseOutputPort<GetRaceDetailResult>,
) {}
setOutput(output: UseCaseOutputPort<GetRaceDetailResult>) { // TODO must be removed
this.output = output;
}
async execute(
input: GetRaceDetailInput,
): Promise<Result<void, ApplicationErrorCode<GetRaceDetailErrorCode, { message: string }>>> {
@@ -75,9 +71,10 @@ export class GetRaceDetailUseCase {
const isUserRegistered = registrations.some(reg => reg.driverId.toString() === driverId);
const isUpcoming = race.status === 'scheduled' && race.scheduledAt > new Date();
const canRegister = !!membership && membership.status === 'active' && isUpcoming;
const canRegister =
!!membership && membership.status.toString() === 'active' && isUpcoming;
let userResult: DomainResult | null = null;
let userResult: RaceResult | null = null;
if (race.status === 'completed') {
const results = await this.resultRepository.findByRaceId(race.id);
@@ -94,9 +91,6 @@ export class GetRaceDetailUseCase {
canRegister,
};
if (!this.output) {
throw new Error('Output not set');
}
this.output.present(result);
return Result.ok(undefined);