Files
ai-char-bot/models/Asset.py

35 lines
981 B
Python

from datetime import datetime, UTC
from enum import Enum
from typing import Optional, Any, List
from pydantic import BaseModel, computed_field, Field
class AssetType(str, Enum):
IMAGE = 'image'
PROMPT = 'prompt'
class Asset(BaseModel):
id: Optional[str] = None
name: str
type: AssetType
linked_char_id: Optional[str] = None
data: Optional[bytes] = None
tg_doc_file_id: Optional[str] = None
tg_photo_file_id: Optional[str] = None
thumbnail: Optional[bytes] = None
tags: List[str] = []
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
# --- CALCULATED FIELD ---
@computed_field
def url(self) -> str:
"""
Это поле автоматически вычислится и попадет в model_dump() / .json()
"""
if self.id:
return f"/assets/{self.id}"
return ""