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,4 +1,4 @@
import { Achievement, AchievementCategory, AchievementRequirement, AchievementProps } from '@core/identity/domain/entities/Achievement';
import { Achievement, AchievementCategory, AchievementProps, AchievementRequirement } from '@core/identity/domain/entities/Achievement';
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';

View File

@@ -1,9 +1,9 @@
import type { DataSource } from 'typeorm';
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
import type { AchievementCategory } from '@core/identity/domain/entities/Achievement';
import { Achievement } from '@core/identity/domain/entities/Achievement';
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';
import { UserAchievementOrmEntity } from '../entities/UserAchievementOrmEntity';

View File

@@ -4,7 +4,7 @@
* In-memory implementation of IAnalyticsSnapshotRepository for development/testing.
*/
import { AnalyticsSnapshot, IAnalyticsSnapshotRepository, SnapshotEntityType, SnapshotPeriod } from '@core/analytics/application/repositories/PageViewRepository';
import { AnalyticsSnapshot, SnapshotPeriod } from '@core/analytics/application/repositories/PageViewRepository';
import { Logger } from '@core/shared/domain/Logger';
export class InMemoryAnalyticsSnapshotRepository implements AnalyticsSnapshotRepository {

View File

@@ -4,8 +4,8 @@
* In-memory implementation of IEngagementRepository for development/testing.
*/
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '@core/analytics/domain/entities/EngagementEvent';
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import { Logger } from '@core/shared/domain/Logger';

View File

@@ -1,8 +1,8 @@
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
import type { AnalyticsMetrics, SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { assertDate, assertEnumValue, assertNonEmptyString, assertNumber, assertRecord } from '../schema/TypeOrmAnalyticsSchemaGuards';
const VALID_ENTITY_TYPES: readonly SnapshotEntityType[] = ['league', 'driver', 'team', 'race', 'sponsor'] as const;

View File

@@ -1,8 +1,8 @@
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import {
assertDate,
assertEnumValue,

View File

@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
import { PageView } from '@core/analytics/domain/entities/PageView';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { PageViewOrmMapper } from './PageViewOrmMapper';
describe('PageViewOrmMapper', () => {

View File

@@ -1,8 +1,8 @@
import { PageView } from '@core/analytics/domain/entities/PageView';
import type { EntityType, VisitorType } from '@core/analytics/domain/types/PageView';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
import {
assertDate,
assertEnumValue,

View File

@@ -1,8 +1,8 @@
import { type Repository } from 'typeorm';
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
import type { AnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/AnalyticsSnapshotRepository';
import type { SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
import { AnalyticsSnapshotOrmMapper } from '../mappers/AnalyticsSnapshotOrmMapper';

View File

@@ -1,8 +1,8 @@
import { Between, MoreThanOrEqual, type FindOptionsWhere, type Repository } from 'typeorm';
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
import { EngagementEventOrmMapper } from '../mappers/EngagementEventOrmMapper';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import type { Repository } from 'typeorm';
import { describe, expect, it, vi } from 'vitest';
import { PageView } from '@core/analytics/domain/entities/PageView';

View File

@@ -1,8 +1,8 @@
import { Between, MoreThanOrEqual, type Repository } from 'typeorm';
import type { PageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
import type { EntityType } from '@core/analytics/domain/types/PageView';
import { PageView } from '@core/analytics/domain/entities/PageView';
import type { EntityType } from '@core/analytics/domain/types/PageView';
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
import { PageViewOrmMapper } from '../mappers/PageViewOrmMapper';

View File

@@ -1,10 +1,10 @@
import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
import type { SessionType } from '@core/racing/domain/types/SessionType';
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
import type { SessionType } from '@core/racing/domain/types/SessionType';
import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
export type LeagueScoringPresetPrimaryChampionshipType =
| 'driver'

View File

@@ -4,7 +4,7 @@
* UI display configuration for race status states
*/
import { Clock, PlayCircle, CheckCircle2, XCircle, type LucideIcon } from 'lucide-react';
import { CheckCircle2, Clock, PlayCircle, XCircle, type LucideIcon } from 'lucide-react';
export interface RaceStatusConfigData {
icon: LucideIcon;

View File

@@ -1,6 +1,6 @@
import { MediaReference } from '@core/domain/media/MediaReference';
import { describe, expect, it } from 'vitest';
import { RacingDriverFactory } from './RacingDriverFactory';
import { MediaReference } from '@core/domain/media/MediaReference';
describe('RacingDriverFactory', () => {
describe('getDriverAvatarRef', () => {

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 { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';

View File

@@ -1,6 +1,6 @@
import { League, LeagueSettings } from '@core/racing/domain/entities/League';
import { Driver } from '@core/racing/domain/entities/Driver';
import { MediaReference } from '@core/domain/media/MediaReference';
import { Driver } from '@core/racing/domain/entities/Driver';
import { League, LeagueSettings } from '@core/racing/domain/entities/League';
import { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';

View File

@@ -1,10 +1,10 @@
import { faker } from '@faker-js/faker';
import type { League } from '@core/racing/domain/entities/League';
import { LeagueWallet } from '@core/racing/domain/entities/league-wallet/LeagueWallet';
import { LeagueWalletId } from '@core/racing/domain/entities/league-wallet/LeagueWalletId';
import { Transaction } from '@core/racing/domain/entities/league-wallet/Transaction';
import { TransactionId } from '@core/racing/domain/entities/league-wallet/TransactionId';
import { Money } from '@core/racing/domain/value-objects/Money';
import { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';
type LeagueWalletSeed = {

View File

@@ -1,6 +1,6 @@
import { Driver } from '@core/racing/domain/entities/Driver';
import { League } from '@core/racing/domain/entities/League';
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
import { League } from '@core/racing/domain/entities/League';
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { Race } from '@core/racing/domain/entities/Race';
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';

View File

@@ -1,11 +1,11 @@
import { faker } from '@faker-js/faker';
import type { League } from '@core/racing/domain/entities/League';
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
import { Season } from '@core/racing/domain/entities/season/Season';
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
import type { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import type { SeasonStatusValue } from '@core/racing/domain/value-objects/SeasonStatus';
import { Money } from '@core/racing/domain/value-objects/Money';
import type { SeasonStatusValue } from '@core/racing/domain/value-objects/SeasonStatus';
import { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';
export class RacingSeasonSponsorshipFactory {

View File

@@ -1,33 +1,33 @@
import { Driver } from '@core/racing/domain/entities/Driver';
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
import { League } from '@core/racing/domain/entities/League';
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { Race } from '@core/racing/domain/entities/Race';
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
import { Result as RaceResult } from '@core/racing/domain/entities/result/Result';
import { Season } from '@core/racing/domain/entities/season/Season';
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
import { Standing } from '@core/racing/domain/entities/Standing';
import { Team } from '@core/racing/domain/entities/Team';
import { Track } from '@core/racing/domain/entities/Track';
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
import { Season } from '@core/racing/domain/entities/season/Season';
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
import type { FeedItem } from '@core/social/domain/types/FeedItem';
import { RacingDriverFactory, type DriverStats } from './RacingDriverFactory';
import { RacingFeedFactory } from './RacingFeedFactory';
import { RacingFriendshipFactory } from './RacingFriendshipFactory';
import { RacingLeagueFactory } from './RacingLeagueFactory';
import { RacingLeagueWalletFactory } from './RacingLeagueWalletFactory';
import { RacingMembershipFactory } from './RacingMembershipFactory';
import { RacingRaceFactory } from './RacingRaceFactory';
import { RacingResultFactory } from './RacingResultFactory';
import { RacingSeasonSponsorshipFactory } from './RacingSeasonSponsorshipFactory';
import { RacingSponsorFactory } from './RacingSponsorFactory';
import { RacingStandingFactory } from './RacingStandingFactory';
import { RacingStewardingFactory } from './RacingStewardingFactory';
import { RacingTeamFactory, type TeamStats } from './RacingTeamFactory';
import { RacingTrackFactory } from './RacingTrackFactory';
import { RacingSponsorFactory } from './RacingSponsorFactory';
import { RacingSeasonSponsorshipFactory } from './RacingSeasonSponsorshipFactory';
import { RacingLeagueWalletFactory } from './RacingLeagueWalletFactory';
import { RacingStewardingFactory } from './RacingStewardingFactory';
export type Friendship = {
driverId: string;

View File

@@ -1,9 +1,9 @@
import { faker } from '@faker-js/faker';
import type { Driver } from '@core/racing/domain/entities/Driver';
import type { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
import { Protest } from '@core/racing/domain/entities/Protest';
import type { Race } from '@core/racing/domain/entities/Race';
import { Penalty } from '@core/racing/domain/entities/penalty/Penalty';
import { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';
type StewardingSeed = {

View File

@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest';
import { RacingTeamFactory } from './RacingTeamFactory';
import { MediaReference } from '@core/domain/media/MediaReference';
import { describe, expect, it } from 'vitest';
import { RacingDriverFactory } from './RacingDriverFactory';
import { RacingLeagueFactory } from './RacingLeagueFactory';
import { RacingTeamFactory } from './RacingTeamFactory';
describe('RacingTeamFactory', () => {
describe('createTeams', () => {

View File

@@ -1,7 +1,7 @@
import { MediaReference } from '@core/domain/media/MediaReference';
import { Driver } from '@core/racing/domain/entities/Driver';
import { League } from '@core/racing/domain/entities/League';
import { Team } from '@core/racing/domain/entities/Team';
import { MediaReference } from '@core/domain/media/MediaReference';
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
import { faker } from '@faker-js/faker';
import { seedId } from './SeedIdHelper';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest';
import { stableUuidFromSeedKey, seedId, seedUuid } from './SeedIdHelper';
import { seedId, seedUuid, stableUuidFromSeedKey } from './SeedIdHelper';
describe('SeedIdHelper', () => {
describe('stableUuidFromSeedKey', () => {

View File

@@ -4,11 +4,11 @@
* In-memory implementation of IAchievementRepository
*/
import { Achievement } from "@core/identity/domain/entities/Achievement";
import { AchievementCategory } from "@core/identity/domain/types/AchievementTypes";
import { AchievementRepository } from "@core/identity/domain/repositories/AchievementRepository";
import { UserAchievement } from "@core/identity/domain/entities/UserAchievement";
import { ADMIN_ACHIEVEMENTS, COMMUNITY_ACHIEVEMENTS, DRIVER_ACHIEVEMENTS, STEWARD_ACHIEVEMENTS } from "@core/identity/domain/AchievementConstants";
import { Achievement } from "@core/identity/domain/entities/Achievement";
import { UserAchievement } from "@core/identity/domain/entities/UserAchievement";
import { AchievementRepository } from "@core/identity/domain/repositories/AchievementRepository";
import { AchievementCategory } from "@core/identity/domain/types/AchievementTypes";
import { Logger } from "@core/shared/domain";
export class InMemoryAchievementRepository implements AchievementRepository {

View File

@@ -1,7 +1,6 @@
import { User } from '@core/identity/domain/entities/User';
import { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
import { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import { StoredUser } from '@core/identity/domain/repositories/UserRepository';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { Logger } from '@core/shared/domain';

View File

@@ -1,5 +1,5 @@
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
/**
* In-Memory Implementation: IExternalGameRatingRepository

View File

@@ -1,4 +1,4 @@
import { describe, it, expect, beforeEach } from 'vitest';
import { beforeEach, describe, expect, it } from 'vitest';
import { InMemoryMagicLinkRepository } from './InMemoryMagicLinkRepository';
const mockLogger = {

View File

@@ -1,6 +1,6 @@
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
import { Result } from '@core/shared/domain/Result';
import { Logger } from '@core/shared/domain';
import { Result } from '@core/shared/domain/Result';
export class InMemoryMagicLinkRepository implements MagicLinkRepository {
private resetRequests: Map<string, PasswordResetRequest> = new Map();

View File

@@ -4,7 +4,7 @@
* In-memory implementation of ISponsorAccountRepository for development/testing.
*/
import { SponsorAccountRepository, SponsorAccount, UserId } from '@core/identity';
import { SponsorAccount, SponsorAccountRepository, UserId } from '@core/identity';
import { Logger } from '@core/shared/domain';
export class InMemorySponsorAccountRepository implements SponsorAccountRepository {

View File

@@ -4,7 +4,7 @@
* In-memory implementation of IUserRatingRepository
*/
import { UserRatingRepository, UserRating } from '@core/identity';
import { UserRating, UserRatingRepository } from '@core/identity';
import { Logger } from '@core/shared/domain';
export class InMemoryUserRatingRepository implements UserRatingRepository {

View File

@@ -4,8 +4,8 @@
* Stores users in memory for demo/development purposes.
*/
import type { StoredUser, UserRepository } from '@core/identity/domain/repositories/UserRepository';
import { Logger } from '@core/shared/domain';
import type { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
export class InMemoryUserRepository implements UserRepository {
private users: Map<string, StoredUser> = new Map();

View File

@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity('companies')
export class CompanyOrmEntity {

View File

@@ -1,4 +1,4 @@
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm';
@Entity('password_reset_requests')
export class PasswordResetRequestOrmEntity {

View File

@@ -1,10 +1,10 @@
import { ExternalGameRatingProfileOrmMapper } from './ExternalGameRatingProfileOrmMapper';
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import { GameKey } from '@core/identity/domain/value-objects/GameKey';
import { ExternalRating } from '@core/identity/domain/value-objects/ExternalRating';
import { ExternalRatingProvenance } from '@core/identity/domain/value-objects/ExternalRatingProvenance';
import { GameKey } from '@core/identity/domain/value-objects/GameKey';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
import { ExternalGameRatingProfileOrmMapper } from './ExternalGameRatingProfileOrmMapper';
describe('ExternalGameRatingProfileOrmMapper', () => {
describe('toDomain', () => {

View File

@@ -3,9 +3,9 @@
*/
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
import { RatingEventOrmMapper } from './RatingEventOrmMapper';

View File

@@ -1,7 +1,7 @@
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
/**

View File

@@ -1,15 +1,15 @@
import { describe, expect, it, vi } from 'vitest';
import * as fs from 'node:fs';
import * as path from 'node:path';
import type { DataSource, Repository } from 'typeorm';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmAuthRepository } from './TypeOrmAuthRepository';
import { UserOrmEntity } from '../entities/UserOrmEntity';
import { UserOrmMapper } from '../mappers/UserOrmMapper';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { User } from '@core/identity/domain/entities/User';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
import { UserId } from '@core/identity/domain/value-objects/UserId';
import { UserOrmEntity } from '../entities/UserOrmEntity';
import { UserOrmMapper } from '../mappers/UserOrmMapper';
import { TypeOrmAuthRepository } from './TypeOrmAuthRepository';
describe('TypeOrmAuthRepository', () => {
it('does not construct its own mapper dependencies', () => {

View File

@@ -1,6 +1,6 @@
import { Repository } from 'typeorm';
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
import { Repository } from 'typeorm';
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
import { ExternalGameRatingProfileOrmMapper } from '../mappers/ExternalGameRatingProfileOrmMapper';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
import { Result } from '@core/shared/domain/Result';
import { Logger } from '@core/shared/domain';
import { Result } from '@core/shared/domain/Result';
import type { DataSource } from 'typeorm';
import { PasswordResetRequestOrmEntity } from '../entities/PasswordResetRequestOrmEntity';
export class TypeOrmMagicLinkRepository implements MagicLinkRepository {

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import type { DataSource } from 'typeorm';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmRatingEventRepository } from './TypeOrmRatingEventRepository';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { RatingEventRepository, FindByUserIdOptions, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/RatingEventRepository';
import type { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
import type { FindByUserIdOptions, PaginatedQueryOptions, PaginatedResult, RatingEventRepository } from '@core/identity/domain/repositories/RatingEventRepository';
import type { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import type { DataSource } from 'typeorm';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmUserRatingRepository } from './TypeOrmUserRatingRepository';

View File

@@ -1,11 +1,11 @@
import { describe, expect, it, vi } from 'vitest';
import * as fs from 'node:fs';
import * as path from 'node:path';
import type { DataSource, Repository } from 'typeorm';
import { describe, expect, it, vi } from 'vitest';
import { TypeOrmUserRepository } from './TypeOrmUserRepository';
import { UserOrmEntity } from '../entities/UserOrmEntity';
import { UserOrmMapper } from '../mappers/UserOrmMapper';
import { TypeOrmUserRepository } from './TypeOrmUserRepository';
describe('TypeOrmUserRepository', () => {
it('does not construct its own mapper dependencies', () => {

View File

@@ -1,6 +1,6 @@
import type { DataSource } from 'typeorm';
import type { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
import type { StoredUser, UserRepository } from '@core/identity/domain/repositories/UserRepository';
import { UserOrmEntity } from '../entities/UserOrmEntity';
import { UserOrmMapper } from '../mappers/UserOrmMapper';

View File

@@ -1,4 +1,4 @@
import { vi, type Mock } from 'vitest';
import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import { ConsoleLogger } from './ConsoleLogger';
describe('ConsoleLogger', () => {

View File

@@ -4,9 +4,9 @@
* Tests the complete resolution flow for all media reference types
*/
import { describe, expect, it } from 'vitest';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverAdapter, DefaultResolvers } from './MediaResolverAdapter';
import { describe, expect, it } from 'vitest';
import { DefaultResolvers, MediaResolverAdapter } from './MediaResolverAdapter';
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';

View File

@@ -5,8 +5,8 @@
* This is the main entry point for media resolution.
*/
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';

View File

@@ -7,8 +7,8 @@
* Part of the adapters layer, implementing the MediaResolverPort interface.
*/
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
/**
* Configuration for InMemoryMediaResolverAdapter

View File

@@ -1,5 +1,5 @@
import { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
import { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryAvatarGenerationRepository implements AvatarGenerationRepository {

View File

@@ -2,14 +2,14 @@ import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGener
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
import {
assertNonEmptyString,
assertAvatarGenerationStatus,
assertAvatarStyle,
assertDate,
assertStringArray,
assertNonEmptyString,
assertOptionalIntegerOrNull,
assertOptionalStringOrNull,
assertRacingSuitColor,
assertAvatarStyle,
assertAvatarGenerationStatus,
assertStringArray,
} from '../schema/TypeOrmMediaSchemaGuards';
export class AvatarGenerationRequestOrmMapper {

View File

@@ -2,9 +2,9 @@ import { Avatar } from '@core/media/domain/entities/Avatar';
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
import {
assertNonEmptyString,
assertDate,
assertBoolean,
assertDate,
assertNonEmptyString,
} from '../schema/TypeOrmMediaSchemaGuards';
export class AvatarOrmMapper {

View File

@@ -2,10 +2,10 @@ import { Media } from '@core/media/domain/entities/Media';
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
import {
assertNonEmptyString,
assertDate,
assertInteger,
assertMediaType,
assertNonEmptyString,
} from '../schema/TypeOrmMediaSchemaGuards';
export class MediaOrmMapper {

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 { TypeOrmAvatarGenerationRepository } from './TypeOrmAvatarGenerationRepository';

View File

@@ -1,6 +1,6 @@
import type { DataSource } from 'typeorm';
import type { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import type { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
import type { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import type { DataSource } from 'typeorm';
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
import { AvatarGenerationRequestOrmMapper } from '../mappers/AvatarGenerationRequestOrmMapper';

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 { TypeOrmAvatarRepository } from './TypeOrmAvatarRepository';

View File

@@ -1,6 +1,6 @@
import type { DataSource } from 'typeorm';
import type { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import type { Avatar } from '@core/media/domain/entities/Avatar';
import type { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import type { DataSource } from 'typeorm';
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
import { AvatarOrmMapper } from '../mappers/AvatarOrmMapper';

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 { TypeOrmMediaRepository } from './TypeOrmMediaRepository';

View File

@@ -1,6 +1,6 @@
import type { DataSource } from 'typeorm';
import type { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
import type { Media } from '@core/media/domain/entities/Media';
import type { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
import type { DataSource } from 'typeorm';
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
import { MediaOrmMapper } from '../mappers/MediaOrmMapper';

View File

@@ -5,8 +5,8 @@
* Part of the adapters layer, implementing the MediaResolverPort interface.
*/
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
/**
* Configuration for the DefaultMediaResolverAdapter

View File

@@ -5,8 +5,8 @@
* Part of the adapters layer, implementing the MediaResolverPort interface.
*/
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
/**
* Configuration for the GeneratedMediaResolverAdapter

View File

@@ -5,8 +5,8 @@
* Part of the adapters layer, implementing the MediaResolverPort interface.
*/
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
/**
* Configuration for the UploadedMediaResolverAdapter

View File

@@ -5,11 +5,11 @@
* Currently a stub - to be implemented when Discord integration is needed.
*/
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type {
NotificationGateway,
NotificationDeliveryResult
NotificationDeliveryResult,
NotificationGateway
} from '@core/notifications/application/ports/NotificationGateway';
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
export interface DiscordAdapterConfig {

View File

@@ -5,11 +5,11 @@
* Currently a stub - to be implemented when email integration is needed.
*/
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type {
NotificationGateway,
NotificationDeliveryResult
NotificationDeliveryResult,
NotificationGateway
} from '@core/notifications/application/ports/NotificationGateway';
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
export interface EmailAdapterConfig {

View File

@@ -5,11 +5,11 @@
* Currently a stub - to be implemented when in-app notification system is needed.
*/
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type {
NotificationGateway,
NotificationDeliveryResult
NotificationDeliveryResult,
NotificationGateway
} from '@core/notifications/application/ports/NotificationGateway';
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
export class InAppNotificationAdapter implements NotificationGateway {

View File

@@ -4,13 +4,12 @@
* Manages notification gateways and routes notifications to appropriate channels.
*/
import type {
NotificationDeliveryResult,
NotificationGateway
} from '@core/notifications/application/ports/NotificationGateway';
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
import type {
NotificationGateway,
NotificationGatewayRegistry as INotificationGatewayRegistry,
NotificationDeliveryResult
} from '@core/notifications/application/ports/NotificationGateway';
export class NotificationGatewayRegistry implements NotificationGatewayRegistry {
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();

View File

@@ -1,5 +1,5 @@
import { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
import { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import { Logger } from '@core/shared/domain';
export class InMemoryNotificationPreferenceRepository implements NotificationPreferenceRepository {

View File

@@ -2,17 +2,17 @@ import { Notification } from '@core/notifications/domain/entities/Notification';
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import {
assertNonEmptyString,
assertDate,
assertOptionalDate,
assertBoolean,
assertNotificationType,
assertDate,
assertNonEmptyString,
assertNotificationActions,
assertNotificationChannel,
assertNotificationStatus,
assertNotificationType,
assertNotificationUrgency,
assertOptionalStringOrNull,
assertOptionalDate,
assertOptionalObject,
assertNotificationActions,
assertOptionalStringOrNull,
} from '../schema/NotificationSchemaGuards';
export class NotificationOrmMapper {

View File

@@ -2,11 +2,11 @@ import { NotificationPreference } from '@core/notifications/domain/entities/Noti
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
import {
assertNonEmptyString,
assertDate,
assertBoolean,
assertOptionalInteger,
assertChannelPreferences,
assertDate,
assertNonEmptyString,
assertOptionalInteger,
assertOptionalObject,
} from '../schema/NotificationSchemaGuards';

View File

@@ -1,6 +1,6 @@
import type { DataSource } from 'typeorm';
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { DataSource } from 'typeorm';
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
import { NotificationPreferenceOrmMapper } from '../mappers/NotificationPreferenceOrmMapper';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { NotificationType } from '@core/notifications/domain/types/NotificationTypes';
import { Notification } from '@core/notifications/domain/entities/Notification';
import type { DataSource } from 'typeorm';
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
import { NotificationOrmMapper } from '../mappers/NotificationOrmMapper';

View File

@@ -1,4 +1,4 @@
import { MagicLinkNotificationPort, MagicLinkNotificationInput } from '@core/identity/domain/ports/MagicLinkNotificationPort';
import { MagicLinkNotificationInput, MagicLinkNotificationPort } from '@core/identity/domain/ports/MagicLinkNotificationPort';
import { Logger } from '@core/shared/domain';
/**

View File

@@ -1,6 +1,6 @@
import type { NotificationDeliveryResult, NotificationGateway, NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';
import type { Notification } from '@core/notifications/domain/entities/Notification';
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
import type { NotificationGateway, NotificationGatewayRegistry, NotificationDeliveryResult } from '@core/notifications/application/ports/NotificationGateway';
export class InMemoryNotificationGatewayRegistry implements NotificationGatewayRegistry {
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();

View File

@@ -1,9 +1,9 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
import { MembershipFeeType } from '@core/payments/domain/entities/MembershipFee';
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
import { MemberPaymentStatus } from '@core/payments/domain/entities/MemberPayment';
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
import { MembershipFeeType } from '@core/payments/domain/entities/MembershipFee';
import type { Logger } from '@core/shared/domain/Logger';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { InMemoryMemberPaymentRepository, InMemoryMembershipFeeRepository } from './InMemoryMembershipFeeRepository';
describe('InMemoryMembershipFeeRepository', () => {

View File

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

View File

@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import type { Payment } from '@core/payments/domain/entities/Payment';
import { PaymentType, PaymentStatus, PayerType } from '@core/payments/domain/entities/Payment';
import { PayerType, PaymentStatus, PaymentType } from '@core/payments/domain/entities/Payment';
import type { Logger } from '@core/shared/domain/Logger';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { InMemoryPaymentRepository } from './InMemoryPaymentRepository';
describe('InMemoryPaymentRepository', () => {

View File

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

View File

@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import type { Prize } from '@core/payments/domain/entities/Prize';
import { PrizeType } from '@core/payments/domain/entities/Prize';
import type { Logger } from '@core/shared/domain/Logger';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { InMemoryPrizeRepository } from './InMemoryPrizeRepository';
describe('InMemoryPrizeRepository', () => {

View File

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

View File

@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
import { TransactionType } from '@core/payments/domain/entities/Wallet';
import type { Logger } from '@core/shared/domain/Logger';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { InMemoryTransactionRepository, InMemoryWalletRepository } from './InMemoryWalletRepository';
describe('InMemoryWalletRepository', () => {

View File

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

View File

@@ -1,9 +1,9 @@
import type { Payment } from '@core/payments/domain/entities/Payment';
import {
PayerType,
Payment as PaymentFactory,
PaymentStatus,
PaymentType,
PayerType,
} from '@core/payments/domain/entities/Payment';
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';

View File

@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
import { TransactionType } from '@core/payments/domain/entities/Wallet';
import { TypeOrmPaymentsSchemaError } from '../errors/TypeOrmPaymentsSchemaError';
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
import { TypeOrmPaymentsSchemaError } from '../errors/TypeOrmPaymentsSchemaError';
import { PaymentsWalletOrmMapper } from './PaymentsWalletOrmMapper';
describe('PaymentsWalletOrmMapper', () => {

View File

@@ -1,4 +1,4 @@
import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
import { ReferenceType, Transaction as TransactionFactory, TransactionType, Wallet as WalletFactory } from '@core/payments/domain/entities/Wallet';
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';

View File

@@ -1,8 +1,8 @@
import type { DataSource } from 'typeorm';
import type { MemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
import type { IMembershipFeeRepository, MemberPaymentRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import { PaymentsMemberPaymentOrmEntity } from '../entities/PaymentsMemberPaymentOrmEntity';
import { PaymentsMembershipFeeOrmEntity } from '../entities/PaymentsMembershipFeeOrmEntity';

View File

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

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';
import { PaymentsPaymentOrmMapper } from '../mappers/PaymentsPaymentOrmMapper';

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { Prize } from '@core/payments/domain/entities/Prize';
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import { PaymentsPrizeOrmEntity } from '../entities/PaymentsPrizeOrmEntity';
import { PaymentsPrizeOrmMapper } from '../mappers/PaymentsPrizeOrmMapper';

View File

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

View File

@@ -1,7 +1,7 @@
import type { DataSource } from 'typeorm';
import type { TransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
import type { TransactionRepository } from '@core/payments/domain/repositories/WalletRepository';
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';

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,
} 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 {

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