This commit is contained in:
2025-12-16 10:50:15 +01:00
parent 775d41e055
commit 8ed6ba1fd1
144 changed files with 5763 additions and 1985 deletions

View File

@@ -0,0 +1,43 @@
/**
* 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 '@gridpilot/shared/application/UseCase';
export class GetSponsorsUseCase
implements UseCase<void, GetSponsorsResultDTO, GetSponsorsViewModel, IGetSponsorsPresenter>
{
constructor(
private readonly sponsorRepository: ISponsorRepository,
) {}
async execute(
_input: void,
presenter: IGetSponsorsPresenter,
): Promise<void> {
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);
}
}