from datetime import datetime from typing import TYPE_CHECKING from pydantic import BaseModel if TYPE_CHECKING: from app.db.models import Session as SessionModel class SessionCreateRequest(BaseModel): app_id: str user_id: str channel_type: str = "web" title: str | None = None runtime_target_type: str | None = None runtime_target_id: str | None = None runtime_target_config_id: str | None = None class SessionListRequest(BaseModel): app_id: str | None = None class SessionDetailRequest(BaseModel): session_id: str class SessionResponse(BaseModel): id: str app_id: str user_id: str channel_type: str session_status: str title: str | None = None runtime_target_type: str | None = None runtime_target_id: str | None = None runtime_target_config_id: str | None = None started_time: datetime | None = None last_active_time: datetime | None = None created_time: datetime @classmethod def from_entity(cls, entity: "SessionModel") -> "SessionResponse": return cls.model_validate(entity, from_attributes=True)