website refactor

This commit is contained in:
2026-01-16 23:44:37 +01:00
parent b22c705674
commit b8a9528ef3
5 changed files with 43 additions and 14 deletions

View File

@@ -3,7 +3,6 @@ import { Email } from '@core/admin/domain/value-objects/Email';
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { User } from '@core/identity/domain/entities/User';
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import type { UserRepository } from '@core/identity/domain/repositories/UserRepository';
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';

View File

@@ -78,10 +78,14 @@ class MockAvatarGenerationAdapter implements AvatarGenerationPort {
}
class MockLogger implements Logger {
debug(message: string, context?: unknown): void {}
info(message: string, context?: unknown): void {}
warn(message: string, context?: unknown): void {}
error(message: string, error?: Error, context?: unknown): void {}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
debug(_message: string, _context?: unknown): void {}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
info(_message: string, _context?: unknown): void {}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
warn(_message: string, _context?: unknown): void {}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
error(_message: string, _error?: Error, _context?: unknown): void {}
}
import { MediaResolverAdapter } from '@adapters/media/MediaResolverAdapter';

View File

@@ -1,6 +1,6 @@
import type { IAchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
import { Test, TestingModule } from '@nestjs/testing';
import { beforeEach, describe, expect, it } from 'vitest';
import { beforeEach, describe, expect, it, vi, afterEach } from 'vitest';
import { ACHIEVEMENT_REPOSITORY_TOKEN } from './AchievementPersistenceTokens';
describe('AchievementPersistenceModule', () => {
@@ -27,7 +27,7 @@ describe('AchievementPersistenceModule', () => {
imports: [AchievementPersistenceModule],
}).compile();
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
// The adapter should provide the domain interface methods
expect(repository).toBeDefined();
expect(typeof repository.createAchievement).toBe('function');
@@ -50,7 +50,7 @@ describe('AchievementPersistenceModule', () => {
imports: [AchievementPersistenceModule],
}).compile();
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
// The adapter should provide the domain interface methods
expect(repository).toBeDefined();
expect(typeof repository.createAchievement).toBe('function');
@@ -68,7 +68,7 @@ describe('AchievementPersistenceModule', () => {
imports: [AchievementPersistenceModule],
}).compile();
const repository = module.get<IAchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
const repository = module.get<AchievementRepository>(ACHIEVEMENT_REPOSITORY_TOKEN);
// The adapter should provide the domain interface methods
expect(repository).toBeDefined();
expect(typeof repository.createAchievement).toBe('function');

View File

@@ -5,6 +5,10 @@
* This is an application layer concern that orchestrates domain data.
*/
import type { ResultRepository } from '../../domain/repositories/ResultRepository';
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/domain/Logger';
export interface DriverStats {
rating: number;
safetyRating: number;
@@ -21,6 +25,15 @@ export interface DriverStats {
overallRank: number | null;
}
export interface DriverStatsUseCase {
getDriverStats(driverId: string): Promise<DriverStats | null>;
export class DriverStatsUseCase {
constructor(
_resultRepository: ResultRepository,
_standingRepository: StandingRepository,
private readonly _logger: Logger,
) {}
async getDriverStats(driverId: string): Promise<DriverStats | null> {
this._logger.debug(`Getting stats for driver ${driverId}`);
return null;
}
}

View File

@@ -5,6 +5,10 @@
* This is an application layer concern that orchestrates domain data.
*/
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
import type { Logger } from '@core/shared/domain/Logger';
export interface DriverRanking {
driverId: string;
rating: number;
@@ -13,6 +17,15 @@ export interface DriverRanking {
overallRank: number | null;
}
export interface RankingUseCase {
getAllDriverRankings(): Promise<DriverRanking[]>;
export class RankingUseCase {
constructor(
_standingRepository: StandingRepository,
_driverRepository: DriverRepository,
private readonly _logger: Logger,
) {}
async getAllDriverRankings(): Promise<DriverRanking[]> {
this._logger.debug('Getting all driver rankings');
return [];
}
}