wip
This commit is contained in:
@@ -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 => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user