import type { ITeamRepository } from '../../domain/repositories/ITeamRepository'; import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository'; import type { IDriverTeamPresenter } from '../presenters/IDriverTeamPresenter'; /** * Use Case for retrieving a driver's team. * Orchestrates domain logic and delegates presentation to the presenter. */ export class GetDriverTeamUseCase { constructor( private readonly teamRepository: ITeamRepository, private readonly membershipRepository: ITeamMembershipRepository, public readonly presenter: IDriverTeamPresenter, ) {} async execute(driverId: string): Promise { const membership = await this.membershipRepository.getActiveMembershipForDriver(driverId); if (!membership) { return false; } const team = await this.teamRepository.findById(membership.teamId); if (!team) { return false; } this.presenter.present(team, membership, driverId); return true; } }