league service

This commit is contained in:
2025-12-16 00:57:31 +01:00
parent 3b566c973d
commit 775d41e055
130 changed files with 4077 additions and 1036 deletions

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { AnalyticsProviders, PAGE_VIEW_REPOSITORY_TOKEN, ENGAGEMENT_REPOSITORY_TOKEN } from './AnalyticsProviders';
@Module({
imports: [],
providers: AnalyticsProviders,
exports: [PAGE_VIEW_REPOSITORY_TOKEN, ENGAGEMENT_REPOSITORY_TOKEN],
})
export class AnalyticsModule {}

View File

@@ -0,0 +1,30 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository';
import { IEngagementRepository } from '@gridpilot/analytics/domain/repositories/IEngagementRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryPageViewRepository } from '@gridpilot/adapters/analytics/persistence/inmemory/InMemoryPageViewRepository';
import { InMemoryEngagementRepository } from '@gridpilot/adapters/analytics/persistence/inmemory/InMemoryEngagementRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const PAGE_VIEW_REPOSITORY_TOKEN = Symbol('IPageViewRepository');
export const ENGAGEMENT_REPOSITORY_TOKEN = Symbol('IEngagementRepository');
export const AnalyticsProviders: Provider[] = [
{
provide: PAGE_VIEW_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryPageViewRepository(logger),
inject: [LOGGER_TOKEN],
},
{
provide: ENGAGEMENT_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryEngagementRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { AuthProviders, AUTH_REPOSITORY_TOKEN, USER_REPOSITORY_TOKEN } from './AuthProviders';
@Module({
imports: [],
providers: AuthProviders,
exports: [AUTH_REPOSITORY_TOKEN, USER_REPOSITORY_TOKEN],
})
export class AuthModule {}

View File

@@ -0,0 +1,30 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IAuthRepository } from '@gridpilot/identity/domain/repositories/IAuthRepository';
import { IUserRepository } from '@gridpilot/identity/domain/repositories/IUserRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryAuthRepository } from '@gridpilot/adapters/identity/persistence/inmemory/InMemoryAuthRepository';
import { InMemoryUserRepository } from '@gridpilot/adapters/identity/persistence/inmemory/InMemoryUserRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const AUTH_REPOSITORY_TOKEN = Symbol('IAuthRepository');
export const USER_REPOSITORY_TOKEN = Symbol('IUserRepository');
export const AuthProviders: Provider[] = [
{
provide: AUTH_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryAuthRepository(logger),
inject: [LOGGER_TOKEN],
},
{
provide: USER_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryUserRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { DriverProviders, DRIVER_REPOSITORY_TOKEN } from './DriverProviders';
@Module({
imports: [],
providers: DriverProviders,
exports: [DRIVER_REPOSITORY_TOKEN],
})
export class DriverModule {}

View File

@@ -0,0 +1,22 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryDriverRepository } from '@gridpilot/adapters/racing/persistence/inmemory/InMemoryDriverRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const DRIVER_REPOSITORY_TOKEN = Symbol('IDriverRepository');
export const DriverProviders: Provider[] = [
{
provide: DRIVER_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryDriverRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { LeagueProviders, GET_LEAGUE_STANDINGS_USE_CASE_TOKEN } from './LeagueProviders';
@Module({
imports: [],
providers: LeagueProviders,
exports: [GET_LEAGUE_STANDINGS_USE_CASE_TOKEN],
})
export class LeagueModule {}

View File

@@ -0,0 +1,30 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { GetLeagueStandingsUseCase } from '@gridpilot/league/application/use-cases/GetLeagueStandingsUseCase';
import { ILeagueStandingsRepository } from '@gridpilot/league/application/ports/ILeagueStandingsRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { GetLeagueStandingsUseCaseImpl } from '@gridpilot/league/application/use-cases/GetLeagueStandingsUseCaseImpl';
import { InMemoryLeagueStandingsRepository } from '@gridpilot/adapters/league/persistence/inmemory/InMemoryLeagueStandingsRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const GET_LEAGUE_STANDINGS_USE_CASE_TOKEN = Symbol('GetLeagueStandingsUseCase');
export const LEAGUE_STANDINGS_REPOSITORY_TOKEN = Symbol('ILeagueStandingsRepository');
export const LeagueProviders: Provider[] = [
{
provide: GET_LEAGUE_STANDINGS_USE_CASE_TOKEN,
useFactory: (repository: ILeagueStandingsRepository, logger: Logger) => new GetLeagueStandingsUseCaseImpl(repository),
inject: [LEAGUE_STANDINGS_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: LEAGUE_STANDINGS_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryLeagueStandingsRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,17 @@
import { Global, Module } from '@nestjs/common';
import { Logger } from '@gridpilot/shared/logging/Logger';
import { ConsoleLogger } from '@gridpilot/adapters/logging/ConsoleLogger';
export const LOGGER_TOKEN = Symbol('Logger');
@Global()
@Module({
providers: [
{
provide: LOGGER_TOKEN,
useClass: ConsoleLogger,
},
],
exports: [LOGGER_TOKEN],
})
export class LoggingModule {}

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { MediaProviders, AVATAR_GENERATION_REPOSITORY_TOKEN } from './MediaProviders';
@Module({
imports: [],
providers: MediaProviders,
exports: [AVATAR_GENERATION_REPOSITORY_TOKEN],
})
export class MediaModule {}

View File

@@ -0,0 +1,22 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IAvatarGenerationRepository } from '@gridpilot/media/domain/repositories/IAvatarGenerationRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryAvatarGenerationRepository } from '@gridpilot/adapters/media/persistence/inmemory/InMemoryAvatarGenerationRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const AVATAR_GENERATION_REPOSITORY_TOKEN = Symbol('IAvatarGenerationRepository');
export const MediaProviders: Provider[] = [
{
provide: AVATAR_GENERATION_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryAvatarGenerationRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { RaceProviders, RACE_REPOSITORY_TOKEN } from './RaceProviders';
@Module({
imports: [],
providers: RaceProviders,
exports: [RACE_REPOSITORY_TOKEN],
})
export class RaceModule {}

View File

@@ -0,0 +1,22 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryRaceRepository } from '@gridpilot/adapters/racing/persistence/inmemory/InMemoryRaceRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const RACE_REPOSITORY_TOKEN = Symbol('IRaceRepository');
export const RaceProviders: Provider[] = [
{
provide: RACE_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryRaceRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { SponsorProviders, SPONSOR_REPOSITORY_TOKEN } from './SponsorProviders';
@Module({
imports: [],
providers: SponsorProviders,
exports: [SPONSOR_REPOSITORY_TOKEN],
})
export class SponsorModule {}

View File

@@ -0,0 +1,22 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { ISponsorRepository } from '@gridpilot/racing/domain/repositories/ISponsorRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemorySponsorRepository } from '@gridpilot/adapters/racing/persistence/inmemory/InMemorySponsorRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const SPONSOR_REPOSITORY_TOKEN = Symbol('ISponsorRepository');
export const SponsorProviders: Provider[] = [
{
provide: SPONSOR_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemorySponsorRepository(logger),
inject: [LOGGER_TOKEN],
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { TeamProviders, TEAM_REPOSITORY_TOKEN } from './TeamProviders';
@Module({
imports: [],
providers: TeamProviders,
exports: [TEAM_REPOSITORY_TOKEN],
})
export class TeamModule {}

View File

@@ -0,0 +1,22 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { ITeamRepository } from '@gridpilot/racing/domain/repositories/ITeamRepository';
import { Logger } from '@gridpilot/shared/logging/Logger';
// Import implementations
import { InMemoryTeamRepository } from '@gridpilot/adapters/racing/persistence/inmemory/InMemoryTeamRepository';
// Import tokens
import { LOGGER_TOKEN } from '../logging/LoggingModule';
// Define injection tokens
export const TEAM_REPOSITORY_TOKEN = Symbol('ITeamRepository');
export const TeamProviders: Provider[] = [
{
provide: TEAM_REPOSITORY_TOKEN,
useFactory: (logger: Logger) => new InMemoryTeamRepository(logger),
inject: [LOGGER_TOKEN],
},
];