from core_db import AuditMixin, Base, EntityMixin, VersionMixin from sqlalchemy import Integer, String from sqlalchemy.dialects.sqlite import JSON from sqlalchemy.orm import Mapped, mapped_column class WorkflowVersion(EntityMixin, AuditMixin, VersionMixin, Base): __tablename__ = "workflow_version" workflow_id: Mapped[str] = mapped_column(String(36), index=True) version_no: Mapped[int] = mapped_column(Integer) dsl_json: Mapped[dict | None] = mapped_column(JSON, nullable=True) compiled_plan_json: Mapped[dict | None] = mapped_column(JSON, nullable=True) schema_version: Mapped[str | None] = mapped_column(String(32), nullable=True) checksum: Mapped[str | None] = mapped_column(String(128), nullable=True) status: Mapped[str] = mapped_column(String(32), default="draft")