refactor to adapters
This commit is contained in:
@@ -37,33 +37,48 @@ import type { ILeagueMembershipRepository } from '@gridpilot/racing/domain/repos
|
||||
import type { IFeedRepository } from '@gridpilot/social/domain/repositories/IFeedRepository';
|
||||
import type { ISocialGraphRepository } from '@gridpilot/social/domain/repositories/ISocialGraphRepository';
|
||||
import type { ImageServicePort } from '@gridpilot/media';
|
||||
import type { ILogger } from '@gridpilot/shared/logging/ILogger';
|
||||
import { ConsoleLogger } from '@gridpilot/shared/logging/ConsoleLogger';
|
||||
import type { ILogger } from '@gridpilot/shared/logging';
|
||||
import { ConsoleLogger } from '../../../adapters/logging';
|
||||
import type { IPageViewRepository, IEngagementRepository } from '@gridpilot/analytics';
|
||||
import { InMemoryPageViewRepository, InMemoryEngagementRepository } from '@gridpilot/analytics/infrastructure/repositories';
|
||||
import { RecordPageViewUseCase, RecordEngagementUseCase } from '@gridpilot/analytics/application/use-cases';
|
||||
import type { AuthService } from './auth/AuthService';
|
||||
import { InMemoryAuthService } from './auth/InMemoryAuthService';
|
||||
import type { IUserRepository, StoredUser } from '@gridpilot/identity/domain/repositories/IUserRepository';
|
||||
import { InMemoryUserRepository } from '@gridpilot/identity/infrastructure/repositories/InMemoryUserRepository';
|
||||
import type { ISponsorAccountRepository, SponsorAccount } from '@gridpilot/identity/domain/repositories/ISponsorAccountRepository';
|
||||
import { InMemorySponsorAccountRepository } from '@gridpilot/identity/infrastructure/repositories/InMemorySponsorAccountRepository';
|
||||
import type { ILiveryRepository } from '@gridpilot/racing/domain/repositories/ILiveryRepository';
|
||||
import { InMemoryLiveryRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryLiveryRepository';
|
||||
import type { IChampionshipStandingRepository } from '@gridpilot/racing/domain/repositories/IChampionshipStandingRepository';
|
||||
import { InMemoryChampionshipStandingRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryScoringRepositories';
|
||||
import type { ILeagueWalletRepository } from '@gridpilot/racing/domain/repositories/ILeagueWalletRepository';
|
||||
import { InMemoryLeagueWalletRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryLeagueWalletRepository';
|
||||
import type { ITransactionRepository } from '@gridpilot/racing/domain/repositories/ITransactionRepository';
|
||||
import { InMemoryTransactionRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryTransactionRepository';
|
||||
import type { ISessionRepository } from '@gridpilot/racing/domain/repositories/ISessionRepository';
|
||||
import { InMemorySessionRepository } from '@gridpilot/racing/infrastructure/repositories/InMemorySessionRepository';
|
||||
import type { IAchievementRepository } from '@gridpilot/identity/domain/repositories/IAchievementRepository';
|
||||
import { InMemoryAchievementRepository } from '@gridpilot/identity/infrastructure/repositories/InMemoryAchievementRepository';
|
||||
import type { IUserRatingRepository } from '@gridpilot/identity/domain/repositories/IUserRatingRepository';
|
||||
import { InMemoryUserRatingRepository } from '@gridpilot/identity/infrastructure/repositories/InMemoryUserRatingRepository';
|
||||
import { ConsoleLogger } from '../../../adapters/logging';
|
||||
|
||||
import { DI_TOKENS } from './di-tokens';
|
||||
// Identity authentication use cases and ports
|
||||
import { StartAuthUseCase } from '@gridpilot/identity/application/use-cases/StartAuthUseCase';
|
||||
import { GetCurrentUserSessionUseCase } from '@gridpilot/identity/application/use-cases/GetCurrentUserSessionUseCase';
|
||||
import { HandleAuthCallbackUseCase } from '@gridpilot/identity/application/use-cases/HandleAuthCallbackUseCase';
|
||||
import { LogoutUseCase } from '@gridpilot/identity/application/use-cases/LogoutUseCase';
|
||||
import { SignupWithEmailUseCase } from '@gridpilot/identity/application/use-cases/SignupWithEmailUseCase';
|
||||
import { LoginWithEmailUseCase } from '@gridpilot/identity/application/use-cases/LoginWithEmailUseCase';
|
||||
import type { IdentityProvider } from '@gridpilot/identity/application/ports/IdentityProvider';
|
||||
import type { SessionPort } from '@gridpilot/identity/application/ports/SessionPort';
|
||||
import { IracingDemoIdentityProviderAdapter } from '../../../testing/fakes/identity/IracingDemoIdentityProviderAdapter';
|
||||
import { CookieIdentitySessionAdapter } from '@gridpilot/identity/infrastructure/session/CookieIdentitySessionAdapter';
|
||||
|
||||
import type { AuthService } from './auth/AuthService';
|
||||
import type { ILogger } from '@gridpilot/shared/logging';
|
||||
|
||||
// Repositories
|
||||
import type { IAchievementRepository } from '@gridpilot/identity/domain/repositories/IAchievementRepository';
|
||||
import { InMemoryAchievementRepository } from '../../adapters/persistence/inmemory/identity/InMemoryAchievementRepository';
|
||||
import type { IUserRatingRepository } from '@gridpilot/identity/domain/repositories/IUserRatingRepository';
|
||||
import { InMemoryUserRatingRepository } from '../../adapters/persistence/inmemory/identity/InMemoryUserRatingRepository';
|
||||
import type { ISponsorAccountRepository, SponsorAccount } from '@gridpilot/identity/domain/repositories/ISponsorAccountRepository';
|
||||
import { InMemorySponsorAccountRepository } from '../../adapters/persistence/inmemory/identity/InMemorySponsorAccountRepository';
|
||||
import type { IUserRepository, StoredUser } from '@gridpilot/identity/domain/repositories/IUserRepository';
|
||||
import { InMemoryUserRepository } from '../../adapters/persistence/inmemory/identity/InMemoryUserRepository';
|
||||
|
||||
import type { ILiveryRepository } from '@gridpilot/racing/domain/repositories/ILiveryRepository';
|
||||
import { InMemoryLiveryRepository } from '../../adapters/persistence/inmemory/racing/InMemoryLiveryRepository';
|
||||
import type { IChampionshipStandingRepository } from '@gridpilot/racing/domain/repositories/IChampionshipStandingRepository';
|
||||
import { InMemoryChampionshipStandingRepository } from '../../adapters/persistence/inmemory/racing/InMemoryScoringRepositories';
|
||||
import type { ILeagueWalletRepository } from '@gridpilot/racing/domain/repositories/ILeagueWalletRepository';
|
||||
import { InMemoryLeagueWalletRepository } from '../../adapters/persistence/inmemory/racing/InMemoryLeagueWalletRepository';
|
||||
import type { ITransactionRepository } from '@gridpilot/racing/domain/repositories/ITransactionRepository';
|
||||
import { InMemoryTransactionRepository } from '../../adapters/persistence/inmemory/racing/InMemoryTransactionRepository';
|
||||
import type { ISessionRepository } from '@gridpilot/racing/domain/repositories/ISessionRepository';
|
||||
import { InMemorySessionRepository } from '../../adapters/persistence/inmemory/racing/InMemorySessionRepository';
|
||||
|
||||
// Notifications
|
||||
import type { INotificationRepository, INotificationPreferenceRepository } from '@gridpilot/notifications/application';
|
||||
import {
|
||||
SendNotificationUseCase,
|
||||
@@ -77,10 +92,17 @@ import {
|
||||
InAppNotificationAdapter,
|
||||
} from '@gridpilot/notifications/infrastructure';
|
||||
|
||||
import type { IPageViewRepository, IEngagementRepository } from '@gridpilot/analytics';
|
||||
import { InMemoryPageViewRepository, InMemoryEngagementRepository } from '../../adapters/persistence/inmemory/analytics/InMemoryAnalyticsRepositories';
|
||||
import {
|
||||
RecordPageViewUseCase,
|
||||
RecordEngagementUseCase
|
||||
} from '@gridpilot/analytics/application/use-cases';
|
||||
|
||||
// Infrastructure repositories
|
||||
import { InMemoryDriverRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryDriverRepository';
|
||||
import { InMemoryLeagueRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryLeagueRepository';
|
||||
import { InMemoryRaceRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryRaceRepository';
|
||||
import { InMemoryDriverRepository } from '../../adapters/persistence/inmemory/racing/InMemoryDriverRepository';
|
||||
import { InMemoryLeagueRepository } from '../../adapters/persistence/inmemory/racing/InMemoryLeagueRepository';
|
||||
import { InMemoryRaceRepository } from '../../adapters/persistence/inmemory/racing/InMemoryRaceRepository';
|
||||
import { InMemoryResultRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryResultRepository';
|
||||
import { InMemoryStandingRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryStandingRepository';
|
||||
import { InMemoryPenaltyRepository } from '@gridpilot/racing/infrastructure/repositories/InMemoryPenaltyRepository';
|
||||
@@ -180,6 +202,7 @@ import { LeagueStatsPresenter } from './presenters/LeagueStatsPresenter';
|
||||
import { LeagueScoringConfigPresenter } from './presenters/LeagueScoringConfigPresenter';
|
||||
import { LeagueFullConfigPresenter } from './presenters/LeagueFullConfigPresenter';
|
||||
import { LeagueDriverSeasonStatsPresenter } from './presenters/LeagueDriverSeasonStatsPresenter';
|
||||
import { LeagueStandingsPresenter as ILeagueStandingsPresenter } from './presenters/LeagueStandingsPresenter';
|
||||
import { LeagueStandingsPresenter } from './presenters/LeagueStandingsPresenter';
|
||||
import { LeagueScoringPresetsPresenter } from './presenters/LeagueScoringPresetsPresenter';
|
||||
import { RaceWithSOFPresenter } from './presenters/RaceWithSOFPresenter';
|
||||
@@ -245,6 +268,10 @@ export function configureDIContainer(): void {
|
||||
const driverStats: DemoDriverStatsMap = createDemoDriverStats(seedData.drivers);
|
||||
|
||||
// Register repositories
|
||||
container.registerInstance<ILeagueStandingsRepository>(
|
||||
DI_TOKENS.LeagueStandingsRepository,
|
||||
new LeagueStandingsRepositoryAdapter()
|
||||
);
|
||||
container.registerInstance<IDriverRepository>(
|
||||
DI_TOKENS.DriverRepository,
|
||||
new InMemoryDriverRepository(logger, seedData.drivers)
|
||||
@@ -920,6 +947,7 @@ export function configureDIContainer(): void {
|
||||
const raceRegistrationRepository = container.resolve<IRaceRegistrationRepository>(DI_TOKENS.RaceRegistrationRepository);
|
||||
const leagueMembershipRepository = container.resolve<ILeagueMembershipRepository>(DI_TOKENS.LeagueMembershipRepository);
|
||||
const standingRepository = container.resolve<IStandingRepository>(DI_TOKENS.StandingRepository);
|
||||
const leagueStandingsRepository = container.resolve<ILeagueStandingsRepository>(DI_TOKENS.LeagueStandingsRepository);
|
||||
const penaltyRepository = container.resolve<IPenaltyRepository>(DI_TOKENS.PenaltyRepository);
|
||||
const protestRepository = container.resolve<IProtestRepository>(DI_TOKENS.ProtestRepository);
|
||||
const teamRepository = container.resolve<ITeamRepository>(DI_TOKENS.TeamRepository);
|
||||
@@ -1095,10 +1123,14 @@ export function configureDIContainer(): void {
|
||||
new GetRaceRegistrationsUseCase(raceRegistrationRepository)
|
||||
);
|
||||
|
||||
const leagueStandingsPresenter = new LeagueStandingsPresenter();
|
||||
container.registerInstance(
|
||||
container.registerInstance<IGetLeagueStandingsUseCase>(
|
||||
DI_TOKENS.GetLeagueStandingsUseCase,
|
||||
new GetLeagueStandingsUseCase(standingRepository),
|
||||
new GetLeagueStandingsUseCaseImpl(leagueStandingsRepository),
|
||||
);
|
||||
|
||||
container.registerInstance<ILeagueStandingsPresenter>(
|
||||
DI_TOKENS.LeagueStandingsPresenter,
|
||||
new LeagueStandingsPresenter(container.resolve<IGetLeagueStandingsUseCase>(DI_TOKENS.GetLeagueStandingsUseCase)),
|
||||
);
|
||||
|
||||
container.registerInstance(
|
||||
|
||||
Reference in New Issue
Block a user