view models

This commit is contained in:
2025-12-18 01:20:23 +01:00
parent 7c449af311
commit cc2553876a
216 changed files with 485 additions and 10179 deletions

View File

@@ -1,25 +1,24 @@
import type { LeaguesApiClient } from '../../api/leagues/LeaguesApiClient';
import type { LeagueMemberViewModel } from '../../view-models';
import type { LeagueMembersPresenter } from '../../presenters/LeagueMembersPresenter';
import { LeagueMemberViewModel } from '../../view-models';
import type { LeagueMemberDTO } from '../../types/generated';
/**
* League Membership Service
*
* Orchestrates league membership operations by coordinating API calls and presentation logic.
* Orchestrates league membership operations by coordinating API calls and view model creation.
* All dependencies are injected via constructor.
*/
export class LeagueMembershipService {
constructor(
private readonly apiClient: LeaguesApiClient,
private readonly leagueMembersPresenter: LeagueMembersPresenter
private readonly apiClient: LeaguesApiClient
) {}
/**
* Get league memberships with presentation transformation
* Get league memberships with view model transformation
*/
async getLeagueMemberships(leagueId: string, currentUserId: string): Promise<LeagueMemberViewModel[]> {
const dto = await this.apiClient.getMemberships(leagueId);
return this.leagueMembersPresenter.present(dto, currentUserId);
return dto.members.map((member: LeagueMemberDTO) => new LeagueMemberViewModel(member, currentUserId));
}
/**