message.py 872 B

12345678910111213141516171819202122232425262728293031323334
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel, Field
  4. from core_shared import JSONValue
  5. if TYPE_CHECKING:
  6. from app.db.models import Message
  7. class MessageCreateRequest(BaseModel):
  8. tenant_id: str
  9. session_id: str
  10. turn_id: str | None = None
  11. role: str
  12. content_type: str = "text"
  13. content_text: str | None = None
  14. content_json: dict[str, JSONValue] = Field(default_factory=dict)
  15. class MessageResponse(BaseModel):
  16. id: str
  17. tenant_id: str
  18. session_id: str
  19. turn_id: str | None = None
  20. role: str
  21. content_type: str
  22. content_text: str | None = None
  23. content_json: dict[str, JSONValue] | None = None
  24. created_time: datetime
  25. @classmethod
  26. def from_entity(cls, entity: "Message") -> "MessageResponse":
  27. return cls.model_validate(entity, from_attributes=True)