This commit is contained in:
2025-12-16 11:52:26 +01:00
parent ce82b7822b
commit 9a891ac8b3
586 changed files with 1320 additions and 1563 deletions

View File

@@ -6,7 +6,7 @@
import type { IAnalyticsSnapshotRepository } from '../../domain/repositories/IAnalyticsSnapshotRepository'; import type { IAnalyticsSnapshotRepository } from '../../domain/repositories/IAnalyticsSnapshotRepository';
import { AnalyticsSnapshot, type SnapshotPeriod, type SnapshotEntityType } from '../../domain/entities/AnalyticsSnapshot'; import { AnalyticsSnapshot, type SnapshotPeriod, type SnapshotEntityType } from '../../domain/entities/AnalyticsSnapshot';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryAnalyticsSnapshotRepository implements IAnalyticsSnapshotRepository { export class InMemoryAnalyticsSnapshotRepository implements IAnalyticsSnapshotRepository {
private snapshots: Map<string, AnalyticsSnapshot> = new Map(); private snapshots: Map<string, AnalyticsSnapshot> = new Map();

View File

@@ -6,7 +6,7 @@
import type { IEngagementRepository } from '../../domain/repositories/IEngagementRepository'; import type { IEngagementRepository } from '../../domain/repositories/IEngagementRepository';
import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '../../domain/entities/EngagementEvent'; import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '../../domain/entities/EngagementEvent';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryEngagementRepository implements IEngagementRepository { export class InMemoryEngagementRepository implements IEngagementRepository {

View File

@@ -6,7 +6,7 @@
import type { IPageViewRepository } from '../../domain/repositories/IPageViewRepository'; import type { IPageViewRepository } from '../../domain/repositories/IPageViewRepository';
import { PageView, type EntityType } from '../../domain/entities/PageView'; import { PageView, type EntityType } from '../../domain/entities/PageView';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryPageViewRepository implements IPageViewRepository { export class InMemoryPageViewRepository implements IPageViewRepository {
private pageViews: Map<string, PageView> = new Map(); private pageViews: Map<string, PageView> = new Map();

View File

@@ -1,4 +1,4 @@
import type { LogLevel } from '@gridpilot/automation/application/ports/LoggerLogLevel'; import type { LogLevel } from '@core/automation/application/ports/LoggerLogLevel';
export type LogEnvironment = 'development' | 'production' | 'test'; export type LogEnvironment = 'development' | 'production' | 'test';

View File

@@ -1,4 +1,4 @@
import { SignupWithEmailUseCase } from '../../core/identity/application/use-cases/SignupWithEmailUseCase'; import { SignupWithEmailUseCase } from '@core/identity/application/use-cases/SignupWithEmailUseCase';
/** /**
* EnsureInitialData - Bootstrap script to ensure initial data exists. * EnsureInitialData - Bootstrap script to ensure initial data exists.

View File

@@ -4,7 +4,7 @@
* In-memory implementation of IAchievementRepository * In-memory implementation of IAchievementRepository
*/ */
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
import { import {
Achievement, Achievement,
AchievementCategory, AchievementCategory,

View File

@@ -1,11 +1,11 @@
import { IAuthRepository } from '@gridpilot/core/identity/domain/repositories/IAuthRepository'; import { IAuthRepository } from '@core/identity/domain/repositories/IAuthRepository';
import { IUserRepository, StoredUser } from '@gridpilot/core/identity/domain/repositories/IUserRepository'; import { IUserRepository, StoredUser } from '@core/identity/domain/repositories/IUserRepository';
import { IPasswordHashingService } from '@gridpilot/core/identity/domain/services/PasswordHashingService'; import { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import { User } from '@gridpilot/core/identity/domain/entities/User'; import { User } from '@core/identity/domain/entities/User';
import { EmailAddress } from '@gridpilot/core/identity/domain/value-objects/EmailAddress'; import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { randomUUID } from 'crypto'; import { randomUUID } from 'crypto';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryAuthRepository implements IAuthRepository { export class InMemoryAuthRepository implements IAuthRepository {
constructor( constructor(

View File

@@ -7,7 +7,7 @@
import type { ISponsorAccountRepository } from '../../domain/repositories/ISponsorAccountRepository'; import type { ISponsorAccountRepository } from '../../domain/repositories/ISponsorAccountRepository';
import type { SponsorAccount } from '../../domain/entities/SponsorAccount'; import type { SponsorAccount } from '../../domain/entities/SponsorAccount';
import type { UserId } from '../../domain/value-objects/UserId'; import type { UserId } from '../../domain/value-objects/UserId';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemorySponsorAccountRepository implements ISponsorAccountRepository { export class InMemorySponsorAccountRepository implements ISponsorAccountRepository {
private accounts: Map<string, SponsorAccount> = new Map(); private accounts: Map<string, SponsorAccount> = new Map();

View File

@@ -6,7 +6,7 @@
import { UserRating } from '../../domain/value-objects/UserRating'; import { UserRating } from '../../domain/value-objects/UserRating';
import type { IUserRatingRepository } from '../../domain/repositories/IUserRatingRepository'; import type { IUserRatingRepository } from '../../domain/repositories/IUserRatingRepository';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryUserRatingRepository implements IUserRatingRepository { export class InMemoryUserRatingRepository implements IUserRatingRepository {
private ratings: Map<string, UserRating> = new Map(); private ratings: Map<string, UserRating> = new Map();

View File

@@ -4,7 +4,7 @@
* Stores users in memory for demo/development purposes. * Stores users in memory for demo/development purposes.
*/ */
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
import type { IUserRepository, StoredUser } from '../../domain/repositories/IUserRepository'; import type { IUserRepository, StoredUser } from '../../domain/repositories/IUserRepository';
export class InMemoryUserRepository implements IUserRepository { export class InMemoryUserRepository implements IUserRepository {

View File

@@ -5,7 +5,7 @@
* NOT FOR PRODUCTION USE - uses a simple string reversal as "hashing". * NOT FOR PRODUCTION USE - uses a simple string reversal as "hashing".
*/ */
import type { IPasswordHashingService } from '@gridpilot/core/identity/domain/services/PasswordHashingService'; import type { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
export class InMemoryPasswordHashingService implements IPasswordHashingService { export class InMemoryPasswordHashingService implements IPasswordHashingService {
async hash(plain: string): Promise<string> { async hash(plain: string): Promise<string> {

View File

@@ -4,10 +4,10 @@
* Manages user session using cookies. This is a placeholder implementation. * Manages user session using cookies. This is a placeholder implementation.
*/ */
import type { AuthenticatedUserDTO } from '@gridpilot/core/identity/application/dto/AuthenticatedUserDTO'; import type { AuthenticatedUserDTO } from '@core/identity/application/dto/AuthenticatedUserDTO';
import type { AuthSessionDTO } from '@gridpilot/core/identity/application/dto/AuthSessionDTO'; import type { AuthSessionDTO } from '@core/identity/application/dto/AuthSessionDTO';
import type { IdentitySessionPort } from '@gridpilot/core/identity/application/ports/IdentitySessionPort'; import type { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class CookieIdentitySessionAdapter implements IdentitySessionPort { export class CookieIdentitySessionAdapter implements IdentitySessionPort {
private currentSession: AuthSessionDTO | null = null; private currentSession: AuthSessionDTO | null = null;

View File

@@ -1,6 +1,6 @@
import { IAvatarGenerationRepository } from '@gridpilot/core/media/domain/repositories/IAvatarGenerationRepository'; import { IAvatarGenerationRepository } from '@core/media/domain/repositories/IAvatarGenerationRepository';
import { AvatarGenerationRequest } from '@gridpilot/core/media/domain/entities/AvatarGenerationRequest'; import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
import { Logger } from '@gridpilot/core/shared/application'; import { Logger } from '@core/shared/application';
export class InMemoryAvatarGenerationRepository implements IAvatarGenerationRepository { export class InMemoryAvatarGenerationRepository implements IAvatarGenerationRepository {
private requests: Map<string, AvatarGenerationRequest> = new Map(); // Key: requestId private requests: Map<string, AvatarGenerationRequest> = new Map(); // Key: requestId

View File

@@ -1,5 +1,5 @@
import type { FaceValidationPort, FaceValidationResult } from '@gridpilot/core/media/application/ports/FaceValidationPort'; import type { FaceValidationPort, FaceValidationResult } from '@core/media/application/ports/FaceValidationPort';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryFaceValidationAdapter implements FaceValidationPort { export class InMemoryFaceValidationAdapter implements FaceValidationPort {
constructor(private readonly logger: Logger) { constructor(private readonly logger: Logger) {

View File

@@ -1,5 +1,5 @@
import type { IImageServicePort } from '@gridpilot/racing/application/ports/IImageServicePort'; import type { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryImageServiceAdapter implements IImageServicePort { export class InMemoryImageServiceAdapter implements IImageServicePort {
constructor(private readonly logger: Logger) { constructor(private readonly logger: Logger) {

View File

@@ -1,6 +1,6 @@
import { INotificationPreferenceRepository } from '@gridpilot/core/notifications/domain/repositories/INotificationPreferenceRepository'; import { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/INotificationPreferenceRepository';
import { NotificationPreference } from '@gridpilot/core/notifications/domain/entities/NotificationPreference'; import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryNotificationPreferenceRepository implements INotificationPreferenceRepository { export class InMemoryNotificationPreferenceRepository implements INotificationPreferenceRepository {
private preferences: Map<string, NotificationPreference> = new Map(); private preferences: Map<string, NotificationPreference> = new Map();

View File

@@ -7,7 +7,7 @@
import { Notification } from '../../domain/entities/Notification'; import { Notification } from '../../domain/entities/Notification';
import type { INotificationRepository } from '../../domain/repositories/INotificationRepository'; import type { INotificationRepository } from '../../domain/repositories/INotificationRepository';
import type { NotificationType } from '../../domain/types/NotificationTypes'; import type { NotificationType } from '../../domain/types/NotificationTypes';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryNotificationRepository implements INotificationRepository { export class InMemoryNotificationRepository implements INotificationRepository {
private notifications: Map<string, Notification> = new Map(); private notifications: Map<string, Notification> = new Map();

View File

@@ -2,10 +2,10 @@
* In-Memory Implementation: InMemoryMembershipFeeRepository * In-Memory Implementation: InMemoryMembershipFeeRepository
*/ */
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
import type { IMembershipFeeRepository, IMemberPaymentRepository } from '../../../../core/payments/domain/repositories/IMembershipFeeRepository'; import type { IMembershipFeeRepository, IMemberPaymentRepository } from '@core/payments/domain/repositories/IMembershipFeeRepository';
import type { MembershipFee } from '../../../../core/payments/domain/entities/MembershipFee'; import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
import type { MemberPayment } from '../../../../core/payments/domain/entities/MemberPayment'; import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
const membershipFees: Map<string, MembershipFee> = new Map(); const membershipFees: Map<string, MembershipFee> = new Map();
const memberPayments: Map<string, MemberPayment> = new Map(); const memberPayments: Map<string, MemberPayment> = new Map();

View File

@@ -2,9 +2,9 @@
* In-Memory Implementation: InMemoryPaymentRepository * In-Memory Implementation: InMemoryPaymentRepository
*/ */
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
import type { IPaymentRepository } from '../../../../core/payments/domain/repositories/IPaymentRepository'; import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { Payment, PaymentType } from '../../../../core/payments/domain/entities/Payment'; import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
const payments: Map<string, Payment> = new Map(); const payments: Map<string, Payment> = new Map();

View File

@@ -2,9 +2,9 @@
* In-Memory Implementation: InMemoryPrizeRepository * In-Memory Implementation: InMemoryPrizeRepository
*/ */
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
import type { IPrizeRepository } from '../../../../core/payments/domain/repositories/IPrizeRepository'; import type { IPrizeRepository } from '@core/payments/domain/repositories/IPrizeRepository';
import type { Prize } from '../../../../core/payments/domain/entities/Prize'; import type { Prize } from '@core/payments/domain/entities/Prize';
const prizes: Map<string, Prize> = new Map(); const prizes: Map<string, Prize> = new Map();

View File

@@ -2,9 +2,9 @@
* In-Memory Implementation: InMemoryWalletRepository * In-Memory Implementation: InMemoryWalletRepository
*/ */
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
import type { IWalletRepository, ITransactionRepository } from '../../../../core/payments/domain/repositories/IWalletRepository'; import type { IWalletRepository, ITransactionRepository } from '@core/payments/domain/repositories/IWalletRepository';
import type { Wallet, Transaction } from '../../../../core/payments/domain/entities/Wallet'; import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
const wallets: Map<string, Wallet> = new Map(); const wallets: Map<string, Wallet> = new Map();
const transactions: Map<string, Transaction> = new Map(); const transactions: Map<string, Transaction> = new Map();

View File

@@ -6,9 +6,9 @@
*/ */
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { Car, CarClass, CarLicense } from '@gridpilot/racing/domain/entities/Car'; import { Car, CarClass, CarLicense } from '@core/racing/domain/entities/Car';
import type { ICarRepository } from '@gridpilot/racing/domain/repositories/ICarRepository'; import type { ICarRepository } from '@core/racing/domain/repositories/ICarRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryCarRepository implements ICarRepository { export class InMemoryCarRepository implements ICarRepository {
private cars: Map<string, Car>; private cars: Map<string, Car>;

View File

@@ -1,6 +1,6 @@
import { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository'; import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { Driver } from '@gridpilot/racing/domain/entities/Driver'; import { Driver } from '@core/racing/domain/entities/Driver';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryDriverRepository implements IDriverRepository { export class InMemoryDriverRepository implements IDriverRepository {
private drivers: Map<string, Driver> = new Map(); private drivers: Map<string, Driver> = new Map();

View File

@@ -1,6 +1,6 @@
import { IGameRepository } from '@gridpilot/racing/domain/repositories/IGameRepository'; import { IGameRepository } from '@core/racing/domain/repositories/IGameRepository';
import { Game } from '@gridpilot/racing/domain/entities/Game'; import { Game } from '@core/racing/domain/entities/Game';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryGameRepository implements IGameRepository { export class InMemoryGameRepository implements IGameRepository {
private games: Map<string, Game> = new Map(); private games: Map<string, Game> = new Map();

View File

@@ -1,6 +1,6 @@
import { ILeagueMembershipRepository } from '@gridpilot/racing/domain/repositories/ILeagueMembershipRepository'; import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import { LeagueMembership, JoinRequest } from '@gridpilot/racing/domain/entities/LeagueMembership'; import { LeagueMembership, JoinRequest } from '@core/racing/domain/entities/LeagueMembership';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueMembershipRepository implements ILeagueMembershipRepository { export class InMemoryLeagueMembershipRepository implements ILeagueMembershipRepository {
private memberships: Map<string, LeagueMembership> = new Map(); // Key: `${leagueId}:${driverId}` private memberships: Map<string, LeagueMembership> = new Map(); // Key: `${leagueId}:${driverId}`

View File

@@ -1,6 +1,6 @@
import { ILeagueRepository } from '@gridpilot/core/racing/domain/repositories/ILeagueRepository'; import { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import { League } from '@gridpilot/core/racing/domain/entities/League'; import { League } from '@core/racing/domain/entities/League';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueRepository implements ILeagueRepository { export class InMemoryLeagueRepository implements ILeagueRepository {
private leagues: Map<string, League> = new Map(); private leagues: Map<string, League> = new Map();

View File

@@ -1,6 +1,6 @@
import { ILeagueScoringConfigRepository } from '@gridpilot/racing/domain/repositories/ILeagueScoringConfigRepository'; import { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/ILeagueScoringConfigRepository';
import { LeagueScoringConfig } from '@gridpilot/racing/domain/entities/LeagueScoringConfig'; import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueScoringConfigRepository implements ILeagueScoringConfigRepository { export class InMemoryLeagueScoringConfigRepository implements ILeagueScoringConfigRepository {
private configs: Map<string, LeagueScoringConfig> = new Map(); // Key: seasonId private configs: Map<string, LeagueScoringConfig> = new Map(); // Key: seasonId

View File

@@ -5,7 +5,7 @@ import {
import type { import type {
LeagueScoringPresetDTO, LeagueScoringPresetDTO,
LeagueScoringPresetProvider, LeagueScoringPresetProvider,
} from '@gridpilot/racing/application/ports/LeagueScoringPresetProvider'; } from '@core/racing/application/ports/LeagueScoringPresetProvider';
/** /**
* Infrastructure adapter exposing the in-memory scoring preset registry * Infrastructure adapter exposing the in-memory scoring preset registry

View File

@@ -1,5 +1,5 @@
import { ILeagueStandingsRepository, RawStanding } from '@gridpilot/core/league/application/ports/ILeagueStandingsRepository'; import { ILeagueStandingsRepository, RawStanding } from '@core/league/application/ports/ILeagueStandingsRepository';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueStandingsRepository implements ILeagueStandingsRepository { export class InMemoryLeagueStandingsRepository implements ILeagueStandingsRepository {
private standings: Map<string, RawStanding[]> = new Map(); // Key: leagueId private standings: Map<string, RawStanding[]> = new Map(); // Key: leagueId

View File

@@ -6,7 +6,7 @@
import type { LeagueWallet } from '../../domain/entities/LeagueWallet'; import type { LeagueWallet } from '../../domain/entities/LeagueWallet';
import type { ILeagueWalletRepository } from '../../domain/repositories/ILeagueWalletRepository'; import type { ILeagueWalletRepository } from '../../domain/repositories/ILeagueWalletRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryLeagueWalletRepository implements ILeagueWalletRepository { export class InMemoryLeagueWalletRepository implements ILeagueWalletRepository {
private wallets: Map<string, LeagueWallet> = new Map(); private wallets: Map<string, LeagueWallet> = new Map();

View File

@@ -7,7 +7,7 @@
import type { DriverLivery } from '../../domain/entities/DriverLivery'; import type { DriverLivery } from '../../domain/entities/DriverLivery';
import type { LiveryTemplate } from '../../domain/entities/LiveryTemplate'; import type { LiveryTemplate } from '../../domain/entities/LiveryTemplate';
import type { ILiveryRepository } from '../../domain/repositories/ILiveryRepository'; import type { ILiveryRepository } from '../../domain/repositories/ILiveryRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryLiveryRepository implements ILiveryRepository { export class InMemoryLiveryRepository implements ILiveryRepository {
private driverLiveries: Map<string, DriverLivery> = new Map(); private driverLiveries: Map<string, DriverLivery> = new Map();

View File

@@ -6,7 +6,7 @@
import type { Penalty } from '../../domain/entities/Penalty'; import type { Penalty } from '../../domain/entities/Penalty';
import type { IPenaltyRepository } from '../../domain/repositories/IPenaltyRepository'; import type { IPenaltyRepository } from '../../domain/repositories/IPenaltyRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryPenaltyRepository implements IPenaltyRepository { export class InMemoryPenaltyRepository implements IPenaltyRepository {
private penalties: Map<string, Penalty> = new Map(); private penalties: Map<string, Penalty> = new Map();

View File

@@ -1,6 +1,6 @@
import { IProtestRepository } from '@gridpilot/racing/domain/repositories/IProtestRepository'; import { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import { Protest, ProtestStatus } from '@gridpilot/racing/domain/entities/Protest'; import { Protest, ProtestStatus } from '@core/racing/domain/entities/Protest';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryProtestRepository implements IProtestRepository { export class InMemoryProtestRepository implements IProtestRepository {
private protests: Map<string, Protest> = new Map(); private protests: Map<string, Protest> = new Map();

View File

@@ -3,7 +3,7 @@
*/ */
import type { IRaceEventRepository } from '../../domain/repositories/IRaceEventRepository'; import type { IRaceEventRepository } from '../../domain/repositories/IRaceEventRepository';
import type { RaceEvent } from '../../domain/entities/RaceEvent'; import type { RaceEvent } from '../../domain/entities/RaceEvent';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceEventRepository implements IRaceEventRepository { export class InMemoryRaceEventRepository implements IRaceEventRepository {
private raceEvents: Map<string, RaceEvent> = new Map(); private raceEvents: Map<string, RaceEvent> = new Map();

View File

@@ -1,6 +1,6 @@
import { IRaceRegistrationRepository } from '@gridpilot/racing/domain/repositories/IRaceRegistrationRepository'; import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import { RaceRegistration } from '@gridpilot/racing/domain/entities/RaceRegistration'; import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceRegistrationRepository implements IRaceRegistrationRepository { export class InMemoryRaceRegistrationRepository implements IRaceRegistrationRepository {
private registrations: Map<string, RaceRegistration> = new Map(); // Key: `${raceId}:${driverId}` private registrations: Map<string, RaceRegistration> = new Map(); // Key: `${raceId}:${driverId}`

View File

@@ -1,6 +1,6 @@
import { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository'; import { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import { Race, RaceStatus } from '@gridpilot/racing/domain/entities/Race'; import { Race, RaceStatus } from '@core/racing/domain/entities/Race';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemoryRaceRepository implements IRaceRepository { export class InMemoryRaceRepository implements IRaceRepository {
private races: Map<string, Race> = new Map(); private races: Map<string, Race> = new Map();

View File

@@ -6,10 +6,10 @@
*/ */
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { Result } from '@gridpilot/racing/domain/entities/Result'; import { Result } from '@core/racing/domain/entities/Result';
import type { IResultRepository } from '@gridpilot/racing/domain/repositories/IResultRepository'; import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository'; import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryResultRepository implements IResultRepository { export class InMemoryResultRepository implements IResultRepository {
private results: Map<string, Result>; private results: Map<string, Result>;

View File

@@ -1,19 +1,19 @@
import { Game } from '@gridpilot/racing/domain/entities/Game'; import { Game } from '@core/racing/domain/entities/Game';
import { Season } from '@gridpilot/racing/domain/entities/Season'; import { Season } from '@core/racing/domain/entities/Season';
import type { LeagueScoringConfig } from '@gridpilot/racing/domain/entities/LeagueScoringConfig'; import type { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { PointsTable } from '@gridpilot/racing/domain/value-objects/PointsTable'; import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
import type { ChampionshipConfig } from '@gridpilot/racing/domain/types/ChampionshipConfig'; import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
import type { SessionType } from '@gridpilot/racing/domain/types/SessionType'; import type { SessionType } from '@core/racing/domain/types/SessionType';
import type { BonusRule } from '@gridpilot/racing/domain/types/BonusRule'; import type { BonusRule } from '@core/racing/domain/types/BonusRule';
import type { DropScorePolicy } from '@gridpilot/racing/domain/types/DropScorePolicy'; import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
import type { IGameRepository } from '@gridpilot/racing/domain/repositories/IGameRepository'; import type { IGameRepository } from '@core/racing/domain/repositories/IGameRepository';
import type { ISeasonRepository } from '@gridpilot/racing/domain/repositories/ISeasonRepository'; import type { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import type { ILeagueScoringConfigRepository } from '@gridpilot/racing/domain/repositories/ILeagueScoringConfigRepository'; import type { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/ILeagueScoringConfigRepository';
import type { IChampionshipStandingRepository } from '@gridpilot/racing/domain/repositories/IChampionshipStandingRepository'; import type { IChampionshipStandingRepository } from '@core/racing/domain/repositories/IChampionshipStandingRepository';
import { ChampionshipStanding } from '@gridpilot/racing/domain/entities/ChampionshipStanding'; import { ChampionshipStanding } from '@core/racing/domain/entities/ChampionshipStanding';
import type { ChampionshipType } from '@gridpilot/racing/domain/types/ChampionshipType'; import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
import type { ParticipantRef } from '@gridpilot/racing/domain/types/ParticipantRef'; import type { ParticipantRef } from '@core/racing/domain/types/ParticipantRef';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
class SilentLogger implements Logger { class SilentLogger implements Logger {
debug(..._args: unknown[]): void { debug(..._args: unknown[]): void {

View File

@@ -1,6 +1,6 @@
import { ISeasonRepository } from '@gridpilot/racing/domain/repositories/ISeasonRepository'; import { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import { Season } from '@gridpilot/racing/domain/entities/Season'; import { Season } from '@core/racing/domain/entities/Season';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemorySeasonRepository implements ISeasonRepository { export class InMemorySeasonRepository implements ISeasonRepository {
private seasons: Map<string, Season> = new Map(); // Key: seasonId private seasons: Map<string, Season> = new Map(); // Key: seasonId

View File

@@ -6,7 +6,7 @@
import type { SeasonSponsorship, SponsorshipTier } from '../../domain/entities/SeasonSponsorship'; import type { SeasonSponsorship, SponsorshipTier } from '../../domain/entities/SeasonSponsorship';
import type { ISeasonSponsorshipRepository } from '../../domain/repositories/ISeasonSponsorshipRepository'; import type { ISeasonSponsorshipRepository } from '../../domain/repositories/ISeasonSponsorshipRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemorySeasonSponsorshipRepository implements ISeasonSponsorshipRepository { export class InMemorySeasonSponsorshipRepository implements ISeasonSponsorshipRepository {
private sponsorships: Map<string, SeasonSponsorship> = new Map(); private sponsorships: Map<string, SeasonSponsorship> = new Map();

View File

@@ -3,7 +3,7 @@
*/ */
import type { ISessionRepository } from '../../domain/repositories/ISessionRepository'; import type { ISessionRepository } from '../../domain/repositories/ISessionRepository';
import type { Session } from '../../domain/entities/Session'; import type { Session } from '../../domain/entities/Session';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemorySessionRepository implements ISessionRepository { export class InMemorySessionRepository implements ISessionRepository {
private sessions: Map<string, Session> = new Map(); private sessions: Map<string, Session> = new Map();

View File

@@ -1,6 +1,6 @@
import { ISponsorRepository } from '@gridpilot/core/racing/domain/repositories/ISponsorRepository'; import { ISponsorRepository } from '@core/racing/domain/repositories/ISponsorRepository';
import { Sponsor } from '@gridpilot/core/racing/domain/entities/Sponsor'; import { Sponsor } from '@core/racing/domain/entities/Sponsor';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemorySponsorRepository implements ISponsorRepository { export class InMemorySponsorRepository implements ISponsorRepository {
private sponsors: Map<string, Sponsor> = new Map(); private sponsors: Map<string, Sponsor> = new Map();

View File

@@ -5,7 +5,7 @@
import type { ISponsorshipPricingRepository } from '../../domain/repositories/ISponsorshipPricingRepository'; import type { ISponsorshipPricingRepository } from '../../domain/repositories/ISponsorshipPricingRepository';
import { SponsorshipPricing } from '../../domain/value-objects/SponsorshipPricing'; import { SponsorshipPricing } from '../../domain/value-objects/SponsorshipPricing';
import type { SponsorableEntityType } from '../../domain/entities/SponsorshipRequest'; import type { SponsorableEntityType } from '../../domain/entities/SponsorshipRequest';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
interface StorageKey { interface StorageKey {
entityType: SponsorableEntityType; entityType: SponsorableEntityType;

View File

@@ -1,6 +1,6 @@
import { ISponsorshipRequestRepository } from '@gridpilot/racing/domain/repositories/ISponsorshipRequestRepository'; import { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/ISponsorshipRequestRepository';
import { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@gridpilot/racing/domain/entities/SponsorshipRequest'; import { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
export class InMemorySponsorshipRequestRepository implements ISponsorshipRequestRepository { export class InMemorySponsorshipRequestRepository implements ISponsorshipRequestRepository {
private requests: Map<string, SponsorshipRequest> = new Map(); private requests: Map<string, SponsorshipRequest> = new Map();

View File

@@ -5,12 +5,12 @@
* Stores data in Map structure and calculates standings from race results. * Stores data in Map structure and calculates standings from race results.
*/ */
import { Standing } from '@gridpilot/racing/domain/entities/Standing'; import { Standing } from '@core/racing/domain/entities/Standing';
import type { IStandingRepository } from '@gridpilot/racing/domain/repositories/IStandingRepository'; import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { IResultRepository } from '@gridpilot/racing/domain/repositories/IResultRepository'; import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IRaceRepository } from '@gridpilot/racing/domain/repositories/IRaceRepository'; import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { ILeagueRepository } from '@gridpilot/racing/domain/repositories/ILeagueRepository'; import type { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
/** /**
* Points systems presets * Points systems presets

View File

@@ -8,9 +8,9 @@
import type { import type {
TeamMembership, TeamMembership,
TeamJoinRequest, TeamJoinRequest,
} from '@gridpilot/racing/domain/types/TeamMembership'; } from '@core/racing/domain/types/TeamMembership';
import type { ITeamMembershipRepository } from '@gridpilot/racing/domain/repositories/ITeamMembershipRepository'; import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTeamMembershipRepository implements ITeamMembershipRepository { export class InMemoryTeamMembershipRepository implements ITeamMembershipRepository {
private membershipsByTeam: Map<string, TeamMembership[]>; private membershipsByTeam: Map<string, TeamMembership[]>;

View File

@@ -5,9 +5,9 @@
* Stores data in a Map structure. * Stores data in a Map structure.
*/ */
import type { Team } from '@gridpilot/racing/domain/entities/Team'; import type { Team } from '@core/racing/domain/entities/Team';
import type { ITeamRepository } from '@gridpilot/racing/domain/repositories/ITeamRepository'; import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTeamRepository implements ITeamRepository { export class InMemoryTeamRepository implements ITeamRepository {
private teams: Map<string, Team>; private teams: Map<string, Team>;

View File

@@ -6,9 +6,9 @@
*/ */
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { Track, TrackCategory } from '@gridpilot/racing/domain/entities/Track'; import { Track, TrackCategory } from '@core/racing/domain/entities/Track';
import type { ITrackRepository } from '@gridpilot/racing/domain/repositories/ITrackRepository'; import type { ITrackRepository } from '@core/racing/domain/repositories/ITrackRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTrackRepository implements ITrackRepository { export class InMemoryTrackRepository implements ITrackRepository {
private tracks: Map<string, Track>; private tracks: Map<string, Track>;

View File

@@ -6,7 +6,7 @@
import type { Transaction, TransactionType } from '../../domain/entities/Transaction'; import type { Transaction, TransactionType } from '../../domain/entities/Transaction';
import type { ITransactionRepository } from '../../domain/repositories/ITransactionRepository'; import type { ITransactionRepository } from '../../domain/repositories/ITransactionRepository';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryTransactionRepository implements ITransactionRepository { export class InMemoryTransactionRepository implements ITransactionRepository {
private transactions: Map<string, Transaction> = new Map(); private transactions: Map<string, Transaction> = new Map();

View File

@@ -1,5 +1,5 @@
import type { DriverRatingProvider } from '@gridpilot/racing/application/ports/DriverRatingProvider'; import type { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryDriverRatingProvider implements DriverRatingProvider { export class InMemoryDriverRatingProvider implements DriverRatingProvider {
constructor(private readonly logger: Logger) { constructor(private readonly logger: Logger) {

View File

@@ -1,5 +1,5 @@
import type { IDriverStatsService, DriverStats } from '@gridpilot/racing/domain/services/IDriverStatsService'; import type { IDriverStatsService, DriverStats } from '@core/racing/domain/services/IDriverStatsService';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryDriverStatsService implements IDriverStatsService { export class InMemoryDriverStatsService implements IDriverStatsService {
constructor(private readonly logger: Logger) { constructor(private readonly logger: Logger) {

View File

@@ -1,5 +1,5 @@
import type { IRankingService, DriverRanking } from '@gridpilot/racing/domain/services/IRankingService'; import type { IRankingService, DriverRanking } from '@core/racing/domain/services/IRankingService';
import type { Logger } from '@gridpilot/shared/logging/Logger'; import type { Logger } from '@core/shared/logging/Logger';
export class InMemoryRankingService implements IRankingService { export class InMemoryRankingService implements IRankingService {
constructor(private readonly logger: Logger) { constructor(private readonly logger: Logger) {

View File

@@ -1,22 +1,20 @@
{ {
"extends": "../tsconfig.base.json", "extends": "../tsconfig.base.json",
"compilerOptions": { "compilerOptions": {
"baseUrl": "../", // Base URL is the project root "rootDir": ".",
"paths": { "outDir": "dist",
"@gridpilot/core/*": ["core/*"], "baseUrl": ".",
"@gridpilot/shared/*": ["core/shared/*"],
"@gridpilot/identity/application/dto/*": ["core/identity/application/dto/*"],
"@gridpilot/identity/application/ports/*": ["core/identity/application/ports/*"],
"@gridpilot/identity/domain/repositories/*": ["core/identity/domain/repositories/*"],
"@gridpilot/identity/domain/services/*": ["core/identity/domain/services/*"],
"@gridpilot/racing/domain/repositories/*": ["core/racing/domain/repositories/*"],
"@gridpilot/racing/domain/entities/*": ["core/racing/domain/entities/*"],
"@gridpilot/racing/application/ports/*": ["core/racing/application/ports/*"]
},
"composite": true, "composite": true,
"outDir": "./dist", "declaration": true,
"rootDir": "../" // Root directory is the project root "declarationMap": true,
"sourceMap": true,
"paths": {
"@/*": ["./*"],
"@core/*": ["../core/*"],
"@adapters/*": ["./*"],
"@testing/*": ["../testing/*"]
}
}, },
"include": ["**/*", "../core/**/*"], "include": ["**/*.ts"],
"exclude": ["node_modules", "dist", "**/*.spec.ts"] "exclude": ["node_modules", "dist", "**/*.spec.ts", "**/*.test.ts"]
} }

View File

@@ -1,18 +0,0 @@
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
testEnvironment: 'node',
roots: ['<rootDir>/src'],
transform: {
'^.+\.(t|j)s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.json' }],
},
moduleFileExtensions: ['js', 'json', 'ts'],
collectCoverageFrom: [
'**/*.(t|j)s'
],
coverageDirectory: '../coverage',
testRegex: '.*\\.spec\\.ts$',
moduleNameMapper: {
'^@gridpilot/(.*)$': '<rootDir>/../../core/$1', // Corrected path
'^adapters/(.*)$': '<rootDir>/../../adapters/$1',
},
};

View File

@@ -1,5 +1,5 @@
{ {
"name": "api", "name": "@gridpilot/api",
"version": "1.0.0", "version": "1.0.0",
"description": "NestJS API service", "description": "NestJS API service",
"main": "dist/index.js", "main": "dist/index.js",
@@ -7,14 +7,14 @@
"build": "tsc --build --verbose", "build": "tsc --build --verbose",
"start:dev": "ts-node-dev --respawn --inspect=0.0.0.0:9229 src/main.ts", "start:dev": "ts-node-dev --respawn --inspect=0.0.0.0:9229 src/main.ts",
"start:prod": "node dist/main", "start:prod": "node dist/main",
"test": "npx jest" "test": "vitest run",
"test:watch": "vitest"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@nestjs/testing": "^10.4.20", "@nestjs/testing": "^10.4.20",
"@types/jest": "^30.0.0",
"ts-node-dev": "^2.0.0" "ts-node-dev": "^2.0.0"
}, },
"dependencies": { "dependencies": {
@@ -30,7 +30,6 @@
"pg": "^8.12.0", "pg": "^8.12.0",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"ts-jest": "^29.4.6",
"typeorm": "^0.3.20" "typeorm": "^0.3.20"
} }
} }

View File

@@ -1,6 +1,6 @@
import { Global, Module } from '@nestjs/common'; import { Global, Module } from '@nestjs/common';
import { Logger } from '@gridpilot/shared/application/Logger'; import { Logger } from '@core/shared/application/Logger';
import { ConsoleLogger } from '@gridpilot//logging/ConsoleLogger'; import { ConsoleLogger } from '@core//logging/ConsoleLogger';
@Global() @Global()
@Module({ @Module({

View File

@@ -9,9 +9,9 @@ const IENGAGEMENT_REPO_TOKEN = 'IEngagementRepository_TOKEN';
const RECORD_PAGE_VIEW_USE_CASE_TOKEN = 'RecordPageViewUseCase_TOKEN'; const RECORD_PAGE_VIEW_USE_CASE_TOKEN = 'RecordPageViewUseCase_TOKEN';
const RECORD_ENGAGEMENT_USE_CASE_TOKEN = 'RecordEngagementUseCase_TOKEN'; const RECORD_ENGAGEMENT_USE_CASE_TOKEN = 'RecordEngagementUseCase_TOKEN';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { IPageViewRepository } from '@core/analytics/application/repositories/IPageViewRepository';
import { IEngagementRepository } from '@gridpilot/analytics/domain/repositories/IEngagementRepository'; import { IEngagementRepository } from '@core/analytics/domain/repositories/IEngagementRepository';
import { ConsoleLogger } from '../../../..//logging/ConsoleLogger'; import { ConsoleLogger } from '../../../..//logging/ConsoleLogger';
import { InMemoryPageViewRepository } from '../../../..//analytics/persistence/inmemory/InMemoryPageViewRepository'; import { InMemoryPageViewRepository } from '../../../..//analytics/persistence/inmemory/InMemoryPageViewRepository';

View File

@@ -1,6 +1,6 @@
import { Injectable, Inject } from '@nestjs/common'; import { Injectable, Inject } from '@nestjs/common';
import { RecordEngagementInput, RecordEngagementOutput, RecordPageViewInput, RecordPageViewOutput } from './dto/AnalyticsDto'; import { RecordEngagementInput, RecordEngagementOutput, RecordPageViewInput, RecordPageViewOutput } from './dto/AnalyticsDto';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
import { RecordPageViewUseCase } from './use-cases/RecordPageViewUseCase'; import { RecordPageViewUseCase } from './use-cases/RecordPageViewUseCase';
import { RecordEngagementUseCase } from './use-cases/RecordEngagementUseCase'; import { RecordEngagementUseCase } from './use-cases/RecordEngagementUseCase';

View File

@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { RecordEngagementUseCase } from './RecordEngagementUseCase'; import { RecordEngagementUseCase } from './RecordEngagementUseCase';
import { IEngagementRepository } from '@gridpilot/analytics/domain/repositories/IEngagementRepository'; import { IEngagementRepository } from '@core/analytics/domain/repositories/IEngagementRepository';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
describe('RecordEngagementUseCase', () => { describe('RecordEngagementUseCase', () => {
let useCase: RecordEngagementUseCase; let useCase: RecordEngagementUseCase;

View File

@@ -1,8 +1,8 @@
import { Injectable, Inject } from '@nestjs/common'; import { Injectable, Inject } from '@nestjs/common';
import { RecordEngagementInput, RecordEngagementOutput } from '../dto/AnalyticsDto'; import { RecordEngagementInput, RecordEngagementOutput } from '../dto/AnalyticsDto';
import { IEngagementRepository } from '@gridpilot/analytics/domain/repositories/IEngagementRepository'; import { IEngagementRepository } from '@core/analytics/domain/repositories/IEngagementRepository';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
import { EngagementEvent } from '@gridpilot/analytics/domain/entities/EngagementEvent'; import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
const Logger_TOKEN = 'Logger_TOKEN'; const Logger_TOKEN = 'Logger_TOKEN';
const IENGAGEMENT_REPO_TOKEN = 'IEngagementRepository_TOKEN'; const IENGAGEMENT_REPO_TOKEN = 'IEngagementRepository_TOKEN';

View File

@@ -1,7 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { RecordPageViewUseCase } from './RecordPageViewUseCase'; import { RecordPageViewUseCase } from './RecordPageViewUseCase';
import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { IPageViewRepository } from '@core/analytics/application/repositories/IPageViewRepository';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
describe('RecordPageViewUseCase', () => { describe('RecordPageViewUseCase', () => {
let useCase: RecordPageViewUseCase; let useCase: RecordPageViewUseCase;

View File

@@ -1,8 +1,8 @@
import { Injectable, Inject } from '@nestjs/common'; import { Injectable, Inject } from '@nestjs/common';
import { RecordPageViewInput, RecordPageViewOutput } from '../dto/AnalyticsDto'; import { RecordPageViewInput, RecordPageViewOutput } from '../dto/AnalyticsDto';
import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { IPageViewRepository } from '@core/analytics/application/repositories/IPageViewRepository';
import { Logger } from '@gridpilot/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
import { PageView } from '@gridpilot/analytics/domain/entities/PageView'; import { PageView } from '@core/analytics/domain/entities/PageView';
const Logger_TOKEN = 'Logger_TOKEN'; const Logger_TOKEN = 'Logger_TOKEN';
const IPAGE_VIEW_REPO_TOKEN = 'IPageViewRepository_TOKEN'; const IPAGE_VIEW_REPO_TOKEN = 'IPageViewRepository_TOKEN';

View File

@@ -2,16 +2,16 @@ import { Provider } from '@nestjs/common';
import { AuthService } from './AuthService'; import { AuthService } from './AuthService';
// Import interfaces and concrete implementations // Import interfaces and concrete implementations
import { IAuthRepository } from '@gridpilot/core/identity/domain/repositories/IAuthRepository'; import { IAuthRepository } from '@core/identity/domain/repositories/IAuthRepository';
import { IUserRepository, StoredUser } from '@gridpilot/core/identity/domain/repositories/IUserRepository'; import { IUserRepository, StoredUser } from '@core/identity/domain/repositories/IUserRepository';
import { IPasswordHashingService } from '@gridpilot/core/identity/domain/services/PasswordHashingService'; import { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import { Logger } from '@gridpilot/core/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
import { InMemoryAuthRepository } from '../../..//identity/persistence/inmemory/InMemoryAuthRepository'; import { InMemoryAuthRepository } from '../../..//identity/persistence/inmemory/InMemoryAuthRepository';
import { InMemoryUserRepository } from '../../..//identity/persistence/inmemory/InMemoryUserRepository'; import { InMemoryUserRepository } from '../../..//identity/persistence/inmemory/InMemoryUserRepository';
import { InMemoryPasswordHashingService } from '../../..//identity/services/InMemoryPasswordHashingService'; import { InMemoryPasswordHashingService } from '../../..//identity/services/InMemoryPasswordHashingService';
import { ConsoleLogger } from '../../..//logging/ConsoleLogger'; import { ConsoleLogger } from '../../..//logging/ConsoleLogger';
import { IdentitySessionPort } from '../../../../core/identity/application/ports/IdentitySessionPort'; // Path from apps/api/src/modules/auth import { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort'; // Path from apps/api/src/modules/auth
import { CookieIdentitySessionAdapter } from '../../..//identity/session/CookieIdentitySessionAdapter'; import { CookieIdentitySessionAdapter } from '../../..//identity/session/CookieIdentitySessionAdapter';
// Define the tokens for dependency injection // Define the tokens for dependency injection

View File

@@ -2,23 +2,23 @@ import { Injectable, Inject, InternalServerErrorException } from '@nestjs/common
import type { AuthenticatedUserDTO, AuthSessionDTO, SignupParams, LoginParams, IracingAuthRedirectResult, LoginWithIracingCallbackParams } from './dto/AuthDto'; import type { AuthenticatedUserDTO, AuthSessionDTO, SignupParams, LoginParams, IracingAuthRedirectResult, LoginWithIracingCallbackParams } from './dto/AuthDto';
// Core Use Cases // Core Use Cases
import { LoginUseCase } from '../../../../core/identity/application/use-cases/LoginUseCase'; import { LoginUseCase } from '@core/identity/application/use-cases/LoginUseCase';
import { SignupUseCase } from '../../../../core/identity/application/use-cases/SignupUseCase'; import { SignupUseCase } from '@core/identity/application/use-cases/SignupUseCase';
import { GetCurrentSessionUseCase } from '../../../../core/identity/application/use-cases/GetCurrentSessionUseCase'; import { GetCurrentSessionUseCase } from '@core/identity/application/use-cases/GetCurrentSessionUseCase';
import { LogoutUseCase } from '../../../../core/identity/application/use-cases/LogoutUseCase'; import { LogoutUseCase } from '@core/identity/application/use-cases/LogoutUseCase';
import { StartIracingAuthRedirectUseCase } from '../../../../core/identity/application/use-cases/StartIracingAuthRedirectUseCase'; import { StartIracingAuthRedirectUseCase } from '@core/identity/application/use-cases/StartIracingAuthRedirectUseCase';
import { LoginWithIracingCallbackUseCase } from '../../../../core/identity/application/use-cases/LoginWithIracingCallbackUseCase'; import { LoginWithIracingCallbackUseCase } from '@core/identity/application/use-cases/LoginWithIracingCallbackUseCase';
// Core Interfaces and Tokens // Core Interfaces and Tokens
import { AUTH_REPOSITORY_TOKEN, PASSWORD_HASHING_SERVICE_TOKEN, LOGGER_TOKEN, IDENTITY_SESSION_PORT_TOKEN, USER_REPOSITORY_TOKEN } from './AuthProviders'; import { AUTH_REPOSITORY_TOKEN, PASSWORD_HASHING_SERVICE_TOKEN, LOGGER_TOKEN, IDENTITY_SESSION_PORT_TOKEN, USER_REPOSITORY_TOKEN } from './AuthProviders';
import { IAuthRepository } from '../../../../core/identity/domain/repositories/IAuthRepository'; import { IAuthRepository } from '@core/identity/domain/repositories/IAuthRepository';
import { IPasswordHashingService } from '../../../../core/identity/domain/services/PasswordHashingService'; import { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import { Logger } from "@gridpilot/core/shared/application"; import { Logger } from "@gridpilot/core/shared/application";
import { IdentitySessionPort } from '../../../../core/identity/application/ports/IdentitySessionPort'; import { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort';
import { UserId } from '../../../../core/identity/domain/value-objects/UserId'; import { UserId } from '@core/identity/domain/value-objects/UserId';
import { User } from '../../../../core/identity/domain/entities/User'; import { User } from '@core/identity/domain/entities/User';
import { IUserRepository } from '../../../../core/identity/domain/repositories/IUserRepository'; import { IUserRepository } from '@core/identity/domain/repositories/IUserRepository';
import { AuthenticatedUserDTO as CoreAuthenticatedUserDTO } from '../../../../core/identity/application/dto/AuthenticatedUserDTO'; import { AuthenticatedUserDTO as CoreAuthenticatedUserDTO } from '@core/identity/application/dto/AuthenticatedUserDTO';
@Injectable() @Injectable()
export class AuthService { export class AuthService {

View File

@@ -2,19 +2,19 @@ import { Provider } from '@nestjs/common';
import { DriverService } from './DriverService'; import { DriverService } from './DriverService';
// Import core interfaces // Import core interfaces
import { IDriverRepository } from '../../../../core/racing/domain/repositories/IDriverRepository'; import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { IRankingService } from '../../../../core/racing/domain/services/IRankingService'; import { IRankingService } from '@core/racing/domain/services/IRankingService';
import { IDriverStatsService } from '../../../../core/racing/domain/services/IDriverStatsService'; import { IDriverStatsService } from '@core/racing/domain/services/IDriverStatsService';
import { DriverRatingProvider } from '../../../../core/racing/application/ports/DriverRatingProvider'; import { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import { IImageServicePort } from '../../../../core/racing/application/ports/IImageServicePort'; import { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
import { IRaceRegistrationRepository } from '../../../../core/racing/domain/repositories/IRaceRegistrationRepository'; import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import { INotificationPreferenceRepository } from '../../../../core/notifications/domain/repositories/INotificationPreferenceRepository'; import { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/INotificationPreferenceRepository';
import { Logger } from "@gridpilot/core/shared/application"; import { Logger } from "@gridpilot/core/shared/application";
// Import use cases // Import use cases
import { GetDriversLeaderboardUseCase } from '../../../../core/racing/application/use-cases/GetDriversLeaderboardUseCase'; import { GetDriversLeaderboardUseCase } from '@core/racing/application/use-cases/GetDriversLeaderboardUseCase';
import { GetTotalDriversUseCase } from '../../../../core/racing/application/use-cases/GetTotalDriversUseCase'; import { GetTotalDriversUseCase } from '@core/racing/application/use-cases/GetTotalDriversUseCase';
import { CompleteDriverOnboardingUseCase } from '../../../../core/racing/application/use-cases/CompleteDriverOnboardingUseCase'; import { CompleteDriverOnboardingUseCase } from '@core/racing/application/use-cases/CompleteDriverOnboardingUseCase';
// Import concrete in-memory implementations // Import concrete in-memory implementations
import { InMemoryDriverRepository } from '../../..//racing/persistence/inmemory/InMemoryDriverRepository'; import { InMemoryDriverRepository } from '../../..//racing/persistence/inmemory/InMemoryDriverRepository';

View File

@@ -1,10 +1,10 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { DriverService } from './DriverService'; import { DriverService } from './DriverService';
import { GetDriversLeaderboardUseCase } from '../../../../core/racing/application/use-cases/GetDriversLeaderboardUseCase'; import { GetDriversLeaderboardUseCase } from '@core/racing/application/use-cases/GetDriversLeaderboardUseCase';
import { GetTotalDriversUseCase } from '../../../../core/racing/application/use-cases/GetTotalDriversUseCase'; import { GetTotalDriversUseCase } from '@core/racing/application/use-cases/GetTotalDriversUseCase';
import { CompleteDriverOnboardingUseCase } from '../../../../core/racing/application/use-cases/CompleteDriverOnboardingUseCase'; import { CompleteDriverOnboardingUseCase } from '@core/racing/application/use-cases/CompleteDriverOnboardingUseCase';
import { IsDriverRegisteredForRaceUseCase } from '../../../../core/racing/application/use-cases/IsDriverRegisteredForRaceUseCase'; import { IsDriverRegisteredForRaceUseCase } from '@core/racing/application/use-cases/IsDriverRegisteredForRaceUseCase';
import { Logger } from '../../../../core/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
describe('DriverService', () => { describe('DriverService', () => {
let service: DriverService; let service: DriverService;

View File

@@ -2,10 +2,10 @@ import { Injectable, Inject } from '@nestjs/common';
import { DriversLeaderboardViewModel, DriverStatsDto, CompleteOnboardingInput, CompleteOnboardingOutput, GetDriverRegistrationStatusQuery, DriverRegistrationStatusViewModel } from './dto/DriverDto'; import { DriversLeaderboardViewModel, DriverStatsDto, CompleteOnboardingInput, CompleteOnboardingOutput, GetDriverRegistrationStatusQuery, DriverRegistrationStatusViewModel } from './dto/DriverDto';
// Use cases // Use cases
import { GetDriversLeaderboardUseCase } from '../../../../core/racing/application/use-cases/GetDriversLeaderboardUseCase'; import { GetDriversLeaderboardUseCase } from '@core/racing/application/use-cases/GetDriversLeaderboardUseCase';
import { GetTotalDriversUseCase } from '../../../../core/racing/application/use-cases/GetTotalDriversUseCase'; import { GetTotalDriversUseCase } from '@core/racing/application/use-cases/GetTotalDriversUseCase';
import { CompleteDriverOnboardingUseCase } from '../../../../core/racing/application/use-cases/CompleteDriverOnboardingUseCase'; import { CompleteDriverOnboardingUseCase } from '@core/racing/application/use-cases/CompleteDriverOnboardingUseCase';
import { IsDriverRegisteredForRaceUseCase } from '../../../../core/racing/application/use-cases/IsDriverRegisteredForRaceUseCase'; import { IsDriverRegisteredForRaceUseCase } from '@core/racing/application/use-cases/IsDriverRegisteredForRaceUseCase';
// Presenters // Presenters
import { DriversLeaderboardPresenter } from './presenters/DriversLeaderboardPresenter'; import { DriversLeaderboardPresenter } from './presenters/DriversLeaderboardPresenter';
@@ -15,7 +15,7 @@ import { DriverRegistrationStatusPresenter } from './presenters/DriverRegistrati
// Tokens // Tokens
import { GET_DRIVERS_LEADERBOARD_USE_CASE_TOKEN, GET_TOTAL_DRIVERS_USE_CASE_TOKEN, COMPLETE_DRIVER_ONBOARDING_USE_CASE_TOKEN, IS_DRIVER_REGISTERED_FOR_RACE_USE_CASE_TOKEN, LOGGER_TOKEN } from './DriverProviders'; import { GET_DRIVERS_LEADERBOARD_USE_CASE_TOKEN, GET_TOTAL_DRIVERS_USE_CASE_TOKEN, COMPLETE_DRIVER_ONBOARDING_USE_CASE_TOKEN, IS_DRIVER_REGISTERED_FOR_RACE_USE_CASE_TOKEN, LOGGER_TOKEN } from './DriverProviders';
import { Logger } from '../../../../core/shared/logging/Logger'; import { Logger } from '@core/shared/logging/Logger';
@Injectable() @Injectable()
export class DriverService { export class DriverService {

View File

@@ -2,40 +2,40 @@ import { Provider } from '@nestjs/common';
import { LeagueService } from './LeagueService'; import { LeagueService } from './LeagueService';
// Import core interfaces // Import core interfaces
import { Logger } from '@gridpilot/shared/application/Logger'; import { Logger } from '@core/shared/application/Logger';
// Import concrete in-memory implementations // Import concrete in-memory implementations
import { InMemoryLeagueRepository } from '/racing/persistence/inmemory/InMemoryLeagueRepository'; import { InMemoryLeagueRepository } from '@adapters/racing/persistence/inmemory/InMemoryLeagueRepository';
import { InMemoryLeagueMembershipRepository } from '/racing/persistence/inmemory/InMemoryLeagueMembershipRepository'; import { InMemoryLeagueMembershipRepository } from '@adapters/racing/persistence/inmemory/InMemoryLeagueMembershipRepository';
import { InMemoryLeagueStandingsRepository } from '/racing/persistence/inmemory/InMemoryLeagueStandingsRepository'; import { InMemoryLeagueStandingsRepository } from '@adapters/racing/persistence/inmemory/InMemoryLeagueStandingsRepository';
import { InMemorySeasonRepository } from '/racing/persistence/inmemory/InMemorySeasonRepository'; import { InMemorySeasonRepository } from '@adapters/racing/persistence/inmemory/InMemorySeasonRepository';
import { InMemoryLeagueScoringConfigRepository } from '/racing/persistence/inmemory/InMemoryLeagueScoringConfigRepository'; import { InMemoryLeagueScoringConfigRepository } from '@adapters/racing/persistence/inmemory/InMemoryLeagueScoringConfigRepository';
import { InMemoryGameRepository } from '/racing/persistence/inmemory/InMemoryGameRepository'; import { InMemoryGameRepository } from '@adapters/racing/persistence/inmemory/InMemoryGameRepository';
import { InMemoryProtestRepository } from '/racing/persistence/inmemory/InMemoryProtestRepository'; import { InMemoryProtestRepository } from '@adapters/racing/persistence/inmemory/InMemoryProtestRepository';
import { InMemoryRaceRepository } from '/racing/persistence/inmemory/InMemoryRaceRepository'; import { InMemoryRaceRepository } from '@adapters/racing/persistence/inmemory/InMemoryRaceRepository';
import { InMemoryDriverRepository } from '/racing/persistence/inmemory/InMemoryDriverRepository'; import { InMemoryDriverRepository } from '@adapters/racing/persistence/inmemory/InMemoryDriverRepository';
import { InMemoryStandingRepository } from '/racing/persistence/inmemory/InMemoryStandingRepository'; import { InMemoryStandingRepository } from '@adapters/racing/persistence/inmemory/InMemoryStandingRepository';
import { ConsoleLogger } from '/logging/ConsoleLogger'; import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
// Import use cases // Import use cases
import { GetAllLeaguesWithCapacityUseCase } from '@gridpilot/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase'; import { GetAllLeaguesWithCapacityUseCase } from '@core/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase';
import { GetLeagueStandingsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStandingsUseCase'; import { GetLeagueStandingsUseCase } from '@core/racing/application/use-cases/GetLeagueStandingsUseCase';
import { GetLeagueFullConfigUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueFullConfigUseCase'; import { GetLeagueFullConfigUseCase } from '@core/racing/application/use-cases/GetLeagueFullConfigUseCase';
import { CreateLeagueWithSeasonAndScoringUseCase } from '@gridpilot/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase'; import { CreateLeagueWithSeasonAndScoringUseCase } from '@core/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase';
import { GetRaceProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetRaceProtestsUseCase'; import { GetRaceProtestsUseCase } from '@core/racing/application/use-cases/GetRaceProtestsUseCase';
import { GetTotalLeaguesUseCase } from '@gridpilot/racing/application/use-cases/GetTotalLeaguesUseCase'; import { GetTotalLeaguesUseCase } from '@core/racing/application/use-cases/GetTotalLeaguesUseCase';
import { GetLeagueJoinRequestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueJoinRequestsUseCase'; import { GetLeagueJoinRequestsUseCase } from '@core/racing/application/use-cases/GetLeagueJoinRequestsUseCase';
import { ApproveLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/ApproveLeagueJoinRequestUseCase'; import { ApproveLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/ApproveLeagueJoinRequestUseCase';
import { RejectLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/RejectLeagueJoinRequestUseCase'; import { RejectLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/RejectLeagueJoinRequestUseCase';
import { RemoveLeagueMemberUseCase } from '@gridpilot/racing/application/use-cases/RemoveLeagueMemberUseCase'; import { RemoveLeagueMemberUseCase } from '@core/racing/application/use-cases/RemoveLeagueMemberUseCase';
import { UpdateLeagueMemberRoleUseCase } from '@gridpilot/racing/application/use-cases/UpdateLeagueMemberRoleUseCase'; import { UpdateLeagueMemberRoleUseCase } from '@core/racing/application/use-cases/UpdateLeagueMemberRoleUseCase';
import { GetLeagueOwnerSummaryUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueOwnerSummaryUseCase'; import { GetLeagueOwnerSummaryUseCase } from '@core/racing/application/use-cases/GetLeagueOwnerSummaryUseCase';
import { GetLeagueProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueProtestsUseCase'; import { GetLeagueProtestsUseCase } from '@core/racing/application/use-cases/GetLeagueProtestsUseCase';
import { GetLeagueSeasonsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueSeasonsUseCase'; import { GetLeagueSeasonsUseCase } from '@core/racing/application/use-cases/GetLeagueSeasonsUseCase';
import { GetLeagueMembershipsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueMembershipsUseCase'; import { GetLeagueMembershipsUseCase } from '@core/racing/application/use-cases/GetLeagueMembershipsUseCase';
import { GetLeagueScheduleUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueScheduleUseCase'; import { GetLeagueScheduleUseCase } from '@core/racing/application/use-cases/GetLeagueScheduleUseCase';
import { GetLeagueStatsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStatsUseCase'; import { GetLeagueStatsUseCase } from '@core/racing/application/use-cases/GetLeagueStatsUseCase';
import { GetLeagueAdminPermissionsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueAdminPermissionsUseCase'; import { GetLeagueAdminPermissionsUseCase } from '@core/racing/application/use-cases/GetLeagueAdminPermissionsUseCase';
// Define injection tokens // Define injection tokens
export const LEAGUE_REPOSITORY_TOKEN = 'ILeagueRepository'; export const LEAGUE_REPOSITORY_TOKEN = 'ILeagueRepository';

View File

@@ -1,19 +1,19 @@
import { LeagueService } from './LeagueService'; import { LeagueService } from './LeagueService';
import { GetAllLeaguesWithCapacityUseCase } from '@gridpilot/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase'; import { GetAllLeaguesWithCapacityUseCase } from '@core/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase';
import { GetLeagueStandingsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStandingsUseCase'; import { GetLeagueStandingsUseCase } from '@core/racing/application/use-cases/GetLeagueStandingsUseCase';
import { GetLeagueStatsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStatsUseCase'; import { GetLeagueStatsUseCase } from '@core/racing/application/use-cases/GetLeagueStatsUseCase';
import { GetLeagueFullConfigUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueFullConfigUseCase'; import { GetLeagueFullConfigUseCase } from '@core/racing/application/use-cases/GetLeagueFullConfigUseCase';
import { CreateLeagueWithSeasonAndScoringUseCase } from '@gridpilot/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase'; import { CreateLeagueWithSeasonAndScoringUseCase } from '@core/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase';
import { GetRaceProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetRaceProtestsUseCase'; import { GetRaceProtestsUseCase } from '@core/racing/application/use-cases/GetRaceProtestsUseCase';
import { GetTotalLeaguesUseCase } from '@gridpilot/racing/application/use-cases/GetTotalLeaguesUseCase'; import { GetTotalLeaguesUseCase } from '@core/racing/application/use-cases/GetTotalLeaguesUseCase';
import { GetLeagueJoinRequestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueJoinRequestsUseCase'; import { GetLeagueJoinRequestsUseCase } from '@core/racing/application/use-cases/GetLeagueJoinRequestsUseCase';
import { ApproveLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/ApproveLeagueJoinRequestUseCase'; import { ApproveLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/ApproveLeagueJoinRequestUseCase';
import { RejectLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/RejectLeagueJoinRequestUseCase'; import { RejectLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/RejectLeagueJoinRequestUseCase';
import { RemoveLeagueMemberUseCase } from '@gridpilot/racing/application/use-cases/RemoveLeagueMemberUseCase'; import { RemoveLeagueMemberUseCase } from '@core/racing/application/use-cases/RemoveLeagueMemberUseCase';
import { UpdateLeagueMemberRoleUseCase } from '@gridpilot/racing/application/use-cases/UpdateLeagueMemberRoleUseCase'; import { UpdateLeagueMemberRoleUseCase } from '@core/racing/application/use-cases/UpdateLeagueMemberRoleUseCase';
import { GetLeagueOwnerSummaryUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueOwnerSummaryUseCase'; import { GetLeagueOwnerSummaryUseCase } from '@core/racing/application/use-cases/GetLeagueOwnerSummaryUseCase';
import { GetLeagueProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueProtestsUseCase'; import { GetLeagueProtestsUseCase } from '@core/racing/application/use-cases/GetLeagueProtestsUseCase';
import { Logger } from '@gridpilot/shared/application/Logger'; import { Logger } from '@core/shared/application/Logger';
describe('LeagueService', () => { describe('LeagueService', () => {
let service: LeagueService; let service: LeagueService;

View File

@@ -2,27 +2,27 @@ import { Injectable, Inject } from '@nestjs/common';
import { AllLeaguesWithCapacityViewModel, LeagueStatsDto, LeagueJoinRequestViewModel, ApproveJoinRequestInput, ApproveJoinRequestOutput, RejectJoinRequestInput, RejectJoinRequestOutput, LeagueAdminPermissionsViewModel, RemoveLeagueMemberInput, RemoveLeagueMemberOutput, UpdateLeagueMemberRoleInput, UpdateLeagueMemberRoleOutput, LeagueOwnerSummaryViewModel, LeagueConfigFormModelDto, LeagueAdminProtestsViewModel, LeagueSeasonSummaryViewModel, GetLeagueAdminPermissionsInput, GetLeagueProtestsQuery, GetLeagueSeasonsQuery, GetLeagueAdminConfigQuery, GetLeagueOwnerSummaryQuery, LeagueMembershipsViewModel, LeagueStandingsViewModel, LeagueScheduleViewModel, LeagueStatsViewModel, LeagueAdminViewModel, CreateLeagueInput, CreateLeagueOutput } from './dto/LeagueDto'; import { AllLeaguesWithCapacityViewModel, LeagueStatsDto, LeagueJoinRequestViewModel, ApproveJoinRequestInput, ApproveJoinRequestOutput, RejectJoinRequestInput, RejectJoinRequestOutput, LeagueAdminPermissionsViewModel, RemoveLeagueMemberInput, RemoveLeagueMemberOutput, UpdateLeagueMemberRoleInput, UpdateLeagueMemberRoleOutput, LeagueOwnerSummaryViewModel, LeagueConfigFormModelDto, LeagueAdminProtestsViewModel, LeagueSeasonSummaryViewModel, GetLeagueAdminPermissionsInput, GetLeagueProtestsQuery, GetLeagueSeasonsQuery, GetLeagueAdminConfigQuery, GetLeagueOwnerSummaryQuery, LeagueMembershipsViewModel, LeagueStandingsViewModel, LeagueScheduleViewModel, LeagueStatsViewModel, LeagueAdminViewModel, CreateLeagueInput, CreateLeagueOutput } from './dto/LeagueDto';
// Core imports // Core imports
import { Logger } from '@gridpilot/shared/application/Logger'; import { Logger } from '@core/shared/application/Logger';
// Use cases // Use cases
import { GetAllLeaguesWithCapacityUseCase } from '@gridpilot/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase'; import { GetAllLeaguesWithCapacityUseCase } from '@core/racing/application/use-cases/GetAllLeaguesWithCapacityUseCase';
import { GetLeagueStandingsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStandingsUseCase'; import { GetLeagueStandingsUseCase } from '@core/racing/application/use-cases/GetLeagueStandingsUseCase';
import { GetLeagueStatsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueStatsUseCase'; import { GetLeagueStatsUseCase } from '@core/racing/application/use-cases/GetLeagueStatsUseCase';
import { GetLeagueFullConfigUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueFullConfigUseCase'; import { GetLeagueFullConfigUseCase } from '@core/racing/application/use-cases/GetLeagueFullConfigUseCase';
import { CreateLeagueWithSeasonAndScoringUseCase } from '@gridpilot/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase'; import { CreateLeagueWithSeasonAndScoringUseCase } from '@core/racing/application/use-cases/CreateLeagueWithSeasonAndScoringUseCase';
import { GetRaceProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetRaceProtestsUseCase'; import { GetRaceProtestsUseCase } from '@core/racing/application/use-cases/GetRaceProtestsUseCase';
import { GetTotalLeaguesUseCase } from '@gridpilot/racing/application/use-cases/GetTotalLeaguesUseCase'; import { GetTotalLeaguesUseCase } from '@core/racing/application/use-cases/GetTotalLeaguesUseCase';
import { GetLeagueJoinRequestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueJoinRequestsUseCase'; import { GetLeagueJoinRequestsUseCase } from '@core/racing/application/use-cases/GetLeagueJoinRequestsUseCase';
import { ApproveLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/ApproveLeagueJoinRequestUseCase'; import { ApproveLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/ApproveLeagueJoinRequestUseCase';
import { RejectLeagueJoinRequestUseCase } from '@gridpilot/racing/application/use-cases/RejectLeagueJoinRequestUseCase'; import { RejectLeagueJoinRequestUseCase } from '@core/racing/application/use-cases/RejectLeagueJoinRequestUseCase';
import { RemoveLeagueMemberUseCase } from '@gridpilot/racing/application/use-cases/RemoveLeagueMemberUseCase'; import { RemoveLeagueMemberUseCase } from '@core/racing/application/use-cases/RemoveLeagueMemberUseCase';
import { UpdateLeagueMemberRoleUseCase } from '@gridpilot/racing/application/use-cases/UpdateLeagueMemberRoleUseCase'; import { UpdateLeagueMemberRoleUseCase } from '@core/racing/application/use-cases/UpdateLeagueMemberRoleUseCase';
import { GetLeagueOwnerSummaryUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueOwnerSummaryUseCase'; import { GetLeagueOwnerSummaryUseCase } from '@core/racing/application/use-cases/GetLeagueOwnerSummaryUseCase';
import { GetLeagueProtestsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueProtestsUseCase'; import { GetLeagueProtestsUseCase } from '@core/racing/application/use-cases/GetLeagueProtestsUseCase';
import { GetLeagueSeasonsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueSeasonsUseCase'; import { GetLeagueSeasonsUseCase } from '@core/racing/application/use-cases/GetLeagueSeasonsUseCase';
import { GetLeagueMembershipsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueMembershipsUseCase'; import { GetLeagueMembershipsUseCase } from '@core/racing/application/use-cases/GetLeagueMembershipsUseCase';
import { GetLeagueScheduleUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueScheduleUseCase'; import { GetLeagueScheduleUseCase } from '@core/racing/application/use-cases/GetLeagueScheduleUseCase';
import { GetLeagueAdminPermissionsUseCase } from '@gridpilot/racing/application/use-cases/GetLeagueAdminPermissionsUseCase'; import { GetLeagueAdminPermissionsUseCase } from '@core/racing/application/use-cases/GetLeagueAdminPermissionsUseCase';
// API Presenters // API Presenters
import { LeagueStandingsPresenter } from './presenters/LeagueStandingsPresenter'; import { LeagueStandingsPresenter } from './presenters/LeagueStandingsPresenter';

View File

@@ -1,4 +1,4 @@
import { IAllLeaguesWithCapacityPresenter, AllLeaguesWithCapacityResultDTO, AllLeaguesWithCapacityViewModel } from '@gridpilot/racing/application/presenters/IAllLeaguesWithCapacityPresenter'; import { IAllLeaguesWithCapacityPresenter, AllLeaguesWithCapacityResultDTO, AllLeaguesWithCapacityViewModel } from '@core/racing/application/presenters/IAllLeaguesWithCapacityPresenter';
export class AllLeaguesWithCapacityPresenter implements IAllLeaguesWithCapacityPresenter { export class AllLeaguesWithCapacityPresenter implements IAllLeaguesWithCapacityPresenter {
private result: AllLeaguesWithCapacityViewModel | null = null; private result: AllLeaguesWithCapacityViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IApproveLeagueJoinRequestPresenter, ApproveLeagueJoinRequestResultDTO, ApproveLeagueJoinRequestViewModel } from '@gridpilot/racing/application/presenters/IApproveLeagueJoinRequestPresenter'; import { IApproveLeagueJoinRequestPresenter, ApproveLeagueJoinRequestResultDTO, ApproveLeagueJoinRequestViewModel } from '@core/racing/application/presenters/IApproveLeagueJoinRequestPresenter';
export class ApproveLeagueJoinRequestPresenter implements IApproveLeagueJoinRequestPresenter { export class ApproveLeagueJoinRequestPresenter implements IApproveLeagueJoinRequestPresenter {
private result: ApproveLeagueJoinRequestViewModel | null = null; private result: ApproveLeagueJoinRequestViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetLeagueAdminPermissionsPresenter, GetLeagueAdminPermissionsResultDTO, GetLeagueAdminPermissionsViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueAdminPermissionsPresenter'; import { IGetLeagueAdminPermissionsPresenter, GetLeagueAdminPermissionsResultDTO, GetLeagueAdminPermissionsViewModel } from '@core/racing/application/presenters/IGetLeagueAdminPermissionsPresenter';
export class GetLeagueAdminPermissionsPresenter implements IGetLeagueAdminPermissionsPresenter { export class GetLeagueAdminPermissionsPresenter implements IGetLeagueAdminPermissionsPresenter {
private result: GetLeagueAdminPermissionsViewModel | null = null; private result: GetLeagueAdminPermissionsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetLeagueMembershipsPresenter, GetLeagueMembershipsResultDTO, GetLeagueMembershipsViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueMembershipsPresenter'; import { IGetLeagueMembershipsPresenter, GetLeagueMembershipsResultDTO, GetLeagueMembershipsViewModel } from '@core/racing/application/presenters/IGetLeagueMembershipsPresenter';
import { LeagueMembershipsViewModel } from '../dto/LeagueDto'; import { LeagueMembershipsViewModel } from '../dto/LeagueDto';
export class GetLeagueMembershipsPresenter implements IGetLeagueMembershipsPresenter { export class GetLeagueMembershipsPresenter implements IGetLeagueMembershipsPresenter {

View File

@@ -1,4 +1,4 @@
import { IGetLeagueOwnerSummaryPresenter, GetLeagueOwnerSummaryResultDTO, GetLeagueOwnerSummaryViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueOwnerSummaryPresenter'; import { IGetLeagueOwnerSummaryPresenter, GetLeagueOwnerSummaryResultDTO, GetLeagueOwnerSummaryViewModel } from '@core/racing/application/presenters/IGetLeagueOwnerSummaryPresenter';
export class GetLeagueOwnerSummaryPresenter implements IGetLeagueOwnerSummaryPresenter { export class GetLeagueOwnerSummaryPresenter implements IGetLeagueOwnerSummaryPresenter {
private result: GetLeagueOwnerSummaryViewModel | null = null; private result: GetLeagueOwnerSummaryViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetLeagueProtestsPresenter, GetLeagueProtestsResultDTO, GetLeagueProtestsViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueProtestsPresenter'; import { IGetLeagueProtestsPresenter, GetLeagueProtestsResultDTO, GetLeagueProtestsViewModel } from '@core/racing/application/presenters/IGetLeagueProtestsPresenter';
export class GetLeagueProtestsPresenter implements IGetLeagueProtestsPresenter { export class GetLeagueProtestsPresenter implements IGetLeagueProtestsPresenter {
private result: GetLeagueProtestsViewModel | null = null; private result: GetLeagueProtestsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetLeagueSeasonsPresenter, GetLeagueSeasonsResultDTO, GetLeagueSeasonsViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueSeasonsPresenter'; import { IGetLeagueSeasonsPresenter, GetLeagueSeasonsResultDTO, GetLeagueSeasonsViewModel } from '@core/racing/application/presenters/IGetLeagueSeasonsPresenter';
export class GetLeagueSeasonsPresenter implements IGetLeagueSeasonsPresenter { export class GetLeagueSeasonsPresenter implements IGetLeagueSeasonsPresenter {
private result: GetLeagueSeasonsViewModel | null = null; private result: GetLeagueSeasonsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { ILeagueFullConfigPresenter, LeagueFullConfigData, LeagueConfigFormViewModel } from '@gridpilot/racing/application/presenters/ILeagueFullConfigPresenter'; import { ILeagueFullConfigPresenter, LeagueFullConfigData, LeagueConfigFormViewModel } from '@core/racing/application/presenters/ILeagueFullConfigPresenter';
import { LeagueConfigFormModelDto } from '../dto/LeagueDto'; import { LeagueConfigFormModelDto } from '../dto/LeagueDto';
export class LeagueConfigPresenter implements ILeagueFullConfigPresenter { export class LeagueConfigPresenter implements ILeagueFullConfigPresenter {

View File

@@ -1,4 +1,4 @@
import { IGetLeagueJoinRequestsPresenter, GetLeagueJoinRequestsResultDTO, GetLeagueJoinRequestsViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueJoinRequestsPresenter'; import { IGetLeagueJoinRequestsPresenter, GetLeagueJoinRequestsResultDTO, GetLeagueJoinRequestsViewModel } from '@core/racing/application/presenters/IGetLeagueJoinRequestsPresenter';
export class LeagueJoinRequestsPresenter implements IGetLeagueJoinRequestsPresenter { export class LeagueJoinRequestsPresenter implements IGetLeagueJoinRequestsPresenter {
private result: GetLeagueJoinRequestsViewModel | null = null; private result: GetLeagueJoinRequestsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetLeagueSchedulePresenter, GetLeagueScheduleResultDTO, LeagueScheduleViewModel } from '@gridpilot/racing/application/presenters/IGetLeagueSchedulePresenter'; import { IGetLeagueSchedulePresenter, GetLeagueScheduleResultDTO, LeagueScheduleViewModel } from '@core/racing/application/presenters/IGetLeagueSchedulePresenter';
export class LeagueSchedulePresenter implements IGetLeagueSchedulePresenter { export class LeagueSchedulePresenter implements IGetLeagueSchedulePresenter {
private result: LeagueScheduleViewModel | null = null; private result: LeagueScheduleViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { ILeagueStandingsPresenter, LeagueStandingsResultDTO, LeagueStandingsViewModel } from '@gridpilot/racing/application/presenters/ILeagueStandingsPresenter'; import { ILeagueStandingsPresenter, LeagueStandingsResultDTO, LeagueStandingsViewModel } from '@core/racing/application/presenters/ILeagueStandingsPresenter';
export class LeagueStandingsPresenter implements ILeagueStandingsPresenter { export class LeagueStandingsPresenter implements ILeagueStandingsPresenter {
private result: LeagueStandingsViewModel | null = null; private result: LeagueStandingsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { ILeagueStatsPresenter, LeagueStatsResultDTO, LeagueStatsViewModel } from '@gridpilot/racing/application/presenters/ILeagueStatsPresenter'; import { ILeagueStatsPresenter, LeagueStatsResultDTO, LeagueStatsViewModel } from '@core/racing/application/presenters/ILeagueStatsPresenter';
export class LeagueStatsPresenter implements ILeagueStatsPresenter { export class LeagueStatsPresenter implements ILeagueStatsPresenter {
private result: LeagueStatsViewModel | null = null; private result: LeagueStatsViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IRejectLeagueJoinRequestPresenter, RejectLeagueJoinRequestResultDTO, RejectLeagueJoinRequestViewModel } from '@gridpilot/racing/application/presenters/IRejectLeagueJoinRequestPresenter'; import { IRejectLeagueJoinRequestPresenter, RejectLeagueJoinRequestResultDTO, RejectLeagueJoinRequestViewModel } from '@core/racing/application/presenters/IRejectLeagueJoinRequestPresenter';
export class RejectLeagueJoinRequestPresenter implements IRejectLeagueJoinRequestPresenter { export class RejectLeagueJoinRequestPresenter implements IRejectLeagueJoinRequestPresenter {
private result: RejectLeagueJoinRequestViewModel | null = null; private result: RejectLeagueJoinRequestViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IRemoveLeagueMemberPresenter, RemoveLeagueMemberResultDTO, RemoveLeagueMemberViewModel } from '@gridpilot/racing/application/presenters/IRemoveLeagueMemberPresenter'; import { IRemoveLeagueMemberPresenter, RemoveLeagueMemberResultDTO, RemoveLeagueMemberViewModel } from '@core/racing/application/presenters/IRemoveLeagueMemberPresenter';
export class RemoveLeagueMemberPresenter implements IRemoveLeagueMemberPresenter { export class RemoveLeagueMemberPresenter implements IRemoveLeagueMemberPresenter {
private result: RemoveLeagueMemberViewModel | null = null; private result: RemoveLeagueMemberViewModel | null = null;

View File

@@ -1,4 +1,4 @@
import { IGetTotalLeaguesPresenter, GetTotalLeaguesResultDTO, GetTotalLeaguesViewModel } from '@gridpilot/racing/application/presenters/IGetTotalLeaguesPresenter'; import { IGetTotalLeaguesPresenter, GetTotalLeaguesResultDTO, GetTotalLeaguesViewModel } from '@core/racing/application/presenters/IGetTotalLeaguesPresenter';
import { LeagueStatsDto } from '../dto/LeagueDto'; import { LeagueStatsDto } from '../dto/LeagueDto';
export class TotalLeaguesPresenter implements IGetTotalLeaguesPresenter { export class TotalLeaguesPresenter implements IGetTotalLeaguesPresenter {

View File

@@ -1,4 +1,4 @@
import { IUpdateLeagueMemberRolePresenter, UpdateLeagueMemberRoleResultDTO, UpdateLeagueMemberRoleViewModel } from '@gridpilot/racing/application/presenters/IUpdateLeagueMemberRolePresenter'; import { IUpdateLeagueMemberRolePresenter, UpdateLeagueMemberRoleResultDTO, UpdateLeagueMemberRoleViewModel } from '@core/racing/application/presenters/IUpdateLeagueMemberRolePresenter';
export class UpdateLeagueMemberRolePresenter implements IUpdateLeagueMemberRolePresenter { export class UpdateLeagueMemberRolePresenter implements IUpdateLeagueMemberRolePresenter {
private result: UpdateLeagueMemberRoleViewModel | null = null; private result: UpdateLeagueMemberRoleViewModel | null = null;

View File

@@ -2,13 +2,13 @@ import { Provider } from '@nestjs/common';
import { MediaService } from './MediaService'; import { MediaService } from './MediaService';
// Import core interfaces // Import core interfaces
import { IAvatarGenerationRepository } from '@gridpilot/media/domain/repositories/IAvatarGenerationRepository'; import { IAvatarGenerationRepository } from '@core/media/domain/repositories/IAvatarGenerationRepository';
import { FaceValidationPort } from '@gridpilot/media/application/ports/FaceValidationPort'; import { FaceValidationPort } from '@core/media/application/ports/FaceValidationPort';
import { AvatarGenerationPort } from '@gridpilot/media/application/ports/AvatarGenerationPort'; import { AvatarGenerationPort } from '@core/media/application/ports/AvatarGenerationPort';
import { Logger } from '@gridpilot/shared/application'; import { Logger } from '@core/shared/application';
// Import use cases // Import use cases
import { RequestAvatarGenerationUseCase } from '@gridpilot/media/application/use-cases/RequestAvatarGenerationUseCase'; import { RequestAvatarGenerationUseCase } from '@core/media/application/use-cases/RequestAvatarGenerationUseCase';
// Define injection tokens // Define injection tokens
export const AVATAR_GENERATION_REPOSITORY_TOKEN = 'IAvatarGenerationRepository'; export const AVATAR_GENERATION_REPOSITORY_TOKEN = 'IAvatarGenerationRepository';

View File

@@ -2,14 +2,14 @@ import { Injectable, Inject } from '@nestjs/common';
import { RequestAvatarGenerationInput, RequestAvatarGenerationOutput } from './dto/MediaDto'; import { RequestAvatarGenerationInput, RequestAvatarGenerationOutput } from './dto/MediaDto';
// Use cases // Use cases
import { RequestAvatarGenerationUseCase } from '@gridpilot/media/application/use-cases/RequestAvatarGenerationUseCase'; import { RequestAvatarGenerationUseCase } from '@core/media/application/use-cases/RequestAvatarGenerationUseCase';
// Presenters // Presenters
import { RequestAvatarGenerationPresenter } from './presenters/RequestAvatarGenerationPresenter'; import { RequestAvatarGenerationPresenter } from './presenters/RequestAvatarGenerationPresenter';
// Tokens // Tokens
import { REQUEST_AVATAR_GENERATION_USE_CASE_TOKEN, LOGGER_TOKEN } from './MediaProviders'; import { REQUEST_AVATAR_GENERATION_USE_CASE_TOKEN, LOGGER_TOKEN } from './MediaProviders';
import { Logger } from '@gridpilot/shared/application'; import { Logger } from '@core/shared/application';
@Injectable() @Injectable()
export class MediaService { export class MediaService {

View File

@@ -1,5 +1,5 @@
import { RequestAvatarGenerationOutput } from '../dto/MediaDto'; import { RequestAvatarGenerationOutput } from '../dto/MediaDto';
import type { IRequestAvatarGenerationPresenter, RequestAvatarGenerationResultDTO } from '@gridpilot/media/application/presenters/IRequestAvatarGenerationPresenter'; import type { IRequestAvatarGenerationPresenter, RequestAvatarGenerationResultDTO } from '@core/media/application/presenters/IRequestAvatarGenerationPresenter';
export class RequestAvatarGenerationPresenter implements IRequestAvatarGenerationPresenter { export class RequestAvatarGenerationPresenter implements IRequestAvatarGenerationPresenter {
private result: RequestAvatarGenerationOutput | null = null; private result: RequestAvatarGenerationOutput | null = null;

View File

@@ -2,32 +2,32 @@ import { Provider } from '@nestjs/common';
import { PaymentsService } from './PaymentsService'; import { PaymentsService } from './PaymentsService';
// Import core interfaces // Import core interfaces
import type { IPaymentRepository } from '@gridpilot/payments/domain/repositories/IPaymentRepository'; import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { IMembershipFeeRepository, IMemberPaymentRepository } from '@gridpilot/payments/domain/repositories/IMembershipFeeRepository'; import type { IMembershipFeeRepository, IMemberPaymentRepository } from '@core/payments/domain/repositories/IMembershipFeeRepository';
import type { IPrizeRepository } from '@gridpilot/payments/domain/repositories/IPrizeRepository'; import type { IPrizeRepository } from '@core/payments/domain/repositories/IPrizeRepository';
import type { IWalletRepository, ITransactionRepository } from '@gridpilot/payments/domain/repositories/IWalletRepository'; import type { IWalletRepository, ITransactionRepository } from '@core/payments/domain/repositories/IWalletRepository';
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
// Import use cases // Import use cases
import { GetPaymentsUseCase } from '@gridpilot/payments/application/use-cases/GetPaymentsUseCase'; import { GetPaymentsUseCase } from '@core/payments/application/use-cases/GetPaymentsUseCase';
import { CreatePaymentUseCase } from '@gridpilot/payments/application/use-cases/CreatePaymentUseCase'; import { CreatePaymentUseCase } from '@core/payments/application/use-cases/CreatePaymentUseCase';
import { UpdatePaymentStatusUseCase } from '@gridpilot/payments/application/use-cases/UpdatePaymentStatusUseCase'; import { UpdatePaymentStatusUseCase } from '@core/payments/application/use-cases/UpdatePaymentStatusUseCase';
import { GetMembershipFeesUseCase } from '@gridpilot/payments/application/use-cases/GetMembershipFeesUseCase'; import { GetMembershipFeesUseCase } from '@core/payments/application/use-cases/GetMembershipFeesUseCase';
import { UpsertMembershipFeeUseCase } from '@gridpilot/payments/application/use-cases/UpsertMembershipFeeUseCase'; import { UpsertMembershipFeeUseCase } from '@core/payments/application/use-cases/UpsertMembershipFeeUseCase';
import { UpdateMemberPaymentUseCase } from '@gridpilot/payments/application/use-cases/UpdateMemberPaymentUseCase'; import { UpdateMemberPaymentUseCase } from '@core/payments/application/use-cases/UpdateMemberPaymentUseCase';
import { GetPrizesUseCase } from '@gridpilot/payments/application/use-cases/GetPrizesUseCase'; import { GetPrizesUseCase } from '@core/payments/application/use-cases/GetPrizesUseCase';
import { CreatePrizeUseCase } from '@gridpilot/payments/application/use-cases/CreatePrizeUseCase'; import { CreatePrizeUseCase } from '@core/payments/application/use-cases/CreatePrizeUseCase';
import { AwardPrizeUseCase } from '@gridpilot/payments/application/use-cases/AwardPrizeUseCase'; import { AwardPrizeUseCase } from '@core/payments/application/use-cases/AwardPrizeUseCase';
import { DeletePrizeUseCase } from '@gridpilot/payments/application/use-cases/DeletePrizeUseCase'; import { DeletePrizeUseCase } from '@core/payments/application/use-cases/DeletePrizeUseCase';
import { GetWalletUseCase } from '@gridpilot/payments/application/use-cases/GetWalletUseCase'; import { GetWalletUseCase } from '@core/payments/application/use-cases/GetWalletUseCase';
import { ProcessWalletTransactionUseCase } from '@gridpilot/payments/application/use-cases/ProcessWalletTransactionUseCase'; import { ProcessWalletTransactionUseCase } from '@core/payments/application/use-cases/ProcessWalletTransactionUseCase';
// Import concrete in-memory implementations // Import concrete in-memory implementations
import { InMemoryPaymentRepository } from '/payments/persistence/inmemory/InMemoryPaymentRepository'; import { InMemoryPaymentRepository } from '/payments/persistence/inmemory/InMemoryPaymentRepository';
import { InMemoryMembershipFeeRepository, InMemoryMemberPaymentRepository } from '/payments/persistence/inmemory/InMemoryMembershipFeeRepository'; import { InMemoryMembershipFeeRepository, InMemoryMemberPaymentRepository } from '/payments/persistence/inmemory/InMemoryMembershipFeeRepository';
import { InMemoryPrizeRepository } from '/payments/persistence/inmemory/InMemoryPrizeRepository'; import { InMemoryPrizeRepository } from '/payments/persistence/inmemory/InMemoryPrizeRepository';
import { InMemoryWalletRepository, InMemoryTransactionRepository } from '/payments/persistence/inmemory/InMemoryWalletRepository'; import { InMemoryWalletRepository, InMemoryTransactionRepository } from '/payments/persistence/inmemory/InMemoryWalletRepository';
import { ConsoleLogger } from '/logging/ConsoleLogger'; import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
// Repository injection tokens // Repository injection tokens
export const PAYMENT_REPOSITORY_TOKEN = 'IPaymentRepository'; export const PAYMENT_REPOSITORY_TOKEN = 'IPaymentRepository';

View File

@@ -1,19 +1,19 @@
import { Injectable, Inject } from '@nestjs/common'; import { Injectable, Inject } from '@nestjs/common';
import type { Logger } from '@gridpilot/shared/application/Logger'; import type { Logger } from '@core/shared/application/Logger';
// Use cases // Use cases
import type { GetPaymentsUseCase } from '@gridpilot/payments/application/use-cases/GetPaymentsUseCase'; import type { GetPaymentsUseCase } from '@core/payments/application/use-cases/GetPaymentsUseCase';
import type { CreatePaymentUseCase } from '@gridpilot/payments/application/use-cases/CreatePaymentUseCase'; import type { CreatePaymentUseCase } from '@core/payments/application/use-cases/CreatePaymentUseCase';
import type { UpdatePaymentStatusUseCase } from '@gridpilot/payments/application/use-cases/UpdatePaymentStatusUseCase'; import type { UpdatePaymentStatusUseCase } from '@core/payments/application/use-cases/UpdatePaymentStatusUseCase';
import type { GetMembershipFeesUseCase } from '@gridpilot/payments/application/use-cases/GetMembershipFeesUseCase'; import type { GetMembershipFeesUseCase } from '@core/payments/application/use-cases/GetMembershipFeesUseCase';
import type { UpsertMembershipFeeUseCase } from '@gridpilot/payments/application/use-cases/UpsertMembershipFeeUseCase'; import type { UpsertMembershipFeeUseCase } from '@core/payments/application/use-cases/UpsertMembershipFeeUseCase';
import type { UpdateMemberPaymentUseCase } from '@gridpilot/payments/application/use-cases/UpdateMemberPaymentUseCase'; import type { UpdateMemberPaymentUseCase } from '@core/payments/application/use-cases/UpdateMemberPaymentUseCase';
import type { GetPrizesUseCase } from '@gridpilot/payments/application/use-cases/GetPrizesUseCase'; import type { GetPrizesUseCase } from '@core/payments/application/use-cases/GetPrizesUseCase';
import type { CreatePrizeUseCase } from '@gridpilot/payments/application/use-cases/CreatePrizeUseCase'; import type { CreatePrizeUseCase } from '@core/payments/application/use-cases/CreatePrizeUseCase';
import type { AwardPrizeUseCase } from '@gridpilot/payments/application/use-cases/AwardPrizeUseCase'; import type { AwardPrizeUseCase } from '@core/payments/application/use-cases/AwardPrizeUseCase';
import type { DeletePrizeUseCase } from '@gridpilot/payments/application/use-cases/DeletePrizeUseCase'; import type { DeletePrizeUseCase } from '@core/payments/application/use-cases/DeletePrizeUseCase';
import type { GetWalletUseCase } from '@gridpilot/payments/application/use-cases/GetWalletUseCase'; import type { GetWalletUseCase } from '@core/payments/application/use-cases/GetWalletUseCase';
import type { ProcessWalletTransactionUseCase } from '@gridpilot/payments/application/use-cases/ProcessWalletTransactionUseCase'; import type { ProcessWalletTransactionUseCase } from '@core/payments/application/use-cases/ProcessWalletTransactionUseCase';
// Presenters // Presenters
import { GetPaymentsPresenter } from './presenters/GetPaymentsPresenter'; import { GetPaymentsPresenter } from './presenters/GetPaymentsPresenter';

View File

@@ -2,7 +2,7 @@ import type {
IAwardPrizePresenter, IAwardPrizePresenter,
AwardPrizeResultDTO, AwardPrizeResultDTO,
AwardPrizeViewModel, AwardPrizeViewModel,
} from '@gridpilot/payments/application/presenters/IAwardPrizePresenter'; } from '@core/payments/application/presenters/IAwardPrizePresenter';
export class AwardPrizePresenter implements IAwardPrizePresenter { export class AwardPrizePresenter implements IAwardPrizePresenter {
private result: AwardPrizeViewModel | null = null; private result: AwardPrizeViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
ICreatePaymentPresenter, ICreatePaymentPresenter,
CreatePaymentResultDTO, CreatePaymentResultDTO,
CreatePaymentViewModel, CreatePaymentViewModel,
} from '@gridpilot/payments/application/presenters/ICreatePaymentPresenter'; } from '@core/payments/application/presenters/ICreatePaymentPresenter';
export class CreatePaymentPresenter implements ICreatePaymentPresenter { export class CreatePaymentPresenter implements ICreatePaymentPresenter {
private result: CreatePaymentViewModel | null = null; private result: CreatePaymentViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
ICreatePrizePresenter, ICreatePrizePresenter,
CreatePrizeResultDTO, CreatePrizeResultDTO,
CreatePrizeViewModel, CreatePrizeViewModel,
} from '@gridpilot/payments/application/presenters/ICreatePrizePresenter'; } from '@core/payments/application/presenters/ICreatePrizePresenter';
export class CreatePrizePresenter implements ICreatePrizePresenter { export class CreatePrizePresenter implements ICreatePrizePresenter {
private result: CreatePrizeViewModel | null = null; private result: CreatePrizeViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IDeletePrizePresenter, IDeletePrizePresenter,
DeletePrizeResultDTO, DeletePrizeResultDTO,
DeletePrizeViewModel, DeletePrizeViewModel,
} from '@gridpilot/payments/application/presenters/IDeletePrizePresenter'; } from '@core/payments/application/presenters/IDeletePrizePresenter';
export class DeletePrizePresenter implements IDeletePrizePresenter { export class DeletePrizePresenter implements IDeletePrizePresenter {
private result: DeletePrizeViewModel | null = null; private result: DeletePrizeViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IGetMembershipFeesPresenter, IGetMembershipFeesPresenter,
GetMembershipFeesResultDTO, GetMembershipFeesResultDTO,
GetMembershipFeesViewModel, GetMembershipFeesViewModel,
} from '@gridpilot/payments/application/presenters/IGetMembershipFeesPresenter'; } from '@core/payments/application/presenters/IGetMembershipFeesPresenter';
export class GetMembershipFeesPresenter implements IGetMembershipFeesPresenter { export class GetMembershipFeesPresenter implements IGetMembershipFeesPresenter {
private result: GetMembershipFeesViewModel | null = null; private result: GetMembershipFeesViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IGetPaymentsPresenter, IGetPaymentsPresenter,
GetPaymentsResultDTO, GetPaymentsResultDTO,
GetPaymentsViewModel, GetPaymentsViewModel,
} from '@gridpilot/payments/application/presenters/IGetPaymentsPresenter'; } from '@core/payments/application/presenters/IGetPaymentsPresenter';
export class GetPaymentsPresenter implements IGetPaymentsPresenter { export class GetPaymentsPresenter implements IGetPaymentsPresenter {
private result: GetPaymentsViewModel | null = null; private result: GetPaymentsViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IGetPrizesPresenter, IGetPrizesPresenter,
GetPrizesResultDTO, GetPrizesResultDTO,
GetPrizesViewModel, GetPrizesViewModel,
} from '@gridpilot/payments/application/presenters/IGetPrizesPresenter'; } from '@core/payments/application/presenters/IGetPrizesPresenter';
export class GetPrizesPresenter implements IGetPrizesPresenter { export class GetPrizesPresenter implements IGetPrizesPresenter {
private result: GetPrizesViewModel | null = null; private result: GetPrizesViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IGetWalletPresenter, IGetWalletPresenter,
GetWalletResultDTO, GetWalletResultDTO,
GetWalletViewModel, GetWalletViewModel,
} from '@gridpilot/payments/application/presenters/IGetWalletPresenter'; } from '@core/payments/application/presenters/IGetWalletPresenter';
export class GetWalletPresenter implements IGetWalletPresenter { export class GetWalletPresenter implements IGetWalletPresenter {
private result: GetWalletViewModel | null = null; private result: GetWalletViewModel | null = null;

View File

@@ -2,7 +2,7 @@ import type {
IProcessWalletTransactionPresenter, IProcessWalletTransactionPresenter,
ProcessWalletTransactionResultDTO, ProcessWalletTransactionResultDTO,
ProcessWalletTransactionViewModel, ProcessWalletTransactionViewModel,
} from '@gridpilot/payments/application/presenters/IProcessWalletTransactionPresenter'; } from '@core/payments/application/presenters/IProcessWalletTransactionPresenter';
export class ProcessWalletTransactionPresenter implements IProcessWalletTransactionPresenter { export class ProcessWalletTransactionPresenter implements IProcessWalletTransactionPresenter {
private result: ProcessWalletTransactionViewModel | null = null; private result: ProcessWalletTransactionViewModel | null = null;

Some files were not shown because too many files have changed in this diff Show More