website refactor
This commit is contained in:
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { describe, it, expect, beforeEach } from 'vitest';
|
||||
import { beforeEach, describe, expect, it } from 'vitest';
|
||||
import { InMemoryMagicLinkRepository } from './InMemoryMagicLinkRepository';
|
||||
|
||||
const mockLogger = {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';
|
||||
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
||||
|
||||
@Entity('companies')
|
||||
export class CompanyOrmEntity {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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)', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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)', () => {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { InMemoryLeagueScoringPresetProvider } from './InMemoryLeagueScoringPresetProvider';
|
||||
|
||||
describe('InMemoryLeagueScoringPresetProvider', () => {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user