from datetime import datetime from typing import TYPE_CHECKING from pydantic import BaseModel from core_domain import WorkflowVersionContract from core_shared import JSONValue if TYPE_CHECKING: from app.db.models import WorkflowDefinitionModel, WorkflowVersion class WorkflowCreateRequest(BaseModel): tenant_id: str app_id: str code: str name: str workflow_type: str = "main" class WorkflowDefinitionResponse(BaseModel): id: str tenant_id: str app_id: str code: str name: str workflow_type: str latest_version_no: int created_time: datetime @classmethod def from_entity(cls, entity: "WorkflowDefinitionModel") -> "WorkflowDefinitionResponse": return cls.model_validate(entity, from_attributes=True) class WorkflowVersionCreateRequest(BaseModel): tenant_id: str workflow_id: str dsl_json: dict[str, JSONValue] | None = None compiled_plan_json: dict[str, JSONValue] | None = None schema_version: str | None = None checksum: str | None = None status: str = "draft" class WorkflowVersionResponse(WorkflowVersionContract): @classmethod def from_entity(cls, entity: "WorkflowVersion") -> "WorkflowVersionResponse": return cls.model_validate(entity, from_attributes=True)