website refactor

This commit is contained in:
2026-01-16 23:30:55 +01:00
parent 9edf64130f
commit b22c705674
86 changed files with 407 additions and 301 deletions

View File

@@ -1,4 +1,4 @@
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { DashboardStatsResult } from '../use-cases/GetDashboardStatsUseCase';
export interface DashboardStatsResponse {

View File

@@ -1,6 +1,6 @@
import { ListUsersResult } from '@core/admin/application/use-cases/ListUsersUseCase';
import type { AdminUser } from '@core/admin/domain/entities/AdminUser';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { UserListResponseDto, UserResponseDto } from '../dtos/UserResponseDto';
export type ListUsersViewModel = UserListResponseDto;

View File

@@ -1,10 +1,10 @@
import type { AdminUser } from '@core/admin/domain/entities/AdminUser';
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { AuthorizationService } from '@core/admin/domain/services/AuthorizationService';
import { UserId } from '@core/admin/domain/value-objects/UserId';
import type { UserRole } from '@core/admin/domain/value-objects/UserRole';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { AdminUser } from '@core/admin/domain/entities/AdminUser';
import type { UserRole } from '@core/admin/domain/value-objects/UserRole';
export interface DashboardStatsResult {
totalUsers: number;

View File

@@ -1,6 +1,6 @@
import type { PageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { Provider } from '@nestjs/common';
import {

View File

@@ -13,7 +13,7 @@ import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepo
import type { CompanyRepository } from '@core/identity/domain/repositories/CompanyRepository';
import type { MagicLinkRepository } from '@core/identity/domain/repositories/MagicLinkRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import {
AUTH_REPOSITORY_TOKEN,

View File

@@ -1,6 +1,6 @@
import { Inject } from '@nestjs/common';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import {
ForgotPasswordUseCase,

View File

@@ -1,7 +1,7 @@
import type { LoginResult } from '@core/identity/application/use-cases/LoginUseCase';
import type { SignupSponsorResult } from '@core/identity/application/use-cases/SignupSponsorUseCase';
import type { SignupResult } from '@core/identity/application/use-cases/SignupUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { AuthenticatedUserDTO } from '../dtos/AuthDto';
type AuthSessionResult = LoginResult | SignupResult | SignupSponsorResult;

View File

@@ -1,5 +1,5 @@
import type { LogoutResult } from '@core/identity/application/use-cases/LogoutUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
export interface CommandResultDTO {
success: boolean;

View File

@@ -1,5 +1,5 @@
import { ForgotPasswordResult } from '@core/identity/application/use-cases/ForgotPasswordUseCase';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { Injectable } from '@nestjs/common';
@Injectable()

View File

@@ -1,5 +1,5 @@
import { ResetPasswordResult } from '@core/identity/application/use-cases/ResetPasswordUseCase';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { Injectable } from '@nestjs/common';
@Injectable()

View File

@@ -1,4 +1,4 @@
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { Inject, Module, OnModuleInit } from '@nestjs/common';
import type { EnsureInitialData } from '../../../../../adapters/bootstrap/EnsureInitialData';
import { SeedDemoUsers } from '../../../../../adapters/bootstrap/SeedDemoUsers';

View File

@@ -5,7 +5,7 @@ import {
type AchievementRepository,
} from '@core/identity/application/use-cases/achievement/CreateAchievementUseCase';
import type { UserRepository } from '@core/identity/domain/repositories/UserRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { Provider } from '@nestjs/common';
import { EnsureInitialData } from '../../../../../adapters/bootstrap/EnsureInitialData';
import { SeedDemoUsers } from '../../../../../adapters/bootstrap/SeedDemoUsers';

View File

@@ -8,7 +8,7 @@ import { RaceRegistrationRepository } from '@core/racing/domain/repositories/Rac
import { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import { StandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { FeedRepository } from '@core/social/domain/repositories/FeedRepository';
import { SocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';

View File

@@ -4,7 +4,7 @@ import { DashboardOverviewDTO } from './dtos/DashboardOverviewDTO';
import { DashboardOverviewPresenter } from './presenters/DashboardOverviewPresenter';
// Core imports
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
// Tokens (standalone to avoid circular imports)
import {

View File

@@ -30,7 +30,7 @@ import { DriverStatsPresenter } from './presenters/DriverStatsPresenter';
import { GetDriverLiveriesPresenter } from './presenters/GetDriverLiveriesPresenter';
// Tokens
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import {
COMPLETE_DRIVER_ONBOARDING_USE_CASE_TOKEN,
GET_DRIVER_LIVERIES_USE_CASE_TOKEN,

View File

@@ -13,7 +13,7 @@ import type { RaceRepository } from '@core/racing/domain/repositories/RaceReposi
import type { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import type { SeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import type { StandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
// Import concrete in-memory implementations
import { getLeagueScoringPresetById, listLeagueScoringPresets } from '@adapters/bootstrap/LeagueScoringPresets';

View File

@@ -58,7 +58,7 @@ import type { LeagueScoringConfigViewModel } from './presenters/LeagueScoringCon
import type { LeagueScoringPresetsViewModel } from './presenters/LeagueScoringPresetsPresenter';
// Core imports
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
// Use cases
import { ApproveLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/ApproveLeagueJoinRequestUseCase';

View File

@@ -1,7 +1,7 @@
import { MediaReference } from '@core/domain/media/MediaReference';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import type { GetAllLeaguesWithCapacityAndScoringResult } from '@core/racing/application/use-cases/GetAllLeaguesWithCapacityAndScoringUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type {
AllLeaguesWithCapacityAndScoringDTO,
LeagueWithCapacityAndScoringDTO,

View File

@@ -1,5 +1,5 @@
import type { GetAllLeaguesWithCapacityResult } from '@core/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { AllLeaguesWithCapacityDTO, LeagueWithCapacityDTO } from '../dtos/AllLeaguesWithCapacityDTO';
export class AllLeaguesWithCapacityPresenter implements UseCaseOutputPort<GetAllLeaguesWithCapacityResult> {

View File

@@ -1,6 +1,6 @@
import { ApproveLeagueJoinRequestResult } from '@core/racing/application/use-cases/ApproveLeagueJoinRequestUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { ApproveLeagueJoinRequestDTO } from '../dtos/ApproveLeagueJoinRequestDTO';
export class ApproveLeagueJoinRequestPresenter implements UseCaseOutputPort<ApproveLeagueJoinRequestResult> {

View File

@@ -1,5 +1,5 @@
import type { GetLeagueAdminPermissionsResult } from '@core/racing/application/use-cases/GetLeagueAdminPermissionsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { LeagueAdminPermissionsDTO } from '../dtos/LeagueAdminPermissionsDTO';
export class GetLeagueAdminPermissionsPresenter implements UseCaseOutputPort<GetLeagueAdminPermissionsResult> {

View File

@@ -1,5 +1,5 @@
import { GetLeagueMembershipsResult } from '@core/racing/application/use-cases/GetLeagueMembershipsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { LeagueMemberDTO } from '../dtos/LeagueMemberDTO';
import { LeagueMembershipsDTO } from '../dtos/LeagueMembershipsDTO';

View File

@@ -1,5 +1,5 @@
import type { GetLeagueOwnerSummaryResult } from '@core/racing/application/use-cases/GetLeagueOwnerSummaryUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { LeagueOwnerSummaryDTO } from '../dtos/LeagueOwnerSummaryDTO';
export class GetLeagueOwnerSummaryPresenter implements UseCaseOutputPort<GetLeagueOwnerSummaryResult> {

View File

@@ -1,5 +1,5 @@
import type { GetLeagueWalletResult } from '@core/racing/application/use-cases/GetLeagueWalletUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { GetLeagueWalletOutputDTO, WalletTransactionDTO } from '../dtos/GetLeagueWalletOutputDTO';
export class GetLeagueWalletPresenter implements UseCaseOutputPort<GetLeagueWalletResult> {

View File

@@ -1,5 +1,5 @@
import type { GetSeasonSponsorshipsResult } from '@core/racing/application/use-cases/GetSeasonSponsorshipsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { SponsorshipDetailDTO } from '../../sponsor/dtos/SponsorshipDetailDTO';
import { GetSeasonSponsorshipsOutputDTO } from '../dtos/GetSeasonSponsorshipsOutputDTO';

View File

@@ -1,5 +1,5 @@
import type { JoinLeagueResult } from '@core/racing/application/use-cases/JoinLeagueUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { JoinLeagueOutputDTO } from '../dtos/JoinLeagueOutputDTO';
export class JoinLeaguePresenter implements UseCaseOutputPort<JoinLeagueResult> {

View File

@@ -1,5 +1,5 @@
import type { GetLeagueFullConfigResult } from '@core/racing/application/use-cases/GetLeagueFullConfigUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { LeagueConfigFormModelDTO } from '../dtos/LeagueConfigFormModelDTO';
export class LeagueConfigPresenter implements UseCaseOutputPort<GetLeagueFullConfigResult> {

View File

@@ -1,5 +1,5 @@
import { GetLeagueJoinRequestsResult } from '@core/racing/application/use-cases/GetLeagueJoinRequestsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { LeagueJoinRequestWithDriverDTO } from '../dtos/LeagueJoinRequestWithDriverDTO';
export interface LeagueJoinRequestsViewModel {

View File

@@ -1,5 +1,5 @@
import { GetLeagueOwnerSummaryResult } from '@core/racing/application/use-cases/GetLeagueOwnerSummaryUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { LeagueOwnerSummaryDTO } from '../dtos/LeagueOwnerSummaryDTO';
export class LeagueOwnerSummaryPresenter implements UseCaseOutputPort<GetLeagueOwnerSummaryResult> {

View File

@@ -1,6 +1,6 @@
import type { GetLeagueRosterJoinRequestsResult } from '@core/racing/application/use-cases/GetLeagueRosterJoinRequestsUseCase';
import type { GetLeagueRosterMembersResult } from '@core/racing/application/use-cases/GetLeagueRosterMembersUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { Injectable } from '@nestjs/common';
import type { DriverDTO } from '../../driver/dtos/DriverDTO';
import type { LeagueRosterJoinRequestDTO } from '../dtos/LeagueRosterJoinRequestDTO';

View File

@@ -1,5 +1,5 @@
import { GetLeagueScheduleResult } from '@core/racing/application/use-cases/GetLeagueScheduleUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { RaceDTO } from '../../race/dtos/RaceDTO';
import { LeagueScheduleDTO } from '../dtos/LeagueScheduleDTO';

View File

@@ -1,7 +1,7 @@
import type { GetLeagueScoringConfigResult } from '@core/racing/application/use-cases/GetLeagueScoringConfigUseCase';
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
export interface LeagueScoringChampionshipViewModel {
id: string;

View File

@@ -1,5 +1,5 @@
import type { ListLeagueScoringPresetsResult } from '@core/racing/application/use-cases/ListLeagueScoringPresetsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { LeagueScoringPresetsDTO } from '../dtos/LeagueScoringPresetsDTO';
export type LeagueScoringPresetsViewModel = LeagueScoringPresetsDTO;

View File

@@ -1,4 +1,4 @@
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type {
CreateLeagueScheduleRaceOutputDTO,

View File

@@ -1,5 +1,5 @@
import type { RejectLeagueJoinRequestResult } from '@core/racing/application/use-cases/RejectLeagueJoinRequestUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { RejectJoinRequestOutputDTO } from '../dtos/RejectJoinRequestOutputDTO';
export class RejectLeagueJoinRequestPresenter implements UseCaseOutputPort<RejectLeagueJoinRequestResult> {

View File

@@ -1,5 +1,5 @@
import type { RemoveLeagueMemberResult } from '@core/racing/application/use-cases/RemoveLeagueMemberUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { RemoveLeagueMemberOutputDTO } from '../dtos/RemoveLeagueMemberOutputDTO';
export class RemoveLeagueMemberPresenter implements UseCaseOutputPort<RemoveLeagueMemberResult> {

View File

@@ -1,5 +1,5 @@
import type { TransferLeagueOwnershipResult } from '@core/racing/application/use-cases/TransferLeagueOwnershipUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { TransferLeagueOwnershipOutputDTO } from '../dtos/TransferLeagueOwnershipOutputDTO';
export class TransferLeagueOwnershipPresenter implements UseCaseOutputPort<TransferLeagueOwnershipResult> {

View File

@@ -1,5 +1,5 @@
import type { UpdateLeagueMemberRoleResult } from '@core/racing/application/use-cases/UpdateLeagueMemberRoleUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { UpdateLeagueMemberRoleOutputDTO } from '../dtos/UpdateLeagueMemberRoleOutputDTO';
export class UpdateLeagueMemberRolePresenter implements UseCaseOutputPort<UpdateLeagueMemberRoleResult> {

View File

@@ -1,5 +1,5 @@
import type { WithdrawFromLeagueWalletResult } from '@core/racing/application/use-cases/WithdrawFromLeagueWalletUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { WithdrawFromLeagueWalletOutputDTO } from '../dtos/WithdrawFromLeagueWalletOutputDTO';
export class WithdrawFromLeagueWalletPresenter implements UseCaseOutputPort<WithdrawFromLeagueWalletResult> {

View File

@@ -1,6 +1,6 @@
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaGenerationService } from '@core/media/domain/services/MediaGenerationService';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import { Body, Controller, Delete, Get, HttpStatus, Inject, Param, Post, Put, Res, UploadedFile, UseInterceptors } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiConsumes, ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger';

View File

@@ -4,11 +4,11 @@ import { Provider } from '@nestjs/common';
import { AvatarGenerationPort } from '@core/media/application/ports/AvatarGenerationPort';
import { FaceValidationPort } from '@core/media/application/ports/FaceValidationPort';
import { MediaStoragePort } from '@core/media/application/ports/MediaStoragePort';
import { IAvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import { IAvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import { IMediaRepository } from '@core/media/domain/repositories/MediaRepository';
import { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
// Import use cases
import { DeleteMediaUseCase } from '@core/media/application/use-cases/DeleteMediaUseCase';
@@ -78,10 +78,10 @@ class MockAvatarGenerationAdapter implements AvatarGenerationPort {
}
class MockLogger implements Logger {
debug(): void {}
info(): void {}
warn(): void {}
error(): void {}
debug(message: string, context?: unknown): void {}
info(message: string, context?: unknown): void {}
warn(message: string, context?: unknown): void {}
error(message: string, error?: Error, context?: unknown): void {}
}
import { MediaResolverAdapter } from '@adapters/media/MediaResolverAdapter';
@@ -128,37 +128,37 @@ export const MediaProviders: Provider[] = createLoggedProviders([
// Use cases - simplified without output ports
{
provide: REQUEST_AVATAR_GENERATION_USE_CASE_TOKEN,
useFactory: (avatarRepo: IAvatarGenerationRepository, faceValidation: FaceValidationPort, avatarGeneration: AvatarGenerationPort, logger: Logger) =>
useFactory: (avatarRepo: AvatarGenerationRepository, faceValidation: FaceValidationPort, avatarGeneration: AvatarGenerationPort, logger: Logger) =>
new RequestAvatarGenerationUseCase(avatarRepo, faceValidation, avatarGeneration, logger),
inject: [AVATAR_GENERATION_REPOSITORY_TOKEN, FACE_VALIDATION_PORT_TOKEN, AVATAR_GENERATION_PORT_TOKEN, LOGGER_TOKEN],
},
{
provide: UPLOAD_MEDIA_USE_CASE_TOKEN,
useFactory: (mediaRepo: IMediaRepository, mediaStorage: MediaStoragePort, logger: Logger) =>
useFactory: (mediaRepo: MediaRepository, mediaStorage: MediaStoragePort, logger: Logger) =>
new UploadMediaUseCase(mediaRepo, mediaStorage, logger),
inject: [MEDIA_REPOSITORY_TOKEN, MEDIA_STORAGE_PORT_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_MEDIA_USE_CASE_TOKEN,
useFactory: (mediaRepo: IMediaRepository, logger: Logger) =>
useFactory: (mediaRepo: MediaRepository, logger: Logger) =>
new GetMediaUseCase(mediaRepo, logger),
inject: [MEDIA_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: DELETE_MEDIA_USE_CASE_TOKEN,
useFactory: (mediaRepo: IMediaRepository, mediaStorage: MediaStoragePort, logger: Logger) =>
useFactory: (mediaRepo: MediaRepository, mediaStorage: MediaStoragePort, logger: Logger) =>
new DeleteMediaUseCase(mediaRepo, mediaStorage, logger),
inject: [MEDIA_REPOSITORY_TOKEN, MEDIA_STORAGE_PORT_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_AVATAR_USE_CASE_TOKEN,
useFactory: (avatarRepo: IAvatarRepository, logger: Logger) =>
useFactory: (avatarRepo: AvatarRepository, logger: Logger) =>
new GetAvatarUseCase(avatarRepo, logger),
inject: [AVATAR_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: UPDATE_AVATAR_USE_CASE_TOKEN,
useFactory: (avatarRepo: IAvatarRepository, logger: Logger) =>
useFactory: (avatarRepo: AvatarRepository, logger: Logger) =>
new UpdateAvatarUseCase(avatarRepo, logger),
inject: [AVATAR_REPOSITORY_TOKEN, LOGGER_TOKEN],
},

View File

@@ -36,7 +36,7 @@ import { RequestAvatarGenerationPresenter } from './presenters/RequestAvatarGene
import { UpdateAvatarPresenter } from './presenters/UpdateAvatarPresenter';
import { UploadMediaPresenter } from './presenters/UploadMediaPresenter';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import {
DELETE_MEDIA_USE_CASE_TOKEN,
GET_AVATAR_USE_CASE_TOKEN,

View File

@@ -2,8 +2,8 @@ import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
import { GetAllNotificationsUseCase } from '@core/notifications/application/use-cases/GetAllNotificationsUseCase';
import { GetUnreadNotificationsUseCase } from '@core/notifications/application/use-cases/GetUnreadNotificationsUseCase';
import { MarkNotificationReadUseCase } from '@core/notifications/application/use-cases/MarkNotificationReadUseCase';
import { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { Provider } from '@nestjs/common';
import { NOTIFICATION_REPOSITORY_TOKEN } from '../../persistence/notifications/NotificationsPersistenceTokens';
import {
@@ -20,17 +20,17 @@ export const NotificationsProviders: Provider[] = [
},
{
provide: GET_UNREAD_NOTIFICATIONS_USE_CASE_TOKEN,
useFactory: (repo: INotificationRepository, logger: Logger) => new GetUnreadNotificationsUseCase(repo, logger),
useFactory: (repo: NotificationRepository, logger: Logger) => new GetUnreadNotificationsUseCase(repo, logger),
inject: [NOTIFICATION_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_ALL_NOTIFICATIONS_USE_CASE_TOKEN,
useFactory: (repo: INotificationRepository, logger: Logger) => new GetAllNotificationsUseCase(repo, logger),
useFactory: (repo: NotificationRepository, logger: Logger) => new GetAllNotificationsUseCase(repo, logger),
inject: [NOTIFICATION_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: MARK_NOTIFICATION_READ_USE_CASE_TOKEN,
useFactory: (repo: INotificationRepository, logger: Logger) => new MarkNotificationReadUseCase(repo, logger),
useFactory: (repo: NotificationRepository, logger: Logger) => new MarkNotificationReadUseCase(repo, logger),
inject: [NOTIFICATION_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
];

View File

@@ -1,10 +1,10 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import type { IMemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import type { MemberPaymentRepository, MembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { TransactionRepository, WalletRepository } from '@core/payments/domain/repositories/WalletRepository';
// Import use cases
import { AwardPrizeUseCase } from '@core/payments/application/use-cases/AwardPrizeUseCase';
@@ -60,65 +60,65 @@ export const PaymentsProviders: Provider[] = [
// Use cases (use cases receive repositories, services receive use cases)
{
provide: GET_PAYMENTS_USE_CASE_TOKEN,
useFactory: (paymentRepo: IPaymentRepository) => new GetPaymentsUseCase(paymentRepo),
useFactory: (paymentRepo: PaymentRepository) => new GetPaymentsUseCase(paymentRepo),
inject: [PAYMENT_REPOSITORY_TOKEN],
},
{
provide: CREATE_PAYMENT_USE_CASE_TOKEN,
useFactory: (paymentRepo: IPaymentRepository) => new CreatePaymentUseCase(paymentRepo),
useFactory: (paymentRepo: PaymentRepository) => new CreatePaymentUseCase(paymentRepo),
inject: [PAYMENT_REPOSITORY_TOKEN],
},
{
provide: UPDATE_PAYMENT_STATUS_USE_CASE_TOKEN,
useFactory: (paymentRepo: IPaymentRepository) => new UpdatePaymentStatusUseCase(paymentRepo),
useFactory: (paymentRepo: PaymentRepository) => new UpdatePaymentStatusUseCase(paymentRepo),
inject: [PAYMENT_REPOSITORY_TOKEN],
},
{
provide: GET_MEMBERSHIP_FEES_USE_CASE_TOKEN,
useFactory: (membershipFeeRepo: IMembershipFeeRepository, memberPaymentRepo: IMemberPaymentRepository) =>
useFactory: (membershipFeeRepo: MembershipFeeRepository, memberPaymentRepo: MemberPaymentRepository) =>
new GetMembershipFeesUseCase(membershipFeeRepo, memberPaymentRepo),
inject: [MEMBERSHIP_FEE_REPOSITORY_TOKEN, MEMBER_PAYMENT_REPOSITORY_TOKEN],
},
{
provide: UPSERT_MEMBERSHIP_FEE_USE_CASE_TOKEN,
useFactory: (membershipFeeRepo: IMembershipFeeRepository) => new UpsertMembershipFeeUseCase(membershipFeeRepo),
useFactory: (membershipFeeRepo: MembershipFeeRepository) => new UpsertMembershipFeeUseCase(membershipFeeRepo),
inject: [MEMBERSHIP_FEE_REPOSITORY_TOKEN],
},
{
provide: UPDATE_MEMBER_PAYMENT_USE_CASE_TOKEN,
useFactory: (membershipFeeRepo: IMembershipFeeRepository, memberPaymentRepo: IMemberPaymentRepository) =>
useFactory: (membershipFeeRepo: MembershipFeeRepository, memberPaymentRepo: MemberPaymentRepository) =>
new UpdateMemberPaymentUseCase(membershipFeeRepo, memberPaymentRepo),
inject: [MEMBERSHIP_FEE_REPOSITORY_TOKEN, MEMBER_PAYMENT_REPOSITORY_TOKEN],
},
{
provide: GET_PRIZES_USE_CASE_TOKEN,
useFactory: (prizeRepo: IPrizeRepository) => new GetPrizesUseCase(prizeRepo),
useFactory: (prizeRepo: PrizeRepository) => new GetPrizesUseCase(prizeRepo),
inject: [PRIZE_REPOSITORY_TOKEN],
},
{
provide: CREATE_PRIZE_USE_CASE_TOKEN,
useFactory: (prizeRepo: IPrizeRepository) => new CreatePrizeUseCase(prizeRepo),
useFactory: (prizeRepo: PrizeRepository) => new CreatePrizeUseCase(prizeRepo),
inject: [PRIZE_REPOSITORY_TOKEN],
},
{
provide: AWARD_PRIZE_USE_CASE_TOKEN,
useFactory: (prizeRepo: IPrizeRepository) => new AwardPrizeUseCase(prizeRepo),
useFactory: (prizeRepo: PrizeRepository) => new AwardPrizeUseCase(prizeRepo),
inject: [PRIZE_REPOSITORY_TOKEN],
},
{
provide: DELETE_PRIZE_USE_CASE_TOKEN,
useFactory: (prizeRepo: IPrizeRepository) => new DeletePrizeUseCase(prizeRepo),
useFactory: (prizeRepo: PrizeRepository) => new DeletePrizeUseCase(prizeRepo),
inject: [PRIZE_REPOSITORY_TOKEN],
},
{
provide: GET_WALLET_USE_CASE_TOKEN,
useFactory: (walletRepo: IWalletRepository, transactionRepo: ITransactionRepository) =>
useFactory: (walletRepo: WalletRepository, transactionRepo: TransactionRepository) =>
new GetWalletUseCase(walletRepo, transactionRepo),
inject: [WALLET_REPOSITORY_TOKEN, TRANSACTION_REPOSITORY_TOKEN],
},
{
provide: PROCESS_WALLET_TRANSACTION_USE_CASE_TOKEN,
useFactory: (walletRepo: IWalletRepository, transactionRepo: ITransactionRepository) =>
useFactory: (walletRepo: WalletRepository, transactionRepo: TransactionRepository) =>
new ProcessWalletTransactionUseCase(walletRepo, transactionRepo),
inject: [WALLET_REPOSITORY_TOKEN, TRANSACTION_REPOSITORY_TOKEN],
},

View File

@@ -1,4 +1,4 @@
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import { Inject, Injectable } from '@nestjs/common';
// Use cases

View File

@@ -1,5 +1,5 @@
import type { CreatePaymentResult } from '@core/payments/application/use-cases/CreatePaymentUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { CreatePaymentOutput } from '../dtos/PaymentsDto';
export class CreatePaymentPresenter implements UseCaseOutputPort<CreatePaymentResult> {

View File

@@ -1,5 +1,5 @@
import type { GetPaymentsResult } from '@core/payments/application/use-cases/GetPaymentsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetPaymentsOutput } from '../dtos/PaymentsDto';
export class GetPaymentsPresenter implements UseCaseOutputPort<GetPaymentsResult> {

View File

@@ -1,5 +1,5 @@
import type { UpdatePaymentStatusResult } from '@core/payments/application/use-cases/UpdatePaymentStatusUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { UpdatePaymentStatusOutput } from '../dtos/PaymentsDto';
export class UpdatePaymentStatusPresenter implements UseCaseOutputPort<UpdatePaymentStatusResult> {

View File

@@ -1,10 +1,10 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { Logger } from '@core/shared/domain/Logger';
// Import concrete in-memory implementations
import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
@@ -31,9 +31,9 @@ export const ProtestsProviders: Provider[] = [
{
provide: ReviewProtestUseCase,
useFactory: (
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
protestRepo: ProtestRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => new ReviewProtestUseCase(protestRepo, raceRepo, leagueMembershipRepo, logger),
inject: [

View File

@@ -3,7 +3,7 @@ import type {
ReviewProtestResult,
ReviewProtestUseCase,
} from '@core/racing/application/use-cases/ReviewProtestUseCase';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import { beforeEach, describe, expect, it, vi, type MockedFunction } from 'vitest';
import { ProtestsService } from './ProtestsService';

View File

@@ -1,4 +1,4 @@
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import { Inject, Injectable } from '@nestjs/common';
// Use cases

View File

@@ -1,5 +1,5 @@
import type { ReviewProtestApplicationError, ReviewProtestResult } from '@core/racing/application/use-cases/ReviewProtestUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
export interface ReviewProtestResponseDTO {
success: boolean;

View File

@@ -2,16 +2,16 @@ import type { Provider } from '@nestjs/common';
// Import core interfaces
import type { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { IPenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { PenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { StandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/domain/Logger';
// Import concrete in-memory implementations
import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
@@ -149,8 +149,8 @@ export const RaceProviders: Provider[] = [
{
provide: GetAllRacesUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
logger: Logger,
) => {
return new GetAllRacesUseCase(raceRepo, leagueRepo, logger);
@@ -160,7 +160,7 @@ export const RaceProviders: Provider[] = [
{
provide: GetTotalRacesUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRepo: RaceRepository,
) => {
return new GetTotalRacesUseCase(raceRepo);
},
@@ -169,11 +169,11 @@ export const RaceProviders: Provider[] = [
{
provide: ImportRaceResultsApiUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
resultRepo: IResultRepository,
driverRepo: IDriverRepository,
standingRepo: IStandingRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
resultRepo: ResultRepository,
driverRepo: DriverRepository,
standingRepo: StandingRepository,
logger: Logger,
) => {
return new ImportRaceResultsApiUseCase(
@@ -197,12 +197,12 @@ export const RaceProviders: Provider[] = [
{
provide: GetRaceDetailUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
driverRepo: IDriverRepository,
raceRegRepo: IRaceRegistrationRepository,
resultRepo: IResultRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
driverRepo: DriverRepository,
raceRegRepo: RaceRegistrationRepository,
resultRepo: ResultRepository,
leagueMembershipRepo: LeagueMembershipRepository,
) => {
return new GetRaceDetailUseCase(
raceRepo,
@@ -225,8 +225,8 @@ export const RaceProviders: Provider[] = [
{
provide: GetRacesPageDataUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
logger: Logger,
) => {
return new GetRacesPageDataUseCase(
@@ -240,8 +240,8 @@ export const RaceProviders: Provider[] = [
{
provide: GetAllRacesPageDataUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
logger: Logger,
) => {
return new GetAllRacesPageDataUseCase(
@@ -255,11 +255,11 @@ export const RaceProviders: Provider[] = [
{
provide: GetRaceResultsDetailUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
resultRepo: IResultRepository,
driverRepo: IDriverRepository,
penaltyRepo: IPenaltyRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
resultRepo: ResultRepository,
driverRepo: DriverRepository,
penaltyRepo: PenaltyRepository,
) => {
return new GetRaceResultsDetailUseCase(
raceRepo,
@@ -280,9 +280,9 @@ export const RaceProviders: Provider[] = [
{
provide: GetRaceWithSOFUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRegRepo: IRaceRegistrationRepository,
resultRepo: IResultRepository,
raceRepo: RaceRepository,
raceRegRepo: RaceRegistrationRepository,
resultRepo: ResultRepository,
driverRatingProvider: DriverRatingProvider,
) => {
return new GetRaceWithSOFUseCase(
@@ -305,8 +305,8 @@ export const RaceProviders: Provider[] = [
{
provide: GetRaceProtestsUseCase,
useFactory: (
protestRepo: IProtestRepository,
driverRepo: IDriverRepository,
protestRepo: ProtestRepository,
driverRepo: DriverRepository,
) => {
return new GetRaceProtestsUseCase(
protestRepo,
@@ -318,8 +318,8 @@ export const RaceProviders: Provider[] = [
{
provide: GetRacePenaltiesUseCase,
useFactory: (
penaltyRepo: IPenaltyRepository,
driverRepo: IDriverRepository,
penaltyRepo: PenaltyRepository,
driverRepo: DriverRepository,
) => {
return new GetRacePenaltiesUseCase(
penaltyRepo,
@@ -331,8 +331,8 @@ export const RaceProviders: Provider[] = [
{
provide: RegisterForRaceUseCase,
useFactory: (
raceRegRepo: IRaceRegistrationRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
raceRegRepo: RaceRegistrationRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => {
return new RegisterForRaceUseCase(
@@ -346,8 +346,8 @@ export const RaceProviders: Provider[] = [
{
provide: WithdrawFromRaceUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRegRepo: IRaceRegistrationRepository,
raceRepo: RaceRepository,
raceRegRepo: RaceRegistrationRepository,
logger: Logger,
) => {
return new WithdrawFromRaceUseCase(
@@ -361,7 +361,7 @@ export const RaceProviders: Provider[] = [
{
provide: CancelRaceUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRepo: RaceRepository,
logger: Logger,
) => {
return new CancelRaceUseCase(
@@ -374,10 +374,10 @@ export const RaceProviders: Provider[] = [
{
provide: CompleteRaceUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRegRepo: IRaceRegistrationRepository,
resultRepo: IResultRepository,
standingRepo: IStandingRepository,
raceRepo: RaceRepository,
raceRegRepo: RaceRegistrationRepository,
resultRepo: ResultRepository,
standingRepo: StandingRepository,
driverRatingProvider: DriverRatingProvider,
) => {
return new CompleteRaceUseCase(
@@ -402,7 +402,7 @@ export const RaceProviders: Provider[] = [
{
provide: ReopenRaceUseCase,
useFactory: (
raceRepo: IRaceRepository,
raceRepo: RaceRepository,
logger: Logger,
) => {
return new ReopenRaceUseCase(
@@ -415,11 +415,11 @@ export const RaceProviders: Provider[] = [
{
provide: ImportRaceResultsUseCase,
useFactory: (
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
resultRepo: IResultRepository,
driverRepo: IDriverRepository,
standingRepo: IStandingRepository,
raceRepo: RaceRepository,
leagueRepo: LeagueRepository,
resultRepo: ResultRepository,
driverRepo: DriverRepository,
standingRepo: StandingRepository,
logger: Logger,
) => {
return new ImportRaceResultsUseCase(
@@ -443,9 +443,9 @@ export const RaceProviders: Provider[] = [
{
provide: FileProtestUseCase,
useFactory: (
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
protestRepo: ProtestRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
) => {
return new FileProtestUseCase(
protestRepo,
@@ -458,9 +458,9 @@ export const RaceProviders: Provider[] = [
{
provide: QuickPenaltyUseCase,
useFactory: (
penaltyRepo: IPenaltyRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
penaltyRepo: PenaltyRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => {
return new QuickPenaltyUseCase(
@@ -475,10 +475,10 @@ export const RaceProviders: Provider[] = [
{
provide: ApplyPenaltyUseCase,
useFactory: (
penaltyRepo: IPenaltyRepository,
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
penaltyRepo: PenaltyRepository,
protestRepo: ProtestRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => {
return new ApplyPenaltyUseCase(
@@ -494,9 +494,9 @@ export const RaceProviders: Provider[] = [
{
provide: RequestProtestDefenseUseCase,
useFactory: (
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
protestRepo: ProtestRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => {
return new RequestProtestDefenseUseCase(
@@ -511,9 +511,9 @@ export const RaceProviders: Provider[] = [
{
provide: ReviewProtestUseCase,
useFactory: (
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
protestRepo: ProtestRepository,
raceRepo: RaceRepository,
leagueMembershipRepo: LeagueMembershipRepository,
logger: Logger,
) => {
return new ReviewProtestUseCase(

View File

@@ -8,7 +8,7 @@ import { RegisterForRaceParamsDTO } from './dtos/RegisterForRaceParamsDTO';
import { WithdrawFromRaceParamsDTO } from './dtos/WithdrawFromRaceParamsDTO';
// Core imports
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
// Use cases
import { CancelRaceUseCase } from '@core/racing/application/use-cases/CancelRaceUseCase';

View File

@@ -1,5 +1,5 @@
import type { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import type { IImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type { ImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type { GetRaceDetailResult } from '@core/racing/application/use-cases/GetRaceDetailUseCase';
import type { GetRaceDetailParamsDTO } from '../dtos/GetRaceDetailParamsDTO';
import type { RaceDetailDTO } from '../dtos/RaceDetailDTO';
@@ -16,7 +16,7 @@ export class RaceDetailPresenter {
constructor(
private readonly driverRatingProvider: DriverRatingProvider,
private readonly imageService: IImageServicePort,
private readonly imageService: ImageServicePort,
private readonly params: GetRaceDetailParamsDTO,
) {}

View File

@@ -13,7 +13,7 @@ export class RacePenaltiesPresenter {
present(result: GetRacePenaltiesResult): void {
const penalties: RacePenaltyDTO[] = result.penalties.map(penalty => ({
id: penalty.id,
id: penalty.id.toString(),
driverId: penalty.driverId,
type: penalty.type,
value: penalty.value ?? 0,

View File

@@ -1,4 +1,4 @@
import type { IImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type { ImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type {
GetRaceResultsDetailErrorCode,
GetRaceResultsDetailResult,
@@ -17,7 +17,7 @@ export type GetRaceResultsDetailApplicationError = ApplicationErrorCode<
export class RaceResultsDetailPresenter {
private result: GetRaceResultsDetailResult | null = null;
constructor(private readonly imageService: IImageServicePort) {}
constructor(private readonly imageService: ImageServicePort) {}
present(result: GetRaceResultsDetailResult): void {
this.result = result;

View File

@@ -3,18 +3,18 @@ import { SponsorService } from './SponsorService';
// Import core interfaces
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { ILeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
import { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { ISeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import { ISponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import { ISponsorshipPricingRepository } from '@core/racing/domain/repositories/SponsorshipPricingRepository';
import { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { WalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { LeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
import { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { SeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import { SponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import { SponsorshipPricingRepository } from '@core/racing/domain/repositories/SponsorshipPricingRepository';
import { SponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { GetSponsorBillingUseCase } from '@core/payments/application/use-cases/GetSponsorBillingUseCase';
import { AcceptSponsorshipRequestUseCase } from '@core/racing/application/use-cases/AcceptSponsorshipRequestUseCase';
@@ -33,18 +33,18 @@ import { InMemoryPaymentRepository } from '@adapters/payments/persistence/inmemo
import { InMemoryWalletRepository } from '@adapters/payments/persistence/inmemory/InMemoryWalletRepository';
// Define injection tokens
export const SPONSOR_REPOSITORY_TOKEN = 'ISponsorRepository';
export const SEASON_SPONSORSHIP_REPOSITORY_TOKEN = 'ISeasonSponsorshipRepository';
export const SEASON_REPOSITORY_TOKEN = 'ISeasonRepository';
export const LEAGUE_REPOSITORY_TOKEN = 'ILeagueRepository';
export const LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN = 'ILeagueMembershipRepository';
export const RACE_REPOSITORY_TOKEN = 'IRaceRepository';
export const SPONSORSHIP_PRICING_REPOSITORY_TOKEN = 'ISponsorshipPricingRepository';
export const SPONSORSHIP_REQUEST_REPOSITORY_TOKEN = 'ISponsorshipRequestRepository';
export const PAYMENT_REPOSITORY_TOKEN = 'IPaymentRepository';
export const WALLET_REPOSITORY_TOKEN = 'IWalletRepository';
export const LEAGUE_WALLET_REPOSITORY_TOKEN = 'ILeagueWalletRepository';
export const NOTIFICATION_SERVICE_TOKEN = 'INotificationService';
export const SPONSOR_REPOSITORY_TOKEN = 'SponsorRepository';
export const SEASON_SPONSORSHIP_REPOSITORY_TOKEN = 'SeasonSponsorshipRepository';
export const SEASON_REPOSITORY_TOKEN = 'SeasonRepository';
export const LEAGUE_REPOSITORY_TOKEN = 'LeagueRepository';
export const LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN = 'LeagueMembershipRepository';
export const RACE_REPOSITORY_TOKEN = 'RaceRepository';
export const SPONSORSHIP_PRICING_REPOSITORY_TOKEN = 'SponsorshipPricingRepository';
export const SPONSORSHIP_REQUEST_REPOSITORY_TOKEN = 'SponsorshipRequestRepository';
export const PAYMENT_REPOSITORY_TOKEN = 'PaymentRepository';
export const WALLET_REPOSITORY_TOKEN = 'WalletRepository';
export const LEAGUE_WALLET_REPOSITORY_TOKEN = 'LeagueWalletRepository';
export const NOTIFICATION_SERVICE_TOKEN = 'NotificationService';
export const LOGGER_TOKEN = 'Logger';
// Use case / application service tokens
@@ -88,23 +88,23 @@ export const SponsorProviders: Provider[] = [
// Use cases
{
provide: GET_SPONSORS_USE_CASE_TOKEN,
useFactory: (sponsorRepo: ISponsorRepository) => new GetSponsorsUseCase(sponsorRepo),
useFactory: (sponsorRepo: SponsorRepository) => new GetSponsorsUseCase(sponsorRepo),
inject: [SPONSOR_REPOSITORY_TOKEN],
},
{
provide: CREATE_SPONSOR_USE_CASE_TOKEN,
useFactory: (sponsorRepo: ISponsorRepository, logger: Logger) => new CreateSponsorUseCase(sponsorRepo, logger),
useFactory: (sponsorRepo: SponsorRepository, logger: Logger) => new CreateSponsorUseCase(sponsorRepo, logger),
inject: [SPONSOR_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_SPONSOR_DASHBOARD_USE_CASE_TOKEN,
useFactory: (
sponsorRepo: ISponsorRepository,
seasonSponsorshipRepo: ISeasonSponsorshipRepository,
seasonRepo: ISeasonRepository,
leagueRepo: ILeagueRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
raceRepo: IRaceRepository,
sponsorRepo: SponsorRepository,
seasonSponsorshipRepo: SeasonSponsorshipRepository,
seasonRepo: SeasonRepository,
leagueRepo: LeagueRepository,
leagueMembershipRepo: LeagueMembershipRepository,
raceRepo: RaceRepository,
) => new GetSponsorDashboardUseCase(sponsorRepo, seasonSponsorshipRepo, seasonRepo, leagueRepo, leagueMembershipRepo, raceRepo),
inject: [
SPONSOR_REPOSITORY_TOKEN,
@@ -118,12 +118,12 @@ export const SponsorProviders: Provider[] = [
{
provide: GET_SPONSOR_SPONSORSHIPS_USE_CASE_TOKEN,
useFactory: (
sponsorRepo: ISponsorRepository,
seasonSponsorshipRepo: ISeasonSponsorshipRepository,
seasonRepo: ISeasonRepository,
leagueRepo: ILeagueRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
raceRepo: IRaceRepository,
sponsorRepo: SponsorRepository,
seasonSponsorshipRepo: SeasonSponsorshipRepository,
seasonRepo: SeasonRepository,
leagueRepo: LeagueRepository,
leagueMembershipRepo: LeagueMembershipRepository,
raceRepo: RaceRepository,
) => new GetSponsorSponsorshipsUseCase(sponsorRepo, seasonSponsorshipRepo, seasonRepo, leagueRepo, leagueMembershipRepo, raceRepo),
inject: [
SPONSOR_REPOSITORY_TOKEN,
@@ -137,8 +137,8 @@ export const SponsorProviders: Provider[] = [
{
provide: GET_SPONSOR_BILLING_USE_CASE_TOKEN,
useFactory: (
paymentRepo: IPaymentRepository,
seasonSponsorshipRepo: ISeasonSponsorshipRepository,
paymentRepo: PaymentRepository,
seasonSponsorshipRepo: SeasonSponsorshipRepository,
) => {
return new GetSponsorBillingUseCase(paymentRepo, seasonSponsorshipRepo);
},
@@ -147,7 +147,7 @@ export const SponsorProviders: Provider[] = [
{
provide: GET_ENTITY_SPONSORSHIP_PRICING_USE_CASE_TOKEN,
useFactory: (
sponsorshipPricingRepo: ISponsorshipPricingRepository,
sponsorshipPricingRepo: SponsorshipPricingRepository,
logger: Logger,
) => new GetEntitySponsorshipPricingUseCase(sponsorshipPricingRepo, logger),
inject: [
@@ -157,26 +157,26 @@ export const SponsorProviders: Provider[] = [
},
{
provide: GET_SPONSOR_USE_CASE_TOKEN,
useFactory: (sponsorRepo: ISponsorRepository) => new GetSponsorUseCase(sponsorRepo),
useFactory: (sponsorRepo: SponsorRepository) => new GetSponsorUseCase(sponsorRepo),
inject: [SPONSOR_REPOSITORY_TOKEN],
},
{
provide: GET_PENDING_SPONSORSHIP_REQUESTS_USE_CASE_TOKEN,
useFactory: (
sponsorshipRequestRepo: ISponsorshipRequestRepository,
sponsorRepo: ISponsorRepository,
sponsorshipRequestRepo: SponsorshipRequestRepository,
sponsorRepo: SponsorRepository,
) => new GetPendingSponsorshipRequestsUseCase(sponsorshipRequestRepo, sponsorRepo),
inject: [SPONSORSHIP_REQUEST_REPOSITORY_TOKEN, SPONSOR_REPOSITORY_TOKEN],
},
{
provide: ACCEPT_SPONSORSHIP_REQUEST_USE_CASE_TOKEN,
useFactory: (
sponsorshipRequestRepo: ISponsorshipRequestRepository,
seasonSponsorshipRepo: ISeasonSponsorshipRepository,
seasonRepo: ISeasonRepository,
sponsorshipRequestRepo: SponsorshipRequestRepository,
seasonSponsorshipRepo: SeasonSponsorshipRepository,
seasonRepo: SeasonRepository,
notificationService: NotificationService,
walletRepository: IWalletRepository,
leagueWalletRepository: ILeagueWalletRepository,
walletRepository: WalletRepository,
leagueWalletRepository: LeagueWalletRepository,
logger: Logger,
) => {
// Create a mock payment processor function
@@ -209,7 +209,7 @@ export const SponsorProviders: Provider[] = [
{
provide: REJECT_SPONSORSHIP_REQUEST_USE_CASE_TOKEN,
useFactory: (
sponsorshipRequestRepo: ISponsorshipRequestRepository,
sponsorshipRequestRepo: SponsorshipRequestRepository,
logger: Logger,
) => new RejectSponsorshipRequestUseCase(sponsorshipRequestRepo, logger),
inject: [SPONSORSHIP_REQUEST_REPOSITORY_TOKEN, LOGGER_TOKEN],

View File

@@ -10,7 +10,7 @@ import type { GetSponsorUseCase } from '@core/racing/application/use-cases/GetSp
import type { RejectSponsorshipRequestUseCase } from '@core/racing/application/use-cases/RejectSponsorshipRequestUseCase';
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import { Money } from '@core/racing/domain/value-objects/Money';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import { beforeEach, describe, expect, it, Mock, vi } from 'vitest';
import type { CreateSponsorInputDTO } from './dtos/CreateSponsorInputDTO';

View File

@@ -35,7 +35,7 @@ import { GetSponsorsUseCase } from '@core/racing/application/use-cases/GetSponso
import { GetSponsorUseCase } from '@core/racing/application/use-cases/GetSponsorUseCase';
import { RejectSponsorshipRequestUseCase } from '@core/racing/application/use-cases/RejectSponsorshipRequestUseCase';
import type { SponsorableEntityType } from '@core/racing/domain/entities/SponsorshipRequest';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
// Tokens
import {

View File

@@ -30,11 +30,11 @@ export {
// Import core interfaces
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { ITeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { TeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { TeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { TeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { Logger } from '@core/shared/domain/Logger';
// Import concrete implementations
import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
@@ -103,55 +103,55 @@ export const TeamProviders: Provider[] = [
// Use Cases
{
provide: GET_ALL_TEAMS_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository, statsRepo: ITeamStatsRepository, logger: Logger) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository, statsRepo: TeamStatsRepository, logger: Logger) =>
new GetAllTeamsUseCase(teamRepo, membershipRepo, statsRepo, logger),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN, TEAM_STATS_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_TEAM_DETAILS_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository) =>
new GetTeamDetailsUseCase(teamRepo, membershipRepo),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN],
},
{
provide: GET_TEAM_MEMBERS_USE_CASE_TOKEN,
useFactory: (membershipRepo: ITeamMembershipRepository, driverRepo: IDriverRepository, teamRepo: ITeamRepository, logger: Logger) =>
useFactory: (membershipRepo: TeamMembershipRepository, driverRepo: DriverRepository, teamRepo: TeamRepository, logger: Logger) =>
new GetTeamMembersUseCase(membershipRepo, driverRepo, teamRepo, logger),
inject: [TEAM_MEMBERSHIP_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN, TEAM_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_TEAM_JOIN_REQUESTS_USE_CASE_TOKEN,
useFactory: (membershipRepo: ITeamMembershipRepository, driverRepo: IDriverRepository, teamRepo: ITeamRepository) =>
useFactory: (membershipRepo: TeamMembershipRepository, driverRepo: DriverRepository, teamRepo: TeamRepository) =>
new GetTeamJoinRequestsUseCase(membershipRepo, driverRepo, teamRepo),
inject: [TEAM_MEMBERSHIP_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN, TEAM_REPOSITORY_TOKEN],
},
{
provide: CREATE_TEAM_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository, logger: Logger) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository, logger: Logger) =>
new CreateTeamUseCase(teamRepo, membershipRepo, logger),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: UPDATE_TEAM_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository) =>
new UpdateTeamUseCase(teamRepo, membershipRepo),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN],
},
{
provide: GET_DRIVER_TEAM_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository, logger: Logger) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository, logger: Logger) =>
new GetDriverTeamUseCase(teamRepo, membershipRepo, logger),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GET_TEAM_MEMBERSHIP_USE_CASE_TOKEN,
useFactory: (membershipRepo: ITeamMembershipRepository, logger: Logger) =>
useFactory: (membershipRepo: TeamMembershipRepository, logger: Logger) =>
new GetTeamMembershipUseCase(membershipRepo, logger),
inject: [TEAM_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: JOIN_TEAM_USE_CASE_TOKEN,
useFactory: (teamRepo: ITeamRepository, membershipRepo: ITeamMembershipRepository, logger: Logger) =>
useFactory: (teamRepo: TeamRepository, membershipRepo: TeamMembershipRepository, logger: Logger) =>
new JoinTeamUseCase(teamRepo, membershipRepo, logger),
inject: [TEAM_REPOSITORY_TOKEN, TEAM_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},

View File

@@ -6,7 +6,7 @@ import { GetTeamJoinRequestsUseCase } from '@core/racing/application/use-cases/G
import { GetTeamMembershipUseCase } from '@core/racing/application/use-cases/GetTeamMembershipUseCase';
import { GetTeamMembersUseCase } from '@core/racing/application/use-cases/GetTeamMembersUseCase';
import { UpdateTeamUseCase } from '@core/racing/application/use-cases/UpdateTeamUseCase';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import { beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import type { CreateTeamInputDTO } from './dtos/CreateTeamInputDTO';

View File

@@ -11,7 +11,7 @@ import { UpdateTeamInputDTO } from './dtos/UpdateTeamInputDTO';
import { UpdateTeamOutputDTO } from './dtos/UpdateTeamOutputDTO';
// Core imports
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
// Use cases
import { CreateTeamInput, CreateTeamUseCase } from '@core/racing/application/use-cases/CreateTeamUseCase';

View File

@@ -1,7 +1,7 @@
import { MediaReference } from '@core/domain/media/MediaReference';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import type { GetAllTeamsResult } from '@core/racing/application/use-cases/GetAllTeamsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { GetAllTeamsOutputDTO } from '../dtos/GetAllTeamsOutputDTO';
import { TeamListItemDTO } from '../dtos/TeamListItemDTO';

View File

@@ -1,5 +1,5 @@
import type { CreateTeamResult } from '@core/racing/application/use-cases/CreateTeamUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { CreateTeamOutputDTO } from '../dtos/CreateTeamOutputDTO';
export class CreateTeamPresenter implements UseCaseOutputPort<CreateTeamResult> {

View File

@@ -1,5 +1,5 @@
import type { GetDriverTeamResult } from '@core/racing/application/use-cases/GetDriverTeamUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { GetDriverTeamOutputDTO } from '../dtos/GetDriverTeamOutputDTO';
export class DriverTeamPresenter implements UseCaseOutputPort<GetDriverTeamResult> {

View File

@@ -1,5 +1,5 @@
import type { GetTeamDetailsResult } from '@core/racing/application/use-cases/GetTeamDetailsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetTeamDetailsOutputDTO } from '../dtos/GetTeamDetailsOutputDTO';
export class TeamDetailsPresenter implements UseCaseOutputPort<GetTeamDetailsResult> {

View File

@@ -1,5 +1,5 @@
import type { GetTeamJoinRequestsResult } from '@core/racing/application/use-cases/GetTeamJoinRequestsUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetTeamJoinRequestsOutputDTO } from '../dtos/GetTeamJoinRequestsOutputDTO';
export class TeamJoinRequestsPresenter implements UseCaseOutputPort<GetTeamJoinRequestsResult> {

View File

@@ -1,5 +1,5 @@
import type { GetTeamMembersResult } from '@core/racing/application/use-cases/GetTeamMembersUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetTeamMembersOutputDTO } from '../dtos/GetTeamMembersOutputDTO';
export class TeamMembersPresenter implements UseCaseOutputPort<GetTeamMembersResult> {

View File

@@ -1,5 +1,5 @@
import type { GetTeamMembershipResult } from '@core/racing/application/use-cases/GetTeamMembershipUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetTeamMembershipOutputDTO } from '../dtos/GetTeamMembershipOutputDTO';
export class TeamMembershipPresenter implements UseCaseOutputPort<GetTeamMembershipResult> {

View File

@@ -1,5 +1,5 @@
import type { GetTeamsLeaderboardResult } from '@core/racing/application/use-cases/GetTeamsLeaderboardUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { GetTeamsLeaderboardOutputDTO } from '../dtos/GetTeamsLeaderboardOutputDTO';
export class TeamsLeaderboardPresenter implements UseCaseOutputPort<GetTeamsLeaderboardResult> {

View File

@@ -1,5 +1,5 @@
import type { UpdateTeamResult } from '@core/racing/application/use-cases/UpdateTeamUseCase';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import type { UpdateTeamOutputDTO } from '../dtos/UpdateTeamOutputDTO';
export class UpdateTeamPresenter implements UseCaseOutputPort<UpdateTeamResult> {

View File

@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { InMemoryAchievementRepository } from '@adapters/identity/persistence/inmemory/InMemoryAchievementRepository';

View File

@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import type { PageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
import type { AnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/AnalyticsSnapshotRepository';

View File

@@ -4,7 +4,7 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { StoredUser } from '@core/identity/domain/repositories/UserRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { InMemoryAuthRepository } from '@adapters/identity/persistence/inmemory/InMemoryAuthRepository';
import { InMemoryCompanyRepository } from '@adapters/identity/persistence/inmemory/InMemoryCompanyRepository';

View File

@@ -2,25 +2,25 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import type { IAvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import type { IAvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import type { IMediaRepository } from '@core/media/domain/repositories/MediaRepository';
import type { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import type { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import type { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
import { InMemoryAvatarGenerationRepository } from '@adapters/media/persistence/inmemory/InMemoryAvatarGenerationRepository';
import { AVATAR_GENERATION_REPOSITORY_TOKEN, AVATAR_REPOSITORY_TOKEN, MEDIA_REPOSITORY_TOKEN } from '../media/MediaPersistenceTokens';
// Mock implementations for Media and Avatar repositories (inmemory only has AvatarGeneration)
class MockMediaRepository implements IMediaRepository {
class MockMediaRepository implements MediaRepository {
async save(): Promise<void> {}
async findById(): Promise<null> { return null; }
async findByUploadedBy(): Promise<[]> { return []; }
async delete(): Promise<void> {}
}
class MockAvatarRepository implements IAvatarRepository {
class MockAvatarRepository implements AvatarRepository {
async save(): Promise<void> {}
async findById(): Promise<null> { return null; }
async findActiveByDriverId(): Promise<null> { return null; }
@@ -33,7 +33,7 @@ class MockAvatarRepository implements IAvatarRepository {
providers: [
{
provide: AVATAR_GENERATION_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IAvatarGenerationRepository =>
useFactory: (logger: Logger): AvatarGenerationRepository =>
new InMemoryAvatarGenerationRepository(logger),
inject: ['Logger'],
},

View File

@@ -2,12 +2,12 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import type { NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import { InMemoryNotificationPreferenceRepository } from '@adapters/notifications/persistence/inmemory/InMemoryNotificationPreferenceRepository';
import { InMemoryNotificationRepository } from '@adapters/notifications/persistence/inmemory/InMemoryNotificationRepository';
@@ -24,13 +24,13 @@ export const NOTIFICATION_GATEWAY_REGISTRY_TOKEN = 'INotificationGatewayRegistry
providers: [
{
provide: NOTIFICATION_REPOSITORY_TOKEN,
useFactory: (logger: Logger): INotificationRepository =>
useFactory: (logger: Logger): NotificationRepository =>
new InMemoryNotificationRepository(logger),
inject: ['Logger'],
},
{
provide: NOTIFICATION_PREFERENCE_REPOSITORY_TOKEN,
useFactory: (logger: Logger): INotificationPreferenceRepository =>
useFactory: (logger: Logger): NotificationPreferenceRepository =>
new InMemoryNotificationPreferenceRepository(logger),
inject: ['Logger'],
},
@@ -43,8 +43,8 @@ export const NOTIFICATION_GATEWAY_REGISTRY_TOKEN = 'INotificationGatewayRegistry
{
provide: NOTIFICATION_SERVICE_TOKEN,
useFactory: (
notificationRepo: INotificationRepository,
preferenceRepo: INotificationPreferenceRepository,
notificationRepo: NotificationRepository,
preferenceRepo: NotificationPreferenceRepository,
gatewayRegistry: NotificationGatewayRegistry,
logger: Logger,
): NotificationService =>

View File

@@ -2,15 +2,15 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import type {
IMemberPaymentRepository,
IMembershipFeeRepository,
MemberPaymentRepository,
MembershipFeeRepository,
} from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { TransactionRepository, WalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { InMemoryMemberPaymentRepository, InMemoryMembershipFeeRepository } from '@adapters/payments/persistence/inmemory/InMemoryMembershipFeeRepository';
import { InMemoryPaymentRepository } from '@adapters/payments/persistence/inmemory/InMemoryPaymentRepository';
@@ -31,32 +31,32 @@ import {
providers: [
{
provide: PAYMENTS_PAYMENT_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IPaymentRepository => new InMemoryPaymentRepository(logger),
useFactory: (logger: Logger): PaymentRepository => new InMemoryPaymentRepository(logger),
inject: ['Logger'],
},
{
provide: PAYMENTS_MEMBERSHIP_FEE_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IMembershipFeeRepository => new InMemoryMembershipFeeRepository(logger),
useFactory: (logger: Logger): MembershipFeeRepository => new InMemoryMembershipFeeRepository(logger),
inject: ['Logger'],
},
{
provide: PAYMENTS_MEMBER_PAYMENT_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IMemberPaymentRepository => new InMemoryMemberPaymentRepository(logger),
useFactory: (logger: Logger): MemberPaymentRepository => new InMemoryMemberPaymentRepository(logger),
inject: ['Logger'],
},
{
provide: PAYMENTS_PRIZE_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IPrizeRepository => new InMemoryPrizeRepository(logger),
useFactory: (logger: Logger): PrizeRepository => new InMemoryPrizeRepository(logger),
inject: ['Logger'],
},
{
provide: PAYMENTS_WALLET_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IWalletRepository => new InMemoryWalletRepository(logger),
useFactory: (logger: Logger): WalletRepository => new InMemoryWalletRepository(logger),
inject: ['Logger'],
},
{
provide: PAYMENTS_TRANSACTION_REPOSITORY_TOKEN,
useFactory: (logger: Logger): ITransactionRepository => new InMemoryTransactionRepository(logger),
useFactory: (logger: Logger): TransactionRepository => new InMemoryTransactionRepository(logger),
inject: ['Logger'],
},
],

View File

@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { DriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';

View File

@@ -2,10 +2,10 @@ import { Module } from '@nestjs/common';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
import type { IFeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import type { FeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { SocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import {
InMemoryFeedRepository,
@@ -19,13 +19,13 @@ import { SOCIAL_FEED_REPOSITORY_TOKEN, SOCIAL_GRAPH_REPOSITORY_TOKEN } from '../
providers: [
{
provide: SOCIAL_FEED_REPOSITORY_TOKEN,
useFactory: (logger: Logger): IFeedRepository =>
useFactory: (logger: Logger): FeedRepository =>
new InMemoryFeedRepository(logger, { drivers: [], friendships: [], feedEvents: [] }),
inject: ['Logger'],
},
{
provide: SOCIAL_GRAPH_REPOSITORY_TOKEN,
useFactory: (logger: Logger): ISocialGraphRepository =>
useFactory: (logger: Logger): SocialGraphRepository =>
new InMemorySocialGraphRepository(logger, { drivers: [], friendships: [], feedEvents: [] }),
inject: ['Logger'],
},

View File

@@ -1,4 +1,4 @@
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP';
import type { Logger } from '@core/shared/domain/Logger';
import { Module } from '@nestjs/common';
import { TypeOrmModule, getDataSourceToken } from '@nestjs/typeorm';
import type { DataSource } from 'typeorm';

View File

@@ -4,9 +4,9 @@ import type { DataSource } from 'typeorm';
import type { NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { NotificationOrmEntity } from '@adapters/notifications/persistence/typeorm/entities/NotificationOrmEntity';
import { NotificationPreferenceOrmEntity } from '@adapters/notifications/persistence/typeorm/entities/NotificationPreferenceOrmEntity';
@@ -58,8 +58,8 @@ const typeOrmFeatureImports = [
{
provide: NOTIFICATION_SERVICE_TOKEN,
useFactory: (
notificationRepo: INotificationRepository,
preferenceRepo: INotificationPreferenceRepository,
notificationRepo: NotificationRepository,
preferenceRepo: NotificationPreferenceRepository,
gatewayRegistry: NotificationGatewayRegistry,
logger: Logger,
): NotificationService =>

View File

@@ -4,10 +4,10 @@ import type { DataSource } from 'typeorm';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { IMemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import type { MemberPaymentRepository, MembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { TransactionRepository, WalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { PaymentsMemberPaymentOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMemberPaymentOrmEntity';
import { PaymentsMembershipFeeOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMembershipFeeOrmEntity';
@@ -58,37 +58,37 @@ const typeOrmFeatureImports = [
{
provide: PAYMENTS_WALLET_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): IWalletRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): WalletRepository =>
new TypeOrmWalletRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsWalletOrmMapper],
},
{
provide: PAYMENTS_TRANSACTION_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): ITransactionRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): TransactionRepository =>
new TypeOrmTransactionRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsWalletOrmMapper],
},
{
provide: PAYMENTS_PAYMENT_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsPaymentOrmMapper): IPaymentRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsPaymentOrmMapper): PaymentRepository =>
new TypeOrmPaymentRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsPaymentOrmMapper],
},
{
provide: PAYMENTS_PRIZE_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsPrizeOrmMapper): IPrizeRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsPrizeOrmMapper): PrizeRepository =>
new TypeOrmPrizeRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsPrizeOrmMapper],
},
{
provide: PAYMENTS_MEMBERSHIP_FEE_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsMembershipFeeOrmMapper): IMembershipFeeRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsMembershipFeeOrmMapper): MembershipFeeRepository =>
new TypeOrmMembershipFeeRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsMembershipFeeOrmMapper],
},
{
provide: PAYMENTS_MEMBER_PAYMENT_REPOSITORY_TOKEN,
useFactory: (dataSource: DataSource, mapper: PaymentsMemberPaymentOrmMapper): IMemberPaymentRepository =>
useFactory: (dataSource: DataSource, mapper: PaymentsMemberPaymentOrmMapper): MemberPaymentRepository =>
new TypeOrmMemberPaymentRepository(dataSource, mapper),
inject: [getDataSourceToken(), PaymentsMemberPaymentOrmMapper],
},

View File

@@ -113,7 +113,7 @@ import { TeamMembershipOrmMapper, TeamOrmMapper } from '@adapters/racing/persist
import { TeamStatsOrmMapper } from '@adapters/racing/persistence/typeorm/mappers/TeamStatsOrmMapper';
import { getPointsSystems } from '@adapters/bootstrap/PointsSystems';
import type { Logger } from '@core/shared/application/UseCaseOutputPort/UseCaseOutputPort/UseCaseOutputPort_TEMP_TEMP/Logger';
import type { Logger } from '@core/shared/domain/Logger';
const RACING_POINTS_SYSTEMS_TOKEN = 'RACING_POINTS_SYSTEMS_TOKEN';

View File

@@ -10,8 +10,8 @@ import { DatabaseModule } from '../../domain/database/DatabaseModule';
import { PostgresSocialPersistenceModule } from '../postgres/PostgresSocialPersistenceModule';
import { SOCIAL_FEED_REPOSITORY_TOKEN, SOCIAL_GRAPH_REPOSITORY_TOKEN } from './SocialPersistenceTokens';
import type { IFeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import type { FeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { SocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import { DriverOrmEntity } from '@adapters/racing/persistence/typeorm/entities/DriverOrmEntity';
import { FeedItemOrmEntity } from '@adapters/social/persistence/typeorm/entities/FeedItemOrmEntity';
@@ -82,8 +82,8 @@ describe('PostgresSocialPersistenceModule (integration)', () => {
await feedOrmRepo.save(item);
const feedRepo = module.get<IFeedRepository>(SOCIAL_FEED_REPOSITORY_TOKEN);
const socialGraphRepo = module.get<ISocialGraphRepository>(SOCIAL_GRAPH_REPOSITORY_TOKEN);
const feedRepo = module.get<FeedRepository>(SOCIAL_FEED_REPOSITORY_TOKEN);
const socialGraphRepo = module.get<SocialGraphRepository>(SOCIAL_GRAPH_REPOSITORY_TOKEN);
const friendIds = await socialGraphRepo.getFriendIds(driverA.id);
expect(friendIds).toEqual([driverB.id]);