import type { ITeamRepository } from '../../domain/repositories/ITeamRepository'; import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository'; import type { GetTeamDetailsQueryParamsDTO, GetTeamDetailsQueryResultDTO, } from '../dto/TeamCommandAndQueryDTO'; export class GetTeamDetailsQuery { constructor( private readonly teamRepository: ITeamRepository, private readonly membershipRepository: ITeamMembershipRepository, ) {} async execute(params: GetTeamDetailsQueryParamsDTO): Promise { const { teamId, driverId } = params; const team = await this.teamRepository.findById(teamId); if (!team) { throw new Error('Team not found'); } const membership = await this.membershipRepository.getMembership(teamId, driverId); return { team, membership }; } }