This commit is contained in:
2025-12-16 11:52:26 +01:00
parent ce82b7822b
commit 9a891ac8b3
586 changed files with 1320 additions and 1563 deletions

View File

@@ -6,9 +6,9 @@
*/
import { v4 as uuidv4 } from 'uuid';
import { Car, CarClass, CarLicense } from '@gridpilot/racing/domain/entities/Car';
import type { ICarRepository } from '@gridpilot/racing/domain/repositories/ICarRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import { Car, CarClass, CarLicense } from '@core/racing/domain/entities/Car';
import type { ICarRepository } from '@core/racing/domain/repositories/ICarRepository';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryCarRepository implements ICarRepository {
private cars: Map<string, Car>;

View File

@@ -1,6 +1,6 @@
import { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository';
import { Driver } from '@gridpilot/racing/domain/entities/Driver';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { Driver } from '@core/racing/domain/entities/Driver';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryDriverRepository implements IDriverRepository {
private drivers: Map<string, Driver> = new Map();

View File

@@ -1,6 +1,6 @@
import { IGameRepository } from '@gridpilot/racing/domain/repositories/IGameRepository';
import { Game } from '@gridpilot/racing/domain/entities/Game';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { IGameRepository } from '@core/racing/domain/repositories/IGameRepository';
import { Game } from '@core/racing/domain/entities/Game';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryGameRepository implements IGameRepository {
private games: Map<string, Game> = new Map();

View File

@@ -1,6 +1,6 @@
import { ILeagueMembershipRepository } from '@gridpilot/racing/domain/repositories/ILeagueMembershipRepository';
import { LeagueMembership, JoinRequest } from '@gridpilot/racing/domain/entities/LeagueMembership';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import { LeagueMembership, JoinRequest } from '@core/racing/domain/entities/LeagueMembership';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueMembershipRepository implements ILeagueMembershipRepository {
private memberships: Map<string, LeagueMembership> = new Map(); // Key: `${leagueId}:${driverId}`

View File

@@ -1,6 +1,6 @@
import { ILeagueRepository } from '@gridpilot/core/racing/domain/repositories/ILeagueRepository';
import { League } from '@gridpilot/core/racing/domain/entities/League';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import { League } from '@core/racing/domain/entities/League';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueRepository implements ILeagueRepository {
private leagues: Map<string, League> = new Map();

View File

@@ -1,6 +1,6 @@
import { ILeagueScoringConfigRepository } from '@gridpilot/racing/domain/repositories/ILeagueScoringConfigRepository';
import { LeagueScoringConfig } from '@gridpilot/racing/domain/entities/LeagueScoringConfig';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/ILeagueScoringConfigRepository';
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueScoringConfigRepository implements ILeagueScoringConfigRepository {
private configs: Map<string, LeagueScoringConfig> = new Map(); // Key: seasonId

View File

@@ -5,7 +5,7 @@ import {
import type {
LeagueScoringPresetDTO,
LeagueScoringPresetProvider,
} from '@gridpilot/racing/application/ports/LeagueScoringPresetProvider';
} from '@core/racing/application/ports/LeagueScoringPresetProvider';
/**
* Infrastructure adapter exposing the in-memory scoring preset registry

View File

@@ -1,5 +1,5 @@
import { ILeagueStandingsRepository, RawStanding } from '@gridpilot/core/league/application/ports/ILeagueStandingsRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ILeagueStandingsRepository, RawStanding } from '@core/league/application/ports/ILeagueStandingsRepository';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueStandingsRepository implements ILeagueStandingsRepository {
private standings: Map<string, RawStanding[]> = new Map(); // Key: leagueId

View File

@@ -6,7 +6,7 @@
import type { LeagueWallet } from '../../domain/entities/LeagueWallet';
import type { ILeagueWalletRepository } from '../../domain/repositories/ILeagueWalletRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueWalletRepository implements ILeagueWalletRepository {
private wallets: Map<string, LeagueWallet> = new Map();

View File

@@ -7,7 +7,7 @@
import type { DriverLivery } from '../../domain/entities/DriverLivery';
import type { LiveryTemplate } from '../../domain/entities/LiveryTemplate';
import type { ILiveryRepository } from '../../domain/repositories/ILiveryRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryLiveryRepository implements ILiveryRepository {
private driverLiveries: Map<string, DriverLivery> = new Map();

View File

@@ -6,7 +6,7 @@
import type { Penalty } from '../../domain/entities/Penalty';
import type { IPenaltyRepository } from '../../domain/repositories/IPenaltyRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryPenaltyRepository implements IPenaltyRepository {
private penalties: Map<string, Penalty> = new Map();

View File

@@ -1,6 +1,6 @@
import { IProtestRepository } from '@gridpilot/racing/domain/repositories/IProtestRepository';
import { Protest, ProtestStatus } from '@gridpilot/racing/domain/entities/Protest';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import { Protest, ProtestStatus } from '@core/racing/domain/entities/Protest';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryProtestRepository implements IProtestRepository {
private protests: Map<string, Protest> = new Map();

View File

@@ -3,7 +3,7 @@
*/
import type { IRaceEventRepository } from '../../domain/repositories/IRaceEventRepository';
import type { RaceEvent } from '../../domain/entities/RaceEvent';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceEventRepository implements IRaceEventRepository {
private raceEvents: Map<string, RaceEvent> = new Map();

View File

@@ -1,6 +1,6 @@
import { IRaceRegistrationRepository } from '@gridpilot/racing/domain/repositories/IRaceRegistrationRepository';
import { RaceRegistration } from '@gridpilot/racing/domain/entities/RaceRegistration';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceRegistrationRepository implements IRaceRegistrationRepository {
private registrations: Map<string, RaceRegistration> = new Map(); // Key: `${raceId}:${driverId}`

View File

@@ -1,6 +1,6 @@
import { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository';
import { Race, RaceStatus } from '@gridpilot/racing/domain/entities/Race';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import { Race, RaceStatus } from '@core/racing/domain/entities/Race';
import { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceRepository implements IRaceRepository {
private races: Map<string, Race> = new Map();

View File

@@ -6,10 +6,10 @@
*/
import { v4 as uuidv4 } from 'uuid';
import { Result } from '@gridpilot/racing/domain/entities/Result';
import type { IResultRepository } from '@gridpilot/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import { Result } from '@core/racing/domain/entities/Result';
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryResultRepository implements IResultRepository {
private results: Map<string, Result>;

View File

@@ -1,19 +1,19 @@
import { Game } from '@gridpilot/racing/domain/entities/Game';
import { Season } from '@gridpilot/racing/domain/entities/Season';
import type { LeagueScoringConfig } from '@gridpilot/racing/domain/entities/LeagueScoringConfig';
import { PointsTable } from '@gridpilot/racing/domain/value-objects/PointsTable';
import type { ChampionshipConfig } from '@gridpilot/racing/domain/types/ChampionshipConfig';
import type { SessionType } from '@gridpilot/racing/domain/types/SessionType';
import type { BonusRule } from '@gridpilot/racing/domain/types/BonusRule';
import type { DropScorePolicy } from '@gridpilot/racing/domain/types/DropScorePolicy';
import type { IGameRepository } from '@gridpilot/racing/domain/repositories/IGameRepository';
import type { ISeasonRepository } from '@gridpilot/racing/domain/repositories/ISeasonRepository';
import type { ILeagueScoringConfigRepository } from '@gridpilot/racing/domain/repositories/ILeagueScoringConfigRepository';
import type { IChampionshipStandingRepository } from '@gridpilot/racing/domain/repositories/IChampionshipStandingRepository';
import { ChampionshipStanding } from '@gridpilot/racing/domain/entities/ChampionshipStanding';
import type { ChampionshipType } from '@gridpilot/racing/domain/types/ChampionshipType';
import type { ParticipantRef } from '@gridpilot/racing/domain/types/ParticipantRef';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import { Game } from '@core/racing/domain/entities/Game';
import { Season } from '@core/racing/domain/entities/Season';
import type { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
import type { SessionType } from '@core/racing/domain/types/SessionType';
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
import type { IGameRepository } from '@core/racing/domain/repositories/IGameRepository';
import type { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import type { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/ILeagueScoringConfigRepository';
import type { IChampionshipStandingRepository } from '@core/racing/domain/repositories/IChampionshipStandingRepository';
import { ChampionshipStanding } from '@core/racing/domain/entities/ChampionshipStanding';
import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
import type { ParticipantRef } from '@core/racing/domain/types/ParticipantRef';
import type { Logger } from '@core/shared/logging/Logger';
class SilentLogger implements Logger {
debug(..._args: unknown[]): void {

View File

@@ -1,6 +1,6 @@
import { ISeasonRepository } from '@gridpilot/racing/domain/repositories/ISeasonRepository';
import { Season } from '@gridpilot/racing/domain/entities/Season';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import { Season } from '@core/racing/domain/entities/Season';
import { Logger } from '@core/shared/logging/Logger';
export class InMemorySeasonRepository implements ISeasonRepository {
private seasons: Map<string, Season> = new Map(); // Key: seasonId

View File

@@ -6,7 +6,7 @@
import type { SeasonSponsorship, SponsorshipTier } from '../../domain/entities/SeasonSponsorship';
import type { ISeasonSponsorshipRepository } from '../../domain/repositories/ISeasonSponsorshipRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemorySeasonSponsorshipRepository implements ISeasonSponsorshipRepository {
private sponsorships: Map<string, SeasonSponsorship> = new Map();

View File

@@ -3,7 +3,7 @@
*/
import type { ISessionRepository } from '../../domain/repositories/ISessionRepository';
import type { Session } from '../../domain/entities/Session';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemorySessionRepository implements ISessionRepository {
private sessions: Map<string, Session> = new Map();

View File

@@ -1,6 +1,6 @@
import { ISponsorRepository } from '@gridpilot/core/racing/domain/repositories/ISponsorRepository';
import { Sponsor } from '@gridpilot/core/racing/domain/entities/Sponsor';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ISponsorRepository } from '@core/racing/domain/repositories/ISponsorRepository';
import { Sponsor } from '@core/racing/domain/entities/Sponsor';
import { Logger } from '@core/shared/logging/Logger';
export class InMemorySponsorRepository implements ISponsorRepository {
private sponsors: Map<string, Sponsor> = new Map();

View File

@@ -5,7 +5,7 @@
import type { ISponsorshipPricingRepository } from '../../domain/repositories/ISponsorshipPricingRepository';
import { SponsorshipPricing } from '../../domain/value-objects/SponsorshipPricing';
import type { SponsorableEntityType } from '../../domain/entities/SponsorshipRequest';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
interface StorageKey {
entityType: SponsorableEntityType;

View File

@@ -1,6 +1,6 @@
import { ISponsorshipRequestRepository } from '@gridpilot/racing/domain/repositories/ISponsorshipRequestRepository';
import { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@gridpilot/racing/domain/entities/SponsorshipRequest';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/ISponsorshipRequestRepository';
import { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import { Logger } from '@core/shared/logging/Logger';
export class InMemorySponsorshipRequestRepository implements ISponsorshipRequestRepository {
private requests: Map<string, SponsorshipRequest> = new Map();

View File

@@ -5,12 +5,12 @@
* Stores data in Map structure and calculates standings from race results.
*/
import { Standing } from '@gridpilot/racing/domain/entities/Standing';
import type { IStandingRepository } from '@gridpilot/racing/domain/repositories/IStandingRepository';
import type { IResultRepository } from '@gridpilot/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository';
import type { ILeagueRepository } from '@gridpilot/racing/domain/repositories/ILeagueRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import { Standing } from '@core/racing/domain/entities/Standing';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import type { Logger } from '@core/shared/logging/Logger';
/**
* Points systems presets

View File

@@ -8,9 +8,9 @@
import type {
TeamMembership,
TeamJoinRequest,
} from '@gridpilot/racing/domain/types/TeamMembership';
import type { ITeamMembershipRepository } from '@gridpilot/racing/domain/repositories/ITeamMembershipRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
} from '@core/racing/domain/types/TeamMembership';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTeamMembershipRepository implements ITeamMembershipRepository {
private membershipsByTeam: Map<string, TeamMembership[]>;

View File

@@ -5,9 +5,9 @@
* Stores data in a Map structure.
*/
import type { Team } from '@gridpilot/racing/domain/entities/Team';
import type { ITeamRepository } from '@gridpilot/racing/domain/repositories/ITeamRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Team } from '@core/racing/domain/entities/Team';
import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTeamRepository implements ITeamRepository {
private teams: Map<string, Team>;

View File

@@ -6,9 +6,9 @@
*/
import { v4 as uuidv4 } from 'uuid';
import { Track, TrackCategory } from '@gridpilot/racing/domain/entities/Track';
import type { ITrackRepository } from '@gridpilot/racing/domain/repositories/ITrackRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import { Track, TrackCategory } from '@core/racing/domain/entities/Track';
import type { ITrackRepository } from '@core/racing/domain/repositories/ITrackRepository';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTrackRepository implements ITrackRepository {
private tracks: Map<string, Track>;

View File

@@ -6,7 +6,7 @@
import type { Transaction, TransactionType } from '../../domain/entities/Transaction';
import type { ITransactionRepository } from '../../domain/repositories/ITransactionRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger';
import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTransactionRepository implements ITransactionRepository {
private transactions: Map<string, Transaction> = new Map();