refactor use cases
This commit is contained in:
@@ -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' },
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user