website refactor

This commit is contained in:
2026-01-16 21:40:26 +01:00
parent ae910da21a
commit 2d322b42e1
170 changed files with 438 additions and 474 deletions

View File

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

View File

@@ -1,5 +1,5 @@
import { GameRepository } from '@core/racing/domain/repositories/GameRepository';
import { Game } from '@core/racing/domain/entities/Game';
import { GameRepository } from '@core/racing/domain/repositories/GameRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryGameRepository implements GameRepository {

View File

@@ -1,6 +1,6 @@
import { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryLeagueMembershipRepository implements LeagueMembershipRepository {

View File

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

View File

@@ -1,5 +1,5 @@
import { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryLeagueScoringConfigRepository implements LeagueScoringConfigRepository {

View File

@@ -1,4 +1,4 @@
import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';
import { InMemoryLeagueScoringPresetProvider } from './InMemoryLeagueScoringPresetProvider';
describe('InMemoryLeagueScoringPresetProvider', () => {

View File

@@ -1,11 +1,11 @@
import {
getLeagueScoringPresetById,
listLeagueScoringPresets,
} from '../../../bootstrap/LeagueScoringPresets';
import type {
LeagueScoringPresetDTO,
LeagueScoringPresetProvider,
LeagueScoringPresetDTO,
LeagueScoringPresetProvider,
} from '@core/racing/application/ports/LeagueScoringPresetProvider';
import {
getLeagueScoringPresetById,
listLeagueScoringPresets,
} from '../../../bootstrap/LeagueScoringPresets';
/**
* Infrastructure adapter exposing the in-memory scoring preset registry

View File

@@ -1,5 +1,5 @@
import { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import { Protest } from '@core/racing/domain/entities/Protest';
import { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryProtestRepository implements ProtestRepository {

View File

@@ -1,5 +1,5 @@
import { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
import { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryRaceRegistrationRepository implements RaceRegistrationRepository {

View File

@@ -1,5 +1,5 @@
import { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { Race, type RaceStatusValue } from '@core/racing/domain/entities/Race';
import { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryRaceRepository implements RaceRepository {

View File

@@ -1,5 +1,5 @@
import { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { Season } from '@core/racing/domain/entities/season/Season';
import { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { Logger } from '@core/shared/domain';
export class InMemorySeasonRepository implements SeasonRepository {

View File

@@ -1,5 +1,5 @@
import { SponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import { SponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import { Logger } from '@core/shared/domain';
export class InMemorySponsorRepository implements SponsorRepository {

View File

@@ -1,5 +1,5 @@
import { SponsorableEntityType, SponsorshipRequest, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import { SponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import { Logger } from '@core/shared/domain';
export class InMemorySponsorshipRequestRepository implements SponsorshipRequestRepository {

View File

@@ -1,5 +1,5 @@
import type { TeamStats, TeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { Logger } from '@core/shared/domain/Logger';
import type { TeamStatsRepository, TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
export class InMemoryTeamStatsRepository implements TeamStatsRepository {
private readonly stats = new Map<string, TeamStats>();

View File

@@ -1,10 +1,10 @@
import { Column, Entity, PrimaryColumn } from 'typeorm';
import type {
SerializedSeasonDropPolicy,
SerializedSeasonSchedule,
SerializedSeasonScoringConfig,
SerializedSeasonStewardingConfig,
SerializedSeasonDropPolicy,
SerializedSeasonSchedule,
SerializedSeasonScoringConfig,
SerializedSeasonStewardingConfig,
} from '../serialized/RacingTypeOrmSerialized';
@Entity({ name: 'racing_seasons' })

View File

@@ -10,25 +10,25 @@ import { Money } from '@core/racing/domain/value-objects/Money';
import { SponsorshipPricing } from '@core/racing/domain/value-objects/SponsorshipPricing';
import {
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
} from '../entities/MissingRacingOrmEntities';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import { MoneyOrmMapper } from './MoneyOrmMapper';
import {
GameOrmMapper,
LeagueWalletOrmMapper,
SeasonSponsorshipOrmMapper,
SponsorOrmMapper,
SponsorshipPricingOrmMapper,
SponsorshipRequestOrmMapper,
TransactionOrmMapper,
GameOrmMapper,
LeagueWalletOrmMapper,
SeasonSponsorshipOrmMapper,
SponsorOrmMapper,
SponsorshipPricingOrmMapper,
SponsorshipRequestOrmMapper,
TransactionOrmMapper,
} from './CommerceOrmMappers';
import { MoneyOrmMapper } from './MoneyOrmMapper';
describe('GameOrmMapper', () => {
it('toDomain uses rehydrate semantics (does not call create)', () => {

View File

@@ -7,24 +7,24 @@ import { SponsorshipRequest, type SponsorableEntityType, type SponsorshipRequest
import { SponsorshipPricing } from '@core/racing/domain/value-objects/SponsorshipPricing';
import {
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
} from '../entities/MissingRacingOrmEntities';
import {
assertArray,
assertBoolean,
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalStringOrNull,
assertRecord,
} from '../schema/TypeOrmSchemaGuards';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import {
assertArray,
assertBoolean,
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalStringOrNull,
assertRecord,
} from '../schema/TypeOrmSchemaGuards';
import { MoneyOrmMapper } from './MoneyOrmMapper';
const VALID_CURRENCIES = ['USD', 'EUR', 'GBP'] as const;

View File

@@ -1,5 +1,5 @@
import { Driver } from '@core/racing/domain/entities/Driver';
import { MediaReference } from '@core/domain/media/MediaReference';
import { Driver } from '@core/racing/domain/entities/Driver';
import { DriverOrmEntity } from '../entities/DriverOrmEntity';
import { assertDate, assertNonEmptyString, assertOptionalStringOrNull } from '../schema/TypeOrmSchemaGuards';

View File

@@ -2,9 +2,9 @@ import type { DriverStats } from '@core/racing/application/use-cases/DriverStats
import { DriverStatsOrmEntity } from '../entities/DriverStatsOrmEntity';
import {
assertNonEmptyString,
assertInteger,
assertNumber
assertInteger,
assertNonEmptyString,
assertNumber
} from '../schema/TypeOrmSchemaGuards';
export class DriverStatsOrmMapper {

View File

@@ -1,10 +1,10 @@
import { League, type LeagueSettings } from '@core/racing/domain/entities/League';
import { MediaReference } from '@core/domain/media/MediaReference';
import { League, type LeagueSettings } from '@core/racing/domain/entities/League';
import { LeagueOrmEntity } from '../entities/LeagueOrmEntity';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import type { SerializedLeagueSettings } from '../serialized/RacingTypeOrmSerialized';
import { assertEnumValue, assertNumber, assertRecord } from '../schema/TypeOrmSchemaGuards';
import type { SerializedLeagueSettings } from '../serialized/RacingTypeOrmSerialized';
const VALID_POINTS_SYSTEMS = ['f1-2024', 'indycar', 'custom'] as const;

View File

@@ -4,8 +4,8 @@ import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringC
import { LeagueScoringConfigOrmEntity } from '../entities/LeagueScoringConfigOrmEntity';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import { LeagueScoringConfigOrmMapper } from './LeagueScoringConfigOrmMapper';
import { ChampionshipConfigJsonMapper, type SerializedChampionshipConfig } from './ChampionshipConfigJsonMapper';
import { LeagueScoringConfigOrmMapper } from './LeagueScoringConfigOrmMapper';
import { PointsTableJsonMapper } from './PointsTableJsonMapper';
describe('LeagueScoringConfigOrmMapper', () => {

View File

@@ -1,8 +1,8 @@
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import { ChampionshipConfigJsonMapper, type SerializedChampionshipConfig } from './ChampionshipConfigJsonMapper';
import { LeagueScoringConfigOrmEntity } from '../entities/LeagueScoringConfigOrmEntity';
import { assertArray, assertNonEmptyString, assertRecord } from '../schema/TypeOrmSchemaGuards';
import { ChampionshipConfigJsonMapper, type SerializedChampionshipConfig } from './ChampionshipConfigJsonMapper';
function assertSerializedChampionshipConfig(value: unknown, index: number): asserts value is SerializedChampionshipConfig {
const entityName = 'LeagueScoringConfig';

View File

@@ -1,4 +1,4 @@
import { Money, type Currency, isCurrency } from '@core/racing/domain/value-objects/Money';
import { isCurrency, Money, type Currency } from '@core/racing/domain/value-objects/Money';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import { assertNumber, assertRecord } from '../schema/TypeOrmSchemaGuards';

View File

@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest';
import { ResultOrmMapper } from './ResultOrmMapper';
import { ResultOrmEntity } from '../entities/ResultOrmEntity';
import { InvalidResultSchemaError } from '../errors/InvalidResultSchemaError';
import { ResultOrmMapper } from './ResultOrmMapper';
describe('ResultOrmMapper', () => {
it('maps persisted schema guard failures into InvalidResultSchemaError', () => {

View File

@@ -14,23 +14,23 @@ import { WeekdaySet } from '@core/racing/domain/value-objects/WeekdaySet';
import { SeasonOrmEntity } from '../entities/SeasonOrmEntity';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import type {
SerializedSeasonDropPolicy,
SerializedSeasonEveryNWeeksRecurrence,
SerializedSeasonMonthlyNthWeekdayRecurrence,
SerializedSeasonSchedule,
SerializedSeasonScoringConfig,
SerializedSeasonStewardingConfig,
SerializedSeasonWeeklyRecurrence,
} from '../serialized/RacingTypeOrmSerialized';
import {
assertArray,
assertEnumValue,
assertInteger,
assertIsoDate,
assertNonEmptyString,
assertRecord,
assertArray,
assertEnumValue,
assertInteger,
assertIsoDate,
assertNonEmptyString,
assertRecord,
} from '../schema/TypeOrmSchemaGuards';
import type {
SerializedSeasonDropPolicy,
SerializedSeasonEveryNWeeksRecurrence,
SerializedSeasonMonthlyNthWeekdayRecurrence,
SerializedSeasonSchedule,
SerializedSeasonScoringConfig,
SerializedSeasonStewardingConfig,
SerializedSeasonWeeklyRecurrence,
} from '../serialized/RacingTypeOrmSerialized';
const VALID_SEASON_STATUSES = [
'planned',

View File

@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest';
import { StandingOrmMapper } from './StandingOrmMapper';
import { StandingOrmEntity } from '../entities/StandingOrmEntity';
import { InvalidStandingSchemaError } from '../errors/InvalidStandingSchemaError';
import { StandingOrmMapper } from './StandingOrmMapper';
describe('StandingOrmMapper', () => {
it('maps persisted schema guard failures into InvalidStandingSchemaError', () => {

View File

@@ -1,15 +1,15 @@
import { Penalty } from '@core/racing/domain/entities/penalty/Penalty';
import { Protest } from '@core/racing/domain/entities/Protest';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import { PenaltyOrmEntity, ProtestOrmEntity } from '../entities/MissingRacingOrmEntities';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import {
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalInteger,
assertOptionalStringOrNull,
assertRecord,
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalInteger,
assertOptionalStringOrNull,
assertRecord,
} from '../schema/TypeOrmSchemaGuards';
const VALID_PROTEST_STATUSES = [

View File

@@ -1,5 +1,5 @@
import { Team } from '@core/racing/domain/entities/Team';
import { MediaReference } from '@core/domain/media/MediaReference';
import { Team } from '@core/racing/domain/entities/Team';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
@@ -7,11 +7,11 @@ import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/
import { TeamJoinRequestOrmEntity, TeamMembershipOrmEntity, TeamOrmEntity } from '../entities/TeamOrmEntities';
import {
assertArray,
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalStringOrNull,
assertArray,
assertDate,
assertEnumValue,
assertNonEmptyString,
assertOptionalStringOrNull,
} from '../schema/TypeOrmSchemaGuards';
const TEAM_ROLES = ['owner', 'manager', 'driver'] as const;

View File

@@ -1,9 +1,9 @@
import { TeamRatingEventOrmMapper } from './TeamRatingEventOrmMapper';
import { TeamRatingEventOrmEntity } from '../entities/TeamRatingEventOrmEntity';
import { TeamRatingEvent } from '@core/racing/domain/entities/TeamRatingEvent';
import { TeamRatingEventId } from '@core/racing/domain/value-objects/TeamRatingEventId';
import { TeamRatingDimensionKey } from '@core/racing/domain/value-objects/TeamRatingDimensionKey';
import { TeamRatingDelta } from '@core/racing/domain/value-objects/TeamRatingDelta';
import { TeamRatingDimensionKey } from '@core/racing/domain/value-objects/TeamRatingDimensionKey';
import { TeamRatingEventId } from '@core/racing/domain/value-objects/TeamRatingEventId';
import { TeamRatingEventOrmEntity } from '../entities/TeamRatingEventOrmEntity';
import { TeamRatingEventOrmMapper } from './TeamRatingEventOrmMapper';
describe('TeamRatingEventOrmMapper', () => {
const validEntityProps = {

View File

@@ -1,7 +1,7 @@
import { TeamRatingEvent } from '@core/racing/domain/entities/TeamRatingEvent';
import { TeamRatingEventId } from '@core/racing/domain/value-objects/TeamRatingEventId';
import { TeamRatingDimensionKey } from '@core/racing/domain/value-objects/TeamRatingDimensionKey';
import { TeamRatingDelta } from '@core/racing/domain/value-objects/TeamRatingDelta';
import { TeamRatingDimensionKey } from '@core/racing/domain/value-objects/TeamRatingDimensionKey';
import { TeamRatingEventId } from '@core/racing/domain/value-objects/TeamRatingEventId';
import { TeamRatingEventOrmEntity } from '../entities/TeamRatingEventOrmEntity';
/**

View File

@@ -1,7 +1,7 @@
import { TeamRatingOrmMapper } from './TeamRatingOrmMapper';
import { TeamRatingOrmEntity } from '../entities/TeamRatingOrmEntity';
import { TeamRatingValue } from '@core/racing/domain/value-objects/TeamRatingValue';
import { TeamRatingSnapshot } from '@core/racing/domain/services/TeamRatingSnapshotCalculator';
import { TeamRatingValue } from '@core/racing/domain/value-objects/TeamRatingValue';
import { TeamRatingOrmEntity } from '../entities/TeamRatingOrmEntity';
import { TeamRatingOrmMapper } from './TeamRatingOrmMapper';
describe('TeamRatingOrmMapper', () => {
const validEntityProps = {

View File

@@ -1,5 +1,5 @@
import { TeamRatingValue } from '@core/racing/domain/value-objects/TeamRatingValue';
import { TeamRatingSnapshot } from '@core/racing/domain/services/TeamRatingSnapshotCalculator';
import { TeamRatingValue } from '@core/racing/domain/value-objects/TeamRatingValue';
import { TeamRatingOrmEntity } from '../entities/TeamRatingOrmEntity';
/**

View File

@@ -1,11 +1,11 @@
import type { TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
import { TeamStatsOrmEntity } from '../entities/TeamStatsOrmEntity';
import {
assertNonEmptyString,
assertInteger,
assertArray,
assertEnumValue
import {
assertArray,
assertEnumValue,
assertInteger,
assertNonEmptyString
} from '../schema/TypeOrmSchemaGuards';
const PERFORMANCE_LEVELS = ['beginner', 'intermediate', 'advanced', 'pro'] as const;

View File

@@ -1,10 +1,10 @@
import { describe, expect, it, vi } from 'vitest';
import {
TypeOrmGameRepository,
TypeOrmLeagueWalletRepository,
TypeOrmSponsorRepository,
TypeOrmTransactionRepository,
TypeOrmGameRepository,
TypeOrmLeagueWalletRepository,
TypeOrmSponsorRepository,
TypeOrmTransactionRepository,
} from './CommerceTypeOrmRepositories';
describe('TypeOrmGameRepository', () => {

View File

@@ -13,26 +13,26 @@ import type { LeagueWallet } from '@core/racing/domain/entities/league-wallet/Le
import type { Transaction, TransactionType } from '@core/racing/domain/entities/league-wallet/Transaction';
import type { SeasonSponsorship, SponsorshipTier } from '@core/racing/domain/entities/season/SeasonSponsorship';
import type { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import type { SponsorableEntityType, SponsorshipRequest, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import type { SponsorshipPricing } from '@core/racing/domain/value-objects/SponsorshipPricing';
import type { SponsorshipRequest, SponsorableEntityType, SponsorshipRequestStatus } from '@core/racing/domain/entities/SponsorshipRequest';
import {
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
GameOrmEntity,
LeagueWalletOrmEntity,
SeasonSponsorshipOrmEntity,
SponsorOrmEntity,
SponsorshipPricingOrmEntity,
SponsorshipRequestOrmEntity,
TransactionOrmEntity,
} from '../entities/MissingRacingOrmEntities';
import {
GameOrmMapper,
LeagueWalletOrmMapper,
SeasonSponsorshipOrmMapper,
SponsorOrmMapper,
SponsorshipPricingOrmMapper,
SponsorshipRequestOrmMapper,
TransactionOrmMapper,
GameOrmMapper,
LeagueWalletOrmMapper,
SeasonSponsorshipOrmMapper,
SponsorOrmMapper,
SponsorshipPricingOrmMapper,
SponsorshipRequestOrmMapper,
TransactionOrmMapper,
} from '../mappers/CommerceOrmMappers';
export class TypeOrmGameRepository implements GameRepository {

View File

@@ -1,9 +1,9 @@
import type { Repository } from 'typeorm';
import type { PenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { Penalty } from '@core/racing/domain/entities/penalty/Penalty';
import type { Protest } from '@core/racing/domain/entities/Protest';
import type { PenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import { PenaltyOrmEntity, ProtestOrmEntity } from '../entities/MissingRacingOrmEntities';
import { PenaltyOrmMapper, ProtestOrmMapper } from '../mappers/StewardingOrmMappers';

View File

@@ -1,8 +1,8 @@
import type { Repository } from 'typeorm';
import type { TeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { TeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { Team } from '@core/racing/domain/entities/Team';
import type { TeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { TeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
import { TeamJoinRequestOrmEntity, TeamMembershipOrmEntity, TeamOrmEntity } from '../entities/TeamOrmEntities';

View File

@@ -2,10 +2,10 @@ import { describe, expect, it } from 'vitest';
import type { DataSource } from 'typeorm';
import { TypeOrmDriverRepository } from './TypeOrmDriverRepository';
import { DriverOrmMapper } from '../mappers/DriverOrmMapper';
import { Driver } from '@core/racing/domain/entities/Driver';
import { MediaReference } from '@core/domain/media/MediaReference';
import { Driver } from '@core/racing/domain/entities/Driver';
import { DriverOrmMapper } from '../mappers/DriverOrmMapper';
import { TypeOrmDriverRepository } from './TypeOrmDriverRepository';
describe('TypeOrmDriverRepository', () => {
it('constructor requires injected mapper (no internal mapper instantiation)', () => {

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { Driver } from '@core/racing/domain/entities/Driver';
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import { DriverOrmEntity } from '../entities/DriverOrmEntity';
import { DriverOrmMapper } from '../mappers/DriverOrmMapper';

View File

@@ -1,5 +1,5 @@
import type { DriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
import type { DriverStats } from '@core/racing/application/use-cases/DriverStatsUseCase';
import type { DriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
import type { Repository } from 'typeorm';
import { DriverStatsOrmEntity } from '../entities/DriverStatsOrmEntity';

View File

@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
import type { DataSource } from 'typeorm';
import { TypeOrmLeagueMembershipRepository } from './TypeOrmLeagueMembershipRepository';
import { LeagueMembershipOrmMapper } from '../mappers/LeagueMembershipOrmMapper';
import { TypeOrmLeagueMembershipRepository } from './TypeOrmLeagueMembershipRepository';
describe('TypeOrmLeagueMembershipRepository', () => {
it('constructor requires injected mapper (no internal mapper instantiation)', () => {

View File

@@ -1,8 +1,8 @@
import type { DataSource } from 'typeorm';
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
import type { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { LeagueMembershipOrmEntity } from '../entities/LeagueMembershipOrmEntity';
import { LeagueMembershipOrmMapper } from '../mappers/LeagueMembershipOrmMapper';

View File

@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import * as fs from 'node:fs';
import * as path from 'node:path';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmLeagueRepository } from './TypeOrmLeagueRepository';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { League } from '@core/racing/domain/entities/League';
import type { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { LeagueOrmEntity } from '../entities/LeagueOrmEntity';
import { LeagueOrmMapper } from '../mappers/LeagueOrmMapper';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import type { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import { LeagueScoringConfigOrmEntity } from '../entities/LeagueScoringConfigOrmEntity';
import { LeagueScoringConfigOrmMapper } from '../mappers/LeagueScoringConfigOrmMapper';

View File

@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
import type { DataSource } from 'typeorm';
import { TypeOrmRaceRegistrationRepository } from './TypeOrmRaceRegistrationRepository';
import { RaceRegistrationOrmMapper } from '../mappers/RaceRegistrationOrmMapper';
import { TypeOrmRaceRegistrationRepository } from './TypeOrmRaceRegistrationRepository';
describe('TypeOrmRaceRegistrationRepository', () => {
it('constructor requires injected mapper (no internal mapper instantiation)', () => {

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
import type { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import { RaceRegistrationOrmEntity } from '../entities/RaceRegistrationOrmEntity';
import { RaceRegistrationOrmMapper } from '../mappers/RaceRegistrationOrmMapper';

View File

@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import * as fs from 'node:fs';
import * as path from 'node:path';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmRaceRepository } from './TypeOrmRaceRepository';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { Race, type RaceStatusValue } from '@core/racing/domain/entities/Race';
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { RaceOrmEntity } from '../entities/RaceOrmEntity';
import { RaceOrmMapper } from '../mappers/RaceOrmMapper';

View File

@@ -2,8 +2,8 @@ import { describe, expect, it, vi } from 'vitest';
import type { DataSource } from 'typeorm';
import { TypeOrmResultRepository } from './TypeOrmResultRepository';
import { ResultOrmMapper } from '../mappers/ResultOrmMapper';
import { TypeOrmResultRepository } from './TypeOrmResultRepository';
describe('TypeOrmResultRepository', () => {
it('requires an injected mapper (does not construct one internally)', () => {

View File

@@ -1,8 +1,8 @@
import type { DataSource } from 'typeorm';
import { In } from 'typeorm';
import type { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { Result } from '@core/racing/domain/entities/result/Result';
import type { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import { RaceOrmEntity } from '../entities/RaceOrmEntity';
import { ResultOrmEntity } from '../entities/ResultOrmEntity';

View File

@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import * as fs from 'node:fs';
import * as path from 'node:path';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmSeasonRepository } from './TypeOrmSeasonRepository';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { Season } from '@core/racing/domain/entities/season/Season';
import type { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { SeasonOrmEntity } from '../entities/SeasonOrmEntity';
import { SeasonOrmMapper } from '../mappers/SeasonOrmMapper';

View File

@@ -2,10 +2,10 @@ import { describe, expect, it, vi } from 'vitest';
import type { DataSource } from 'typeorm';
import { TypeOrmStandingRepository } from './TypeOrmStandingRepository';
import { LeagueOrmMapper } from '../mappers/LeagueOrmMapper';
import { ResultOrmMapper } from '../mappers/ResultOrmMapper';
import { StandingOrmMapper } from '../mappers/StandingOrmMapper';
import { TypeOrmStandingRepository } from './TypeOrmStandingRepository';
describe('TypeOrmStandingRepository', () => {
it('requires injected mappers (does not construct any internally)', () => {

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { TeamRatingEventRepository, FindByTeamIdOptions, PaginatedQueryOptions, PaginatedResult } from '@core/racing/domain/repositories/TeamRatingEventRepository';
import type { TeamRatingEvent } from '@core/racing/domain/entities/TeamRatingEvent';
import type { FindByTeamIdOptions, PaginatedQueryOptions, PaginatedResult, TeamRatingEventRepository } from '@core/racing/domain/repositories/TeamRatingEventRepository';
import type { TeamRatingEventId } from '@core/racing/domain/value-objects/TeamRatingEventId';
import { TeamRatingEventOrmEntity } from '../entities/TeamRatingEventOrmEntity';

View File

@@ -1,4 +1,4 @@
import type { TeamStatsRepository, TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { TeamStats, TeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { Repository } from 'typeorm';
import { TeamStatsOrmEntity } from '../entities/TeamStatsOrmEntity';

View File

@@ -2,19 +2,19 @@ import { describe, expect, it } from 'vitest';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import {
assertArray,
assertBoolean,
assertDate,
assertEnumValue,
assertInteger,
assertIsoDate,
assertNonEmptyString,
assertNumber,
assertOptionalBoolean,
assertOptionalInteger,
assertOptionalNumber,
assertOptionalStringOrNull,
assertRecord,
assertArray,
assertBoolean,
assertDate,
assertEnumValue,
assertInteger,
assertIsoDate,
assertNonEmptyString,
assertNumber,
assertOptionalBoolean,
assertOptionalInteger,
assertOptionalNumber,
assertOptionalStringOrNull,
assertRecord,
} from './TypeOrmSchemaGuards';
describe('TypeOrmSchemaGuards', () => {