30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
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],
|
|
},
|
|
]; |