Implement FastAPI Temporal MVP pipeline
This commit is contained in:
36
app/infra/db/models/workflow_run.py
Normal file
36
app/infra/db/models/workflow_run.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""Workflow run ORM model."""
|
||||
|
||||
from sqlalchemy import Enum, ForeignKey, Integer, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.domain.enums import OrderStatus, WorkflowStepName
|
||||
from app.infra.db.base import Base, TimestampMixin
|
||||
|
||||
|
||||
class WorkflowRunORM(TimestampMixin, Base):
|
||||
"""Persisted workflow execution state."""
|
||||
|
||||
__tablename__ = "workflow_runs"
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
order_id: Mapped[int] = mapped_column(ForeignKey("orders.id"), nullable=False, index=True)
|
||||
workflow_id: Mapped[str] = mapped_column(String(255), nullable=False, unique=True)
|
||||
workflow_type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||
status: Mapped[OrderStatus] = mapped_column(
|
||||
Enum(OrderStatus, native_enum=False),
|
||||
nullable=False,
|
||||
default=OrderStatus.CREATED,
|
||||
)
|
||||
current_step: Mapped[WorkflowStepName | None] = mapped_column(
|
||||
Enum(WorkflowStepName, native_enum=False),
|
||||
nullable=True,
|
||||
)
|
||||
|
||||
order = relationship("OrderORM", back_populates="workflow_runs")
|
||||
steps = relationship(
|
||||
"WorkflowStepORM",
|
||||
back_populates="workflow_run",
|
||||
lazy="selectin",
|
||||
order_by="WorkflowStepORM.started_at",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user