website refactor
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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,
|
||||
) {}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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'],
|
||||
},
|
||||
|
||||
@@ -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 =>
|
||||
|
||||
@@ -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'],
|
||||
},
|
||||
],
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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'],
|
||||
},
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 =>
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user