This commit is contained in:
2025-12-11 00:57:32 +01:00
parent 1303a14493
commit 6a427eab57
112 changed files with 6148 additions and 2272 deletions

View File

@@ -1,4 +1,3 @@
import { inject, injectable } from 'tsyringe';
import type { ITeamRepository } from '@gridpilot/racing/domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '@gridpilot/racing/domain/repositories/ITeamMembershipRepository';
import type { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository';
@@ -11,15 +10,19 @@ interface DriverStatsAdapter {
totalRaces: number;
}
@injectable()
/**
* Use case: GetTeamsLeaderboardUseCase
*
* Plain constructor-injected dependencies (no decorators) to keep the
* application layer framework-agnostic and compatible with test tooling.
*/
export class GetTeamsLeaderboardUseCase {
constructor(
@inject('ITeamRepository') private readonly teamRepository: ITeamRepository,
@inject('ITeamMembershipRepository')
private readonly teamRepository: ITeamRepository,
private readonly teamMembershipRepository: ITeamMembershipRepository,
@inject('IDriverRepository') private readonly driverRepository: IDriverRepository,
private readonly driverRepository: IDriverRepository,
private readonly getDriverStats: (driverId: string) => DriverStatsAdapter | null,
public readonly presenter: ITeamsLeaderboardPresenter
public readonly presenter: ITeamsLeaderboardPresenter,
) {}
async execute(): Promise<void> {