refactor use cases

This commit is contained in:
2026-01-08 15:34:51 +01:00
parent d984ab24a8
commit 52e9a2f6a7
362 changed files with 5192 additions and 8409 deletions

View File

@@ -8,7 +8,7 @@ import { v4 as uuidv4 } from 'uuid';
import type { IAvatarGenerationRepository } from '../../domain/repositories/IAvatarGenerationRepository';
import type { FaceValidationPort } from '../ports/FaceValidationPort';
import type { AvatarGenerationPort } from '../ports/AvatarGenerationPort';
import type { Logger, UseCaseOutputPort } from '@core/shared/application';
import type { Logger } from '@core/shared/application';
import { AvatarGenerationRequest } from '../../domain/entities/AvatarGenerationRequest';
import type { RacingSuitColor } from '../../domain/types/AvatarGenerationRequest';
import { Result } from '@core/shared/application/Result';
@@ -42,13 +42,12 @@ export class RequestAvatarGenerationUseCase {
private readonly avatarRepo: IAvatarGenerationRepository,
private readonly faceValidation: FaceValidationPort,
private readonly avatarGeneration: AvatarGenerationPort,
private readonly output: UseCaseOutputPort<RequestAvatarGenerationResult>,
private readonly logger: Logger,
) {}
async execute(
input: RequestAvatarGenerationInput,
): Promise<Result<void, RequestAvatarGenerationApplicationError>> {
): Promise<Result<RequestAvatarGenerationResult, RequestAvatarGenerationApplicationError>> {
this.logger.info('[RequestAvatarGenerationUseCase] Starting avatar generation request', {
userId: input.userId,
suitColor: input.suitColor,
@@ -82,7 +81,7 @@ export class RequestAvatarGenerationUseCase {
request.fail(errorMessage);
await this.avatarRepo.save(request);
return Result.err<void, RequestAvatarGenerationApplicationError>({
return Result.err<RequestAvatarGenerationResult, RequestAvatarGenerationApplicationError>({
code: 'FACE_VALIDATION_FAILED',
details: { message: errorMessage },
});
@@ -106,7 +105,7 @@ export class RequestAvatarGenerationUseCase {
request.fail(errorMessage);
await this.avatarRepo.save(request);
return Result.err<void, RequestAvatarGenerationApplicationError>({
return Result.err<RequestAvatarGenerationResult, RequestAvatarGenerationApplicationError>({
code: 'GENERATION_FAILED',
details: { message: errorMessage },
});
@@ -116,19 +115,17 @@ export class RequestAvatarGenerationUseCase {
request.completeWithAvatars(avatarUrls);
await this.avatarRepo.save(request);
this.output.present({
requestId,
status: 'completed',
avatarUrls,
});
this.logger.info('[RequestAvatarGenerationUseCase] Avatar generation completed', {
requestId,
userId: input.userId,
avatarCount: avatarUrls.length,
});
return Result.ok(undefined);
return Result.ok({
requestId,
status: 'completed',
avatarUrls,
});
} catch (error) {
const err = error instanceof Error ? error : new Error(String(error));
@@ -136,7 +133,7 @@ export class RequestAvatarGenerationUseCase {
userId: input.userId,
});
return Result.err({
return Result.err<RequestAvatarGenerationResult, RequestAvatarGenerationApplicationError>({
code: 'REPOSITORY_ERROR',
details: { message: err.message ?? 'Internal error occurred during avatar generation' },
});