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

@@ -1,4 +1,4 @@
import type { ParticipantRef } from '@gridpilot/racing/domain/types/ParticipantRef';
import type { ParticipantRef } from '@core/racing/domain/types/ParticipantRef';
export interface ChampionshipStandingsRowDTO {
participant: ParticipantRef;

View File

@@ -1,4 +1,4 @@
import type { IApplicationError, CommonApplicationErrorKind } from '@gridpilot/shared/errors';
import type { IApplicationError, CommonApplicationErrorKind } from '@core/shared/errors';
export abstract class RacingApplicationError
extends Error

View File

@@ -3,7 +3,7 @@ import type { Season } from '../../domain/entities/Season';
import type { LeagueScoringConfig } from '../../domain/entities/LeagueScoringConfig';
import type { Game } from '../../domain/entities/Game';
import type { LeagueScoringPresetDTO } from '../ports/LeagueScoringPresetProvider';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueSummaryViewModel {
id: string;

View File

@@ -1,5 +1,5 @@
import type { League } from '../../domain/entities/League';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueWithCapacityViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export type AllRacesStatus = 'scheduled' | 'running' | 'completed' | 'cancelled' | 'all';

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface TeamListItemViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface ApproveLeagueJoinRequestViewModel {
success: boolean;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface SponsorDto {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface DashboardDriverSummaryViewModel {
id: string;

View File

@@ -1,6 +1,6 @@
import type { Team } from '../../domain/entities/Team';
import type { TeamMembership } from '../../domain/types/TeamMembership';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface DriverTeamViewModel {
team: {

View File

@@ -1,6 +1,6 @@
import type { Driver } from '../../domain/entities/Driver';
import type { SkillLevel } from '../../domain/services/SkillLevelService';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export type { SkillLevel };

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
import type { GetEntitySponsorshipPricingResultDTO } from '../use-cases/GetEntitySponsorshipPricingUseCase';
export interface IEntitySponsorshipPricingPresenter extends Presenter<GetEntitySponsorshipPricingResultDTO | null, GetEntitySponsorshipPricingResultDTO | null> {}

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface RaceViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface GetLeagueAdminPermissionsViewModel {
canRemoveMember: boolean;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueAdminViewModel {
leagueId: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueJoinRequestViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueMembershipsViewModel {
members: {

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueOwnerSummaryViewModel {
driver: { id: string; name: string };

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface GetLeagueProtestsViewModel {
protests: any[];

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueScheduleViewModel {
races: Array<{

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueSeasonSummaryViewModel {
seasonId: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface SponsorDto {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface SponsorshipPricingItemDto {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface GetTotalLeaguesViewModel {
totalLeagues: number;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface GetTotalRacesViewModel {
totalRaces: number;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface ImportRaceResultsSummaryViewModel {
success: boolean;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueDriverSeasonStatsItemViewModel {
leagueId: string;

View File

@@ -2,7 +2,7 @@ import type { League } from '../../domain/entities/League';
import type { Season } from '../../domain/entities/Season';
import type { LeagueScoringConfig } from '../../domain/entities/LeagueScoringConfig';
import type { Game } from '../../domain/entities/Game';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueConfigFormViewModel {
leagueId: string;

View File

@@ -1,6 +1,6 @@
import type { ChampionshipConfig } from '../../domain/types/ChampionshipConfig';
import type { LeagueScoringPresetDTO } from '../ports/LeagueScoringPresetProvider';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueScoringChampionshipViewModel {
id: string;

View File

@@ -1,5 +1,5 @@
import type { LeagueScoringPresetDTO } from '../ports/LeagueScoringPresetProvider';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface LeagueScoringPresetsViewModel {
presets: LeagueScoringPresetDTO[];

View File

@@ -1,5 +1,5 @@
import type { Standing } from '../../domain/entities/Standing';
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface StandingItemViewModel {
driverId: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface LeagueStatsViewModel {
totalMembers: number;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
import type { GetPendingSponsorshipRequestsResultDTO } from '../use-cases/GetPendingSponsorshipRequestsUseCase';
export type PendingSponsorshipRequestsViewModel = GetPendingSponsorshipRequestsResultDTO;

View File

@@ -1,5 +1,5 @@
import type { SessionType, RaceStatus } from '../../domain/entities/Race';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface RaceDetailEntryViewModel {
id: string;

View File

@@ -1,5 +1,5 @@
import type { Penalty, PenaltyType, PenaltyStatus } from '../../domain/entities/Penalty';
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface RacePenaltyViewModel {
id: string;

View File

@@ -1,5 +1,5 @@
import type { Protest, ProtestStatus, ProtestIncident } from '../../domain/entities/Protest';
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface RaceProtestViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface RaceRegistrationsViewModel {
registeredDriverIds: string[];

View File

@@ -2,7 +2,7 @@ import type { RaceStatus } from '../../domain/entities/Race';
import type { Result } from '../../domain/entities/Result';
import type { Driver } from '../../domain/entities/Driver';
import type { PenaltyType } from '../../domain/entities/Penalty';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface RaceResultsHeaderViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface RaceWithSOFViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface RaceListItemViewModel {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface RejectLeagueJoinRequestViewModel {
success: boolean;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface RemoveLeagueMemberViewModel {
success: boolean;

View File

@@ -1,5 +1,5 @@
import type { SponsorDashboardDTO } from '../use-cases/GetSponsorDashboardUseCase';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export type SponsorDashboardViewModel = SponsorDashboardDTO | null;

View File

@@ -1,5 +1,5 @@
import type { SponsorSponsorshipsDTO } from '../use-cases/GetSponsorSponsorshipsUseCase';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export type SponsorSponsorshipsViewModel = SponsorSponsorshipsDTO | null;

View File

@@ -1,6 +1,6 @@
import type { Team } from '../../domain/entities/Team';
import type { TeamMembership } from '../../domain/types/TeamMembership';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface TeamDetailsViewModel {
team: {

View File

@@ -1,5 +1,5 @@
import type { TeamJoinRequest } from '../../domain/types/TeamMembership';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface TeamJoinRequestViewModel {
requestId: string;

View File

@@ -1,5 +1,5 @@
import type { TeamMembership } from '../../domain/types/TeamMembership';
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export interface TeamMemberViewModel {
driverId: string;

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation';
import type { Presenter } from '@core/shared/presentation';
export type SkillLevel = 'beginner' | 'intermediate' | 'advanced' | 'pro';

View File

@@ -1,4 +1,4 @@
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
import type { Presenter } from '@core/shared/presentation/Presenter';
export interface UpdateLeagueMemberRoleViewModel {
success: boolean;

View File

@@ -10,7 +10,7 @@ import type { ISponsorshipRequestRepository } from '../../domain/repositories/IS
import type { ISeasonSponsorshipRepository } from '../../domain/repositories/ISeasonSponsorshipRepository';
import type { ISeasonRepository } from '../../domain/repositories/ISeasonRepository';
import { SeasonSponsorship } from '../../domain/entities/SeasonSponsorship';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
export interface AcceptSponsorshipRequestDTO {
requestId: string;

View File

@@ -11,7 +11,7 @@ import type { ISponsorshipRequestRepository } from '../../domain/repositories/IS
import type { ISponsorshipPricingRepository } from '../../domain/repositories/ISponsorshipPricingRepository';
import type { ISponsorRepository } from '../../domain/repositories/ISponsorRepository';
import { Money, type Currency } from '../../domain/value-objects/Money';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
import {
EntityNotFoundError,
BusinessRuleViolationError,

View File

@@ -11,7 +11,7 @@ import type { IProtestRepository } from '../../domain/repositories/IProtestRepos
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import { randomUUID } from 'crypto';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
export interface ApplyPenaltyCommand {

View File

@@ -1,6 +1,6 @@
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { IApproveLeagueJoinRequestPresenter, ApproveLeagueJoinRequestResultDTO, ApproveLeagueJoinRequestViewModel } from '../presenters/IApproveLeagueJoinRequestPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface ApproveLeagueJoinRequestUseCaseParams {
leagueId: string;

View File

@@ -7,7 +7,7 @@ import type {
TeamJoinRequest,
} from '../../domain/types/TeamMembership';
import type { ApproveTeamJoinRequestCommandDTO } from '../dto/TeamCommandAndQueryDTO';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
export class ApproveTeamJoinRequestUseCase
implements AsyncUseCase<ApproveTeamJoinRequestCommandDTO, void> {

View File

@@ -1,5 +1,5 @@
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -1,6 +1,6 @@
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
import type { IRaceEventRepository } from '../../domain/repositories/IRaceEventRepository';
import type { IDomainEventPublisher } from '@gridpilot/shared/domain';
import type { IDomainEventPublisher } from '@core/shared/domain';
import type { RaceEventStewardingClosedEvent } from '../../domain/events/RaceEventStewardingClosed';
/**

View File

@@ -1,6 +1,6 @@
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { ICompleteDriverOnboardingPresenter, CompleteDriverOnboardingResultDTO } from '../presenters/ICompleteDriverOnboardingPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
import { Driver } from '../../domain/entities/Driver';
export interface CompleteDriverOnboardingInput {

View File

@@ -5,7 +5,7 @@ import type { IStandingRepository } from '../../domain/repositories/IStandingRep
import type { DriverRatingProvider } from '../ports/DriverRatingProvider';
import { Result } from '../../domain/entities/Result';
import { Standing } from '../../domain/entities/Standing';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -6,8 +6,8 @@ import type { DriverRatingProvider } from '../ports/DriverRatingProvider';
import { Result } from '../../domain/entities/Result';
import { Standing } from '../../domain/entities/Standing';
import { RaceResultGenerator } from '../utils/RaceResultGenerator';
import { RatingUpdateService } from '@gridpilot/identity/domain/services/RatingUpdateService';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import { RatingUpdateService } from '@core/identity/domain/services/RatingUpdateService';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -5,7 +5,7 @@ import type { ILeagueRepository } from '../../domain/repositories/ILeagueReposit
import type { ISeasonRepository } from '../../domain/repositories/ISeasonRepository';
import type { ILeagueScoringConfigRepository } from '../../domain/repositories/ILeagueScoringConfigRepository';
import type { LeagueScoringConfig } from '../../domain/entities/LeagueScoringConfig';
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { AsyncUseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
import type {
LeagueScoringPresetProvider,

View File

@@ -11,7 +11,7 @@ import type {
CreateSponsorResultDTO,
CreateSponsorViewModel,
} from '../presenters/ICreateSponsorPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface CreateSponsorInput {
name: string;

View File

@@ -9,7 +9,7 @@ import type {
IAllLeaguesWithCapacityAndScoringPresenter,
LeagueEnrichedData,
} from '../presenters/IAllLeaguesWithCapacityAndScoringPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving all leagues with capacity and scoring information.

View File

@@ -5,7 +5,7 @@ import type {
AllLeaguesWithCapacityResultDTO,
AllLeaguesWithCapacityViewModel,
} from '../presenters/IAllLeaguesWithCapacityPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving all leagues with capacity information.

View File

@@ -1,7 +1,7 @@
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
import type { IGetAllRacesPresenter, GetAllRacesResultDTO, AllRacesPageViewModel } from '../presenters/IGetAllRacesPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetAllRacesUseCaseParams {}

View File

@@ -4,7 +4,7 @@ import type {
IAllTeamsPresenter,
AllTeamsResultDTO,
} from '../presenters/IAllTeamsPresenter';
import type { UseCase } from '@gridpilot/shared/application';
import type { UseCase } from '@core/shared/application';
import type { Team } from '../../domain/entities/Team';
import { Logger } from "@gridpilot/core/shared/application";

View File

@@ -6,8 +6,8 @@ import type { IStandingRepository } from '../../domain/repositories/IStandingRep
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { IRaceRegistrationRepository } from '../../domain/repositories/IRaceRegistrationRepository';
import type { IImageServicePort } from '../ports/IImageServicePort';
import type { IFeedRepository } from '@gridpilot/social/domain/repositories/IFeedRepository';
import type { ISocialGraphRepository } from '@gridpilot/social/domain/repositories/ISocialGraphRepository';
import type { IFeedRepository } from '@core/social/domain/repositories/IFeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import type {
IDashboardOverviewPresenter,
DashboardOverviewViewModel,

View File

@@ -5,7 +5,7 @@ import type {
DriverTeamResultDTO,
DriverTeamViewModel,
} from '../presenters/IDriverTeamPresenter';
import type { UseCase } from '@gridpilot/shared/application';
import type { UseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -7,7 +7,7 @@ import type {
DriversLeaderboardResultDTO,
DriversLeaderboardViewModel,
} from '../presenters/IDriversLeaderboardPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving driver leaderboard data.

View File

@@ -11,7 +11,7 @@ import type { ISeasonSponsorshipRepository } from '../../domain/repositories/ISe
import type { SponsorableEntityType } from '../../domain/entities/SponsorshipRequest';
import type { SponsorshipTier } from '../../domain/entities/SeasonSponsorship';
import type { IEntitySponsorshipPricingPresenter } from '../presenters/IEntitySponsorshipPricingPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetEntitySponsorshipPricingDTO {
entityType: SponsorableEntityType;

View File

@@ -1,7 +1,7 @@
import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { IGetLeagueAdminPermissionsPresenter, GetLeagueAdminPermissionsResultDTO, GetLeagueAdminPermissionsViewModel } from '../presenters/IGetLeagueAdminPermissionsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueAdminPermissionsUseCaseParams {
leagueId: string;

View File

@@ -0,0 +1,37 @@
import type { ILeagueRepository } from '../../domain/repositories/ILeagueRepository';
import type { IGetLeagueAdminPresenter, GetLeagueAdminResultDTO, GetLeagueAdminViewModel } from '../presenters/IGetLeagueAdminPresenter';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueAdminUseCaseParams {
leagueId: string;
}
export interface GetLeagueAdminResultDTO {
league: {
id: string;
ownerId: string;
};
// Additional data would be populated by combining multiple use cases
}
export class GetLeagueAdminUseCase implements UseCase<GetLeagueAdminUseCaseParams, GetLeagueAdminResultDTO, GetLeagueAdminViewModel, IGetLeagueAdminPresenter> {
constructor(
private readonly leagueRepository: ILeagueRepository,
) {}
async execute(params: GetLeagueAdminUseCaseParams, presenter: IGetLeagueAdminPresenter): Promise<void> {
const league = await this.leagueRepository.findById(params.leagueId);
if (!league) {
throw new Error('League not found');
}
const dto: GetLeagueAdminResultDTO = {
league: {
id: league.id,
ownerId: league.ownerId,
},
};
presenter.reset();
presenter.present(dto);
}
}

View File

@@ -7,7 +7,7 @@ import type {
LeagueDriverSeasonStatsResultDTO,
LeagueDriverSeasonStatsViewModel,
} from '../presenters/ILeagueDriverSeasonStatsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface DriverRatingPort {
getRating(driverId: string): { rating: number | null; ratingChange: number | null };

View File

@@ -7,7 +7,7 @@ import type {
LeagueFullConfigData,
LeagueConfigFormViewModel,
} from '../presenters/ILeagueFullConfigPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
import { EntityNotFoundError } from '../errors/RacingApplicationError';
/**

View File

@@ -1,7 +1,7 @@
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { IGetLeagueJoinRequestsPresenter, GetLeagueJoinRequestsResultDTO, GetLeagueJoinRequestsViewModel } from '../presenters/IGetLeagueJoinRequestsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueJoinRequestsUseCaseParams {
leagueId: string;

View File

@@ -2,7 +2,7 @@ import type { ILeagueMembershipRepository } from '../../domain/repositories/ILea
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { LeagueMembership } from '../../domain/entities/LeagueMembership';
import type { IGetLeagueMembershipsPresenter, GetLeagueMembershipsViewModel } from '../presenters/IGetLeagueMembershipsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueMembershipsUseCaseParams {
leagueId: string;

View File

@@ -1,6 +1,6 @@
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { IGetLeagueOwnerSummaryPresenter, GetLeagueOwnerSummaryResultDTO, GetLeagueOwnerSummaryViewModel } from '../presenters/IGetLeagueOwnerSummaryPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueOwnerSummaryUseCaseParams {
ownerId: string;

View File

@@ -2,7 +2,7 @@ import type { IRaceRepository } from '../../domain/repositories/IRaceRepository'
import type { IProtestRepository } from '../../domain/repositories/IProtestRepository';
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { IGetLeagueProtestsPresenter, GetLeagueProtestsResultDTO, GetLeagueProtestsViewModel } from '../presenters/IGetLeagueProtestsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueProtestsUseCaseParams {
leagueId: string;

View File

@@ -1,6 +1,6 @@
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { IGetLeagueSchedulePresenter, GetLeagueScheduleResultDTO, GetLeagueScheduleViewModel } from '../presenters/IGetLeagueSchedulePresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueScheduleUseCaseParams {
leagueId: string;

View File

@@ -8,7 +8,7 @@ import type {
LeagueScoringConfigData,
LeagueScoringConfigViewModel,
} from '../presenters/ILeagueScoringConfigPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving a league's scoring configuration for its active season.

View File

@@ -1,6 +1,6 @@
import type { ISeasonRepository } from '../../domain/repositories/ISeasonRepository';
import type { IGetLeagueSeasonsPresenter, GetLeagueSeasonsResultDTO, GetLeagueSeasonsViewModel } from '../presenters/IGetLeagueSeasonsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueSeasonsUseCaseParams {
leagueId: string;

View File

@@ -5,7 +5,7 @@ import type {
LeagueStandingsResultDTO,
LeagueStandingsViewModel,
} from '../presenters/ILeagueStandingsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueStandingsUseCaseParams {
leagueId: string;

View File

@@ -1,7 +1,7 @@
import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository';
import type { IRaceRepository } from '../../domain/repositories/IRaceRepository';
import type { ILeagueStatsPresenter, LeagueStatsResultDTO, LeagueStatsViewModel } from '../presenters/ILeagueStatsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetLeagueStatsUseCaseParams {
leagueId: string;

View File

@@ -8,7 +8,7 @@ import type { ISponsorshipRequestRepository } from '../../domain/repositories/IS
import type { ISponsorRepository } from '../../domain/repositories/ISponsorRepository';
import type { SponsorableEntityType } from '../../domain/entities/SponsorshipRequest';
import type { SponsorshipTier } from '../../domain/entities/SeasonSponsorship';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
import type {
IPendingSponsorshipRequestsPresenter,
PendingSponsorshipRequestsViewModel,

View File

@@ -2,7 +2,7 @@ import type { IDriverRepository } from '../../domain/repositories/IDriverReposit
import type { ITeamRepository } from '../../domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '../../domain/repositories/ITeamMembershipRepository';
import type { IImageServicePort } from '../ports/IImageServicePort';
import type { ISocialGraphRepository } from '@gridpilot/social/domain/repositories/ISocialGraphRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import type {
IProfileOverviewPresenter,
ProfileOverviewViewModel,

View File

@@ -14,7 +14,7 @@ import type {
RaceDetailEntryViewModel,
RaceDetailUserResultViewModel,
} from '../presenters/IRaceDetailPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case: GetRaceDetailUseCase

View File

@@ -12,7 +12,7 @@ import type {
RacePenaltiesResultDTO,
RacePenaltiesViewModel,
} from '../presenters/IRacePenaltiesPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetRacePenaltiesInput {
raceId: string;

View File

@@ -12,7 +12,7 @@ import type {
RaceProtestsResultDTO,
RaceProtestsViewModel,
} from '../presenters/IRaceProtestsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetRaceProtestsInput {
raceId: string;

View File

@@ -1,11 +1,11 @@
import type { IRaceRegistrationRepository } from '@gridpilot/racing/domain/repositories/IRaceRegistrationRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import type { GetRaceRegistrationsQueryParamsDTO } from '../dto/RaceRegistrationQueryDTO';
import type {
IRaceRegistrationsPresenter,
RaceRegistrationsResultDTO,
RaceRegistrationsViewModel,
} from '../presenters/IRaceRegistrationsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case: GetRaceRegistrationsUseCase

View File

@@ -8,7 +8,7 @@ import type {
RaceResultsDetailViewModel,
RaceResultsPenaltySummaryViewModel,
} from '../presenters/IRaceResultsDetailPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
import type { League } from '../../domain/entities/League';
import type { Result } from '../../domain/entities/Result';
import type { Driver } from '../../domain/entities/Driver';

View File

@@ -15,7 +15,7 @@ import {
type StrengthOfFieldCalculator,
} from '../../domain/services/StrengthOfFieldCalculator';
import type { IRaceWithSOFPresenter, RaceWithSOFResultDTO } from '../presenters/IRaceWithSOFPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetRaceWithSOFQueryParams {
raceId: string;

View File

@@ -4,8 +4,8 @@ import type {
IRacesPagePresenter,
RacesPageResultDTO,
RacesPageViewModel,
} from '@gridpilot/racing/application/presenters/IRacesPagePresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
} from '@core/racing/application/presenters/IRacesPagePresenter';
import type { UseCase } from '@core/shared/application/UseCase';
export class GetRacesPageDataUseCase
implements UseCase<void, RacesPageResultDTO, RacesPageViewModel, IRacesPagePresenter>

View File

@@ -14,7 +14,7 @@ import type {
ISponsorDashboardPresenter,
SponsorDashboardViewModel,
} from '../presenters/ISponsorDashboardPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetSponsorDashboardQueryParams {
sponsorId: string;

View File

@@ -15,7 +15,7 @@ import type {
ISponsorSponsorshipsPresenter,
SponsorSponsorshipsViewModel,
} from '../presenters/ISponsorSponsorshipsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export interface GetSponsorSponsorshipsQueryParams {
sponsorId: string;

View File

@@ -10,7 +10,7 @@ import type {
GetSponsorsResultDTO,
GetSponsorsViewModel,
} from '../presenters/IGetSponsorsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export class GetSponsorsUseCase
implements UseCase<void, GetSponsorsResultDTO, GetSponsorsViewModel, IGetSponsorsPresenter>

View File

@@ -9,7 +9,7 @@ import type {
GetSponsorshipPricingResultDTO,
GetSponsorshipPricingViewModel,
} from '../presenters/IGetSponsorshipPricingPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
export class GetSponsorshipPricingUseCase
implements UseCase<void, GetSponsorshipPricingResultDTO, GetSponsorshipPricingViewModel, IGetSponsorshipPricingPresenter>

View File

@@ -5,7 +5,7 @@ import type {
TeamDetailsResultDTO,
TeamDetailsViewModel,
} from '../presenters/ITeamDetailsPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving team details.

View File

@@ -6,7 +6,7 @@ import type {
TeamJoinRequestsResultDTO,
TeamJoinRequestsViewModel,
} from '../presenters/ITeamJoinRequestsPresenter';
import type { UseCase } from '@gridpilot/shared/application';
import type { UseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -6,7 +6,7 @@ import type {
TeamMembersResultDTO,
TeamMembersViewModel,
} from '../presenters/ITeamMembersPresenter';
import type { UseCase } from '@gridpilot/shared/application';
import type { UseCase } from '@core/shared/application';
import type { Logger } from '../../../shared/src/logging/Logger';
/**

View File

@@ -1,13 +1,13 @@
import type { ITeamRepository } from '@gridpilot/racing/domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '@gridpilot/racing/domain/repositories/ITeamMembershipRepository';
import type { IDriverRepository } from '@gridpilot/racing/domain/repositories/IDriverRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import type {
ITeamsLeaderboardPresenter,
TeamsLeaderboardResultDTO,
TeamsLeaderboardViewModel,
} from '@gridpilot/racing/application/presenters/ITeamsLeaderboardPresenter';
import { SkillLevelService } from '@gridpilot/racing/domain/services/SkillLevelService';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
} from '@core/racing/application/presenters/ITeamsLeaderboardPresenter';
import { SkillLevelService } from '@core/racing/domain/services/SkillLevelService';
import type { UseCase } from '@core/shared/application/UseCase';
interface DriverStatsAdapter {
rating: number | null;

View File

@@ -1,6 +1,6 @@
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
import type { ITotalDriversPresenter, TotalDriversResultDTO } from '../presenters/ITotalDriversPresenter';
import type { UseCase } from '@gridpilot/shared/application/UseCase';
import type { UseCase } from '@core/shared/application/UseCase';
/**
* Use Case for retrieving total number of drivers.

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