from datetime import datetime, UTC from enum import Enum from typing import List, Optional from pydantic import BaseModel, Field from models.Asset import Asset from models.enums import AspectRatios, Quality, GenType class GenerationStatus(str, Enum): RUNNING = "running" DONE = "done" FAILED = "failed" class Generation(BaseModel): id: Optional[str] = None status: GenerationStatus = GenerationStatus.RUNNING failed_reason: Optional[str] = None linked_character_id: Optional[str] = None aspect_ratio: AspectRatios quality: Quality prompt: str tech_prompt: Optional[str] = None assets_list: List[str] result: Optional[str] = None progress: int = 0 execution_time_seconds: Optional[float] = None api_execution_time_seconds: Optional[float] = None token_usage: Optional[int] = None created_at: datetime = Field(default_factory=lambda: datetime.now(UTC)) updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))