Files
gridpilot.gg/core/leagues/application/use-cases/JoinLeagueUseCase.ts
Marc Mintel eaf51712a7
Some checks failed
CI / lint-typecheck (pull_request) Failing after 4m50s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
integration tests
2026-01-22 23:55:28 +01:00

27 lines
1.0 KiB
TypeScript

import { LeagueRepository } from '../ports/LeagueRepository';
import { DriverRepository } from '../ports/DriverRepository';
import { EventPublisher } from '../ports/EventPublisher';
import { JoinLeagueCommand } from '../ports/JoinLeagueCommand';
export class JoinLeagueUseCase {
constructor(
private readonly leagueRepository: LeagueRepository,
private readonly driverRepository: DriverRepository,
private readonly eventPublisher: EventPublisher,
) {}
async execute(command: JoinLeagueCommand): Promise<void> {
// TODO: Implement join league logic
// This is a placeholder implementation
// In a real implementation, this would:
// 1. Validate the league exists
// 2. Validate the driver exists
// 3. Check if the driver is already a member
// 4. Check if the league is full
// 5. Check if approval is required
// 6. Add the driver to the league (or create a pending request)
// 7. Emit appropriate events
throw new Error('JoinLeagueUseCase not implemented');
}
}