session.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from datetime import datetime
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel
  4. if TYPE_CHECKING:
  5. from app.db.models import Session as SessionModel
  6. class SessionCreateRequest(BaseModel):
  7. app_id: str
  8. user_id: str
  9. channel_type: str = "web"
  10. title: str | None = None
  11. runtime_target_type: str | None = None
  12. runtime_target_id: str | None = None
  13. runtime_target_config_id: str | None = None
  14. class SessionListRequest(BaseModel):
  15. app_id: str | None = None
  16. class SessionDetailRequest(BaseModel):
  17. session_id: str
  18. class SessionResponse(BaseModel):
  19. id: str
  20. app_id: str
  21. user_id: str
  22. channel_type: str
  23. session_status: str
  24. title: str | None = None
  25. runtime_target_type: str | None = None
  26. runtime_target_id: str | None = None
  27. runtime_target_config_id: str | None = None
  28. started_time: datetime | None = None
  29. last_active_time: datetime | None = None
  30. created_time: datetime
  31. @classmethod
  32. def from_entity(cls, entity: "SessionModel") -> "SessionResponse":
  33. return cls.model_validate(entity, from_attributes=True)