53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
"""
|
||
Pydantic схемы для Message
|
||
"""
|
||
from uuid import UUID
|
||
from datetime import datetime
|
||
from typing import Any
|
||
from pydantic import BaseModel
|
||
from src.domain.entities.message import MessageRole
|
||
|
||
|
||
class MessageBase(BaseModel):
|
||
"""Базовая схема сообщения"""
|
||
content: str
|
||
role: MessageRole
|
||
sources: dict[str, Any] = {}
|
||
|
||
|
||
class MessageCreate(MessageBase):
|
||
"""Схема создания сообщения"""
|
||
conversation_id: UUID
|
||
|
||
|
||
class MessageUpdate(BaseModel):
|
||
"""Схема обновления сообщения"""
|
||
content: str | None = None
|
||
sources: dict[str, Any] | None = None
|
||
|
||
|
||
class MessageResponse(BaseModel):
|
||
"""Схема ответа с сообщением"""
|
||
message_id: UUID
|
||
conversation_id: UUID
|
||
content: str
|
||
role: MessageRole
|
||
sources: dict[str, Any]
|
||
created_at: datetime
|
||
|
||
@classmethod
|
||
def from_entity(cls, message: "Message") -> "MessageResponse":
|
||
"""Создать из доменной сущности"""
|
||
return cls(
|
||
message_id=message.message_id,
|
||
conversation_id=message.conversation_id,
|
||
content=message.content,
|
||
role=message.role,
|
||
sources=message.sources,
|
||
created_at=message.created_at
|
||
)
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|