from datetime import datetime from typing import TYPE_CHECKING from core_shared import JSONValue from pydantic import BaseModel, Field if TYPE_CHECKING: from app.db.models import RunRequest class RunRequestCreateRequest(BaseModel): session_id: str app_config_id: str workflow_config_id: str trigger_type: str = "chat" request_payload_json: dict[str, JSONValue] = Field(default_factory=dict) request_status: str = "accepted" class RunRequestListRequest(BaseModel): session_id: str class RunRequestDetailRequest(BaseModel): run_request_id: str class RunRequestUpdateRequest(BaseModel): run_request_id: str request_payload_json: dict[str, JSONValue] | None = None request_status: str | None = None class RunRequestResponse(BaseModel): id: str session_id: str app_config_id: str workflow_config_id: str trigger_type: str request_payload_json: dict[str, JSONValue] | None = None request_status: str created_time: datetime @classmethod def from_entity(cls, entity: "RunRequest") -> "RunRequestResponse": return cls.model_validate(entity, from_attributes=True)