refactor league module (wip)

This commit is contained in:
2025-12-22 12:57:10 +01:00
parent 9da528d5bd
commit 03dc81b0ba
39 changed files with 546 additions and 405 deletions

View File

@@ -1,24 +1,35 @@
import type { GetLeagueMembershipsOutputPort } from '@core/racing/application/ports/output/GetLeagueMembershipsOutputPort';
import { LeagueMembershipsDTO, LeagueMemberDTO } from '../dtos/LeagueMembershipsDTO';
import type { UseCaseOutputPort } from '@core/shared/application';
import { GetLeagueMembershipsResult } from '@core/racing/application/use-cases/GetLeagueMembershipsUseCase';
import { LeagueMembershipsDTO } from '../dtos/LeagueMembershipsDTO';
import type { LeagueMemberDTO } from '../dtos/LeagueMemberDTO';
export interface GetLeagueMembershipsViewModel {
memberships: LeagueMembershipsDTO;
}
export class GetLeagueMembershipsPresenter {
export class GetLeagueMembershipsPresenter implements UseCaseOutputPort<GetLeagueMembershipsResult> {
private result: GetLeagueMembershipsViewModel | null = null;
reset() {
this.result = null;
}
present(output: GetLeagueMembershipsOutputPort) {
const members: LeagueMemberDTO[] = output.memberships.members.map(member => ({
driverId: member.driverId,
driver: member.driver,
role: member.role,
joinedAt: member.joinedAt,
}));
present(result: GetLeagueMembershipsResult) {
const members: LeagueMemberDTO[] = result.memberships
.filter(({ driver }) => driver !== null)
.map(({ membership, driver }) => ({
driverId: membership.driverId.toString(),
driver: {
id: driver!.id,
iracingId: driver!.iracingId.toString(),
name: driver!.name.toString(),
country: driver!.country.toString(),
joinedAt: driver!.joinedAt.toDate().toISOString(),
...(driver!.bio ? { bio: driver!.bio.toString() } : {}),
},
role: membership.role.toString() as 'owner' | 'manager' | 'member',
joinedAt: membership.joinedAt.toDate(),
}));
this.result = {
memberships: {
members,