/** * Application Use Case: GetSponsorsUseCase * * Retrieves all sponsors. */ import type { ISponsorRepository } from '../../domain/repositories/ISponsorRepository'; import type { IGetSponsorsPresenter, GetSponsorsResultDTO, GetSponsorsViewModel, } from '../presenters/IGetSponsorsPresenter'; import type { UseCase } from '@core/shared/application/UseCase'; export class GetSponsorsUseCase implements UseCase { constructor( private readonly sponsorRepository: ISponsorRepository, ) {} async execute( _input: void, presenter: IGetSponsorsPresenter, ): Promise { presenter.reset(); const sponsors = await this.sponsorRepository.findAll(); const dto: GetSponsorsResultDTO = { sponsors: sponsors.map(sponsor => ({ id: sponsor.id, name: sponsor.name, contactEmail: sponsor.contactEmail, websiteUrl: sponsor.websiteUrl, logoUrl: sponsor.logoUrl, createdAt: sponsor.createdAt, })), }; presenter.present(dto); } }