fix issues in core

This commit is contained in:
2025-12-23 11:25:08 +01:00
parent 1efd971032
commit 2854ae3c5c
113 changed files with 1142 additions and 458 deletions

View File

@@ -39,12 +39,13 @@ export class JoinRequest implements IEntity<string> {
const id = props.id && props.id.trim().length > 0 ? props.id : `${props.leagueId}:${props.driverId}`;
const requestedAt = props.requestedAt ?? new Date();
const message = props.message;
return new JoinRequest({
id,
leagueId: props.leagueId,
driverId: props.driverId,
requestedAt,
message: props.message,
...(message !== undefined && { message }),
});
}

View File

@@ -11,6 +11,7 @@ import { MembershipRole, MembershipRoleValue } from './MembershipRole';
import { MembershipStatus, MembershipStatusValue } from './MembershipStatus';
import { JoinedAt } from '../value-objects/JoinedAt';
import { DriverId } from './DriverId';
import { JoinRequest } from './JoinRequest';
export interface LeagueMembershipProps {
id?: string;
@@ -82,4 +83,6 @@ export class LeagueMembership implements IEntity<string> {
throw new RacingDomainValidationError('Membership role is required');
}
}
}
}
export { MembershipRole, MembershipStatus, JoinRequest };

View File

@@ -94,23 +94,26 @@ export class Protest implements IEntity<string> {
const defenseRequestedAt = props.defenseRequestedAt ? DefenseRequestedAt.create(props.defenseRequestedAt) : undefined;
const defenseRequestedBy = props.defenseRequestedBy ? StewardId.create(props.defenseRequestedBy) : undefined;
return new Protest({
const protestProps: ProtestProps = {
id,
raceId,
protestingDriverId,
accusedDriverId,
incident,
comment,
proofVideoUrl,
status,
reviewedBy,
decisionNotes,
filedAt,
reviewedAt,
defense,
defenseRequestedAt,
defenseRequestedBy,
});
};
if (comment !== undefined) protestProps.comment = comment;
if (proofVideoUrl !== undefined) protestProps.proofVideoUrl = proofVideoUrl;
if (reviewedBy !== undefined) protestProps.reviewedBy = reviewedBy;
if (decisionNotes !== undefined) protestProps.decisionNotes = decisionNotes;
if (reviewedAt !== undefined) protestProps.reviewedAt = reviewedAt;
if (defense !== undefined) protestProps.defense = defense;
if (defenseRequestedAt !== undefined) protestProps.defenseRequestedAt = defenseRequestedAt;
if (defenseRequestedBy !== undefined) protestProps.defenseRequestedBy = defenseRequestedBy;
return new Protest(protestProps);
}
get id(): string { return this.props.id.toString(); }

View File

@@ -9,7 +9,7 @@ import { RacingDomainValidationError, RacingDomainInvariantError } from '../erro
import type { IEntity } from '@core/shared/domain';
import type { Money } from '../value-objects/Money';
import type { SponsorshipTier } from './SeasonSponsorship';
import type { SponsorshipTier } from './season/SeasonSponsorship';
export type SponsorableEntityType = 'driver' | 'team' | 'race' | 'season';
export type SponsorshipRequestStatus = 'pending' | 'accepted' | 'rejected' | 'withdrawn';

View File

@@ -0,0 +1 @@
export * from './Result';

View File

@@ -0,0 +1,3 @@
export * from './Season';
export * from './SeasonId';
export * from './SeasonSponsorship';

View File

@@ -30,8 +30,8 @@ export class Sponsor implements IEntity<SponsorId> {
this.id = props.id;
this.name = props.name;
this.contactEmail = props.contactEmail;
this.logoUrl = props.logoUrl;
this.websiteUrl = props.websiteUrl;
this.logoUrl = props.logoUrl ?? undefined;
this.websiteUrl = props.websiteUrl ?? undefined;
this.createdAt = props.createdAt;
}