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], }, ];