league service
This commit is contained in:
9
apps/website/lib/modules/analytics/AnalyticsModule.ts
Normal file
9
apps/website/lib/modules/analytics/AnalyticsModule.ts
Normal 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 {}
|
||||
30
apps/website/lib/modules/analytics/AnalyticsProviders.ts
Normal file
30
apps/website/lib/modules/analytics/AnalyticsProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/auth/AuthModule.ts
Normal file
9
apps/website/lib/modules/auth/AuthModule.ts
Normal 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 {}
|
||||
30
apps/website/lib/modules/auth/AuthProviders.ts
Normal file
30
apps/website/lib/modules/auth/AuthProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/driver/DriverModule.ts
Normal file
9
apps/website/lib/modules/driver/DriverModule.ts
Normal 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 {}
|
||||
22
apps/website/lib/modules/driver/DriverProviders.ts
Normal file
22
apps/website/lib/modules/driver/DriverProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/league/LeagueModule.ts
Normal file
9
apps/website/lib/modules/league/LeagueModule.ts
Normal 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 {}
|
||||
30
apps/website/lib/modules/league/LeagueProviders.ts
Normal file
30
apps/website/lib/modules/league/LeagueProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
17
apps/website/lib/modules/logging/LoggingModule.ts
Normal file
17
apps/website/lib/modules/logging/LoggingModule.ts
Normal 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 {}
|
||||
9
apps/website/lib/modules/media/MediaModule.ts
Normal file
9
apps/website/lib/modules/media/MediaModule.ts
Normal 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 {}
|
||||
22
apps/website/lib/modules/media/MediaProviders.ts
Normal file
22
apps/website/lib/modules/media/MediaProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/race/RaceModule.ts
Normal file
9
apps/website/lib/modules/race/RaceModule.ts
Normal 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 {}
|
||||
22
apps/website/lib/modules/race/RaceProviders.ts
Normal file
22
apps/website/lib/modules/race/RaceProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/sponsor/SponsorModule.ts
Normal file
9
apps/website/lib/modules/sponsor/SponsorModule.ts
Normal 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 {}
|
||||
22
apps/website/lib/modules/sponsor/SponsorProviders.ts
Normal file
22
apps/website/lib/modules/sponsor/SponsorProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
9
apps/website/lib/modules/team/TeamModule.ts
Normal file
9
apps/website/lib/modules/team/TeamModule.ts
Normal 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 {}
|
||||
22
apps/website/lib/modules/team/TeamProviders.ts
Normal file
22
apps/website/lib/modules/team/TeamProviders.ts
Normal 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],
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user