Files
gridpilot.gg/apps/website/lib/services/leagues/LeagueSettingsService.ts
2026-01-16 01:00:03 +01:00

41 lines
1.3 KiB
TypeScript

import { Result } from '@/lib/contracts/Result';
import { Service, type DomainError } from '@/lib/contracts/services/Service';
import { type LeagueSettingsApiDto } from '@/lib/types/tbd/LeagueSettingsApiDto';
export class LeagueSettingsService implements Service {
private static cachedMemberships = new Map<string, unknown[]>();
async getSettingsData(leagueId: string): Promise<Result<LeagueSettingsApiDto, DomainError>> {
// Mock data since backend not implemented
const mockData: LeagueSettingsApiDto = {
leagueId,
league: {
id: leagueId,
name: 'Mock League',
description: 'A mock league for demonstration',
visibility: 'public',
ownerId: 'owner-123',
createdAt: '2024-01-01T00:00:00Z',
updatedAt: '2024-01-01T00:00:00Z',
},
config: {
maxDrivers: 20,
scoringPresetId: 'preset-1',
allowLateJoin: true,
requireApproval: false,
},
};
return Result.ok(mockData);
}
static getCachedMembershipsIterator(): IterableIterator<[string, unknown[]]> {
return this.cachedMemberships.entries();
}
static getMembership(leagueId: string, driverId: string): unknown | null {
const members = this.cachedMemberships.get(leagueId);
if (!members) return null;
return members.find((m: any) => m.driverId === driverId) || null;
}
}