This commit is contained in:
2025-12-12 01:11:36 +01:00
parent ec3ddc3a5c
commit 6a88fe93ab
125 changed files with 1513 additions and 803 deletions

View File

@@ -12,11 +12,11 @@ import type { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRac
export class InMemoryResultRepository implements IResultRepository {
private results: Map<string, Result>;
private raceRepository?: IRaceRepository;
private raceRepository: IRaceRepository | null;
constructor(seedData?: Result[], raceRepository?: IRaceRepository) {
constructor(seedData?: Result[], raceRepository?: IRaceRepository | null) {
this.results = new Map();
this.raceRepository = raceRepository;
this.raceRepository = raceRepository ?? null;
if (seedData) {
seedData.forEach(result => {

View File

@@ -28,20 +28,20 @@ const POINTS_SYSTEMS: Record<string, Record<number, number>> = {
export class InMemoryStandingRepository implements IStandingRepository {
private standings: Map<string, Standing>;
private resultRepository?: IResultRepository;
private raceRepository?: IRaceRepository;
private leagueRepository?: ILeagueRepository;
private resultRepository: IResultRepository | null;
private raceRepository: IRaceRepository | null;
private leagueRepository: ILeagueRepository | null;
constructor(
seedData?: Standing[],
resultRepository?: IResultRepository,
raceRepository?: IRaceRepository,
leagueRepository?: ILeagueRepository
resultRepository?: IResultRepository | null,
raceRepository?: IRaceRepository | null,
leagueRepository?: ILeagueRepository | null
) {
this.standings = new Map();
this.resultRepository = resultRepository;
this.raceRepository = raceRepository;
this.leagueRepository = leagueRepository;
this.resultRepository = resultRepository ?? null;
this.raceRepository = raceRepository ?? null;
this.leagueRepository = leagueRepository ?? null;
if (seedData) {
seedData.forEach(standing => {
@@ -123,9 +123,16 @@ export class InMemoryStandingRepository implements IStandingRepository {
}
// Get points system
const pointsSystem = league.settings.customPoints ??
POINTS_SYSTEMS[league.settings.pointsSystem] ??
POINTS_SYSTEMS['f1-2024'];
const resolvedPointsSystem =
league.settings.customPoints ??
POINTS_SYSTEMS[league.settings.pointsSystem] ??
POINTS_SYSTEMS['f1-2024'];
if (!resolvedPointsSystem) {
throw new Error('No points system configured for league');
}
const pointsSystem: Record<number, number> = resolvedPointsSystem;
// Get all completed races for the league
const races = await this.raceRepository.findCompletedByLeagueId(leagueId);

View File

@@ -76,6 +76,11 @@ export class InMemoryTeamMembershipRepository implements ITeamMembershipReposito
return [...(this.membershipsByTeam.get(teamId) ?? [])];
}
async countByTeamId(teamId: string): Promise<number> {
const list = this.membershipsByTeam.get(teamId) ?? [];
return list.filter((m) => m.status === 'active').length;
}
async saveMembership(membership: TeamMembership): Promise<TeamMembership> {
const list = this.getMembershipList(membership.teamId);
const existingIndex = list.findIndex(