import { LeagueMemberDTO } from '@/lib/types/generated/LeagueMemberDTO'; import { LeagueMemberViewModel } from '@/lib/view-models/LeagueMemberViewModel'; import type { LeaguesApiClient } from '../../api/leagues/LeaguesApiClient'; // TODO: Move to generated types when available type LeagueMembershipsDTO = { members: LeagueMemberDTO[]; }; /** * League Membership Service * * 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 ) {} /** * Get league memberships with view model transformation */ async getLeagueMemberships(leagueId: string, currentUserId: string): Promise { const dto: LeagueMembershipsDTO = await this.apiClient.getMemberships(leagueId); return dto.members.map((member: LeagueMemberDTO) => new LeagueMemberViewModel(member, currentUserId)); } /** * Remove a member from league */ async removeMember(leagueId: string, performerDriverId: string, targetDriverId: string): Promise<{ success: boolean }> { return await this.apiClient.removeMember(leagueId, performerDriverId, targetDriverId); } }