import type { ITeamRepository } from '../../domain/repositories/ITeamRepository'; import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository'; import type { ITeamDetailsPresenter } from '../presenters/ITeamDetailsPresenter'; /** * Use Case for retrieving team details. * Orchestrates domain logic and delegates presentation to the presenter. */ export class GetTeamDetailsUseCase { constructor( private readonly teamRepository: ITeamRepository, private readonly membershipRepository: ITeamMembershipRepository, public readonly presenter: ITeamDetailsPresenter, ) {} async execute(teamId: string, driverId: string): Promise { const team = await this.teamRepository.findById(teamId); if (!team) { throw new Error('Team not found'); } const membership = await this.membershipRepository.getMembership(teamId, driverId); this.presenter.present(team, membership, driverId); } }