Mercurial
view love/poppy/apis/schemas.py @ 149:f41ac17926d2
[Config] Added ctags scripts and actual tags.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Sat, 10 Jan 2026 07:07:10 -0800 |
| parents | cf9caa4abc3e |
| children |
line wrap: on
line source
from uuid import UUID from pydantic import BaseModel, ConfigDict, field_serializer from datetime import datetime from typing import Literal, Optional class MessageBase(BaseModel): role: Literal["user", "assistant"] content: str model_config = ConfigDict(from_attributes=True) class MessageCreate(MessageBase): pass class MessageOut(MessageBase): id: UUID image_url: Optional[str] = None created_at: datetime @field_serializer("id") def serialize_id(self, id: UUID): return str(id) # Automatically populate image_url / image_urls from relationship @classmethod def from_orm_with_assets(cls, obj): data = cls.model_validate(obj) image_assets = [ a for a in getattr(obj, "assets", []) if a.asset_type == "image" ] image_urls = [a.url for a in image_assets if a.url] data.image_url = image_urls[0] if image_urls else None return data class ChatOut(BaseModel): id: UUID title: str created_at: datetime model_config = ConfigDict(from_attributes=True) @field_serializer("id") def serialize_id(self, id: UUID): return str(id) class ChatWithMessages(ChatOut): messages: list[MessageOut] = [] class Chats(BaseModel): chats: list[ChatOut] = []