This commit is contained in:
2025-12-11 13:50:38 +01:00
parent e4c1be628d
commit c7e5de40d6
212 changed files with 2965 additions and 763 deletions

View File

@@ -5,10 +5,12 @@
* and creating a generation request.
*/
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { IAvatarGenerationRepository } from '../../domain/repositories/IAvatarGenerationRepository';
import type { FaceValidationPort } from '../ports/FaceValidationPort';
import type { AvatarGenerationPort } from '../ports/AvatarGenerationPort';
import { AvatarGenerationRequest, type RacingSuitColor, type AvatarStyle } from '../../domain/entities/AvatarGenerationRequest';
import { AvatarGenerationRequest } from '../../domain/entities/AvatarGenerationRequest';
import type { RacingSuitColor, AvatarStyle } from '../../domain/types/AvatarGenerationRequest';
export interface RequestAvatarGenerationCommand {
userId: string;
@@ -24,7 +26,8 @@ export interface RequestAvatarGenerationResult {
errorMessage?: string;
}
export class RequestAvatarGenerationUseCase {
export class RequestAvatarGenerationUseCase
implements AsyncUseCase<RequestAvatarGenerationCommand, RequestAvatarGenerationResult> {
constructor(
private readonly avatarRepository: IAvatarGenerationRepository,
private readonly faceValidation: FaceValidationPort,
@@ -85,7 +88,7 @@ export class RequestAvatarGenerationUseCase {
// Generate avatars
const generationResult = await this.avatarGeneration.generateAvatars({
facePhotoUrl: request.facePhotoUrl,
facePhotoUrl: request.facePhotoUrl.value,
prompt: request.buildPrompt(),
suitColor: request.suitColor,
style: request.style,

View File

@@ -4,6 +4,7 @@
* Allows a user to select one of the generated avatars as their profile avatar.
*/
import type { AsyncUseCase } from '@gridpilot/shared/application';
import type { IAvatarGenerationRepository } from '../../domain/repositories/IAvatarGenerationRepository';
export interface SelectAvatarCommand {
@@ -18,7 +19,8 @@ export interface SelectAvatarResult {
errorMessage?: string;
}
export class SelectAvatarUseCase {
export class SelectAvatarUseCase
implements AsyncUseCase<SelectAvatarCommand, SelectAvatarResult> {
constructor(
private readonly avatarRepository: IAvatarGenerationRepository,
) {}