feat: run pinned pipelines and publish outputs

This commit is contained in:
2026-07-28 13:47:59 +02:00
parent 6ca3058021
commit 6305ef9cef
13 changed files with 1461 additions and 7 deletions
@@ -73,6 +73,12 @@ class DataflowPipelineRevision(Base, TimestampMixin):
class DataflowRun(Base, TimestampMixin):
__tablename__ = "dataflow_runs"
__table_args__ = (
UniqueConstraint(
"tenant_id",
"pipeline_id",
"idempotency_key",
name="uq_dataflow_run_idempotency",
),
Index("ix_dataflow_runs_tenant_status", "tenant_id", "status"),
Index("ix_dataflow_runs_pipeline_created", "pipeline_id", "created_at"),
)
@@ -93,11 +99,35 @@ class DataflowRun(Base, TimestampMixin):
status: Mapped[str] = mapped_column(String(30), nullable=False, index=True)
executor_version: Mapped[str] = mapped_column(String(40), nullable=False)
definition_hash: Mapped[str] = mapped_column(String(64), nullable=False)
idempotency_key: Mapped[str | None] = mapped_column(
String(255),
nullable=True,
index=True,
)
request_hash: Mapped[str | None] = mapped_column(String(64), nullable=True)
request_: Mapped[dict[str, Any]] = mapped_column(
"request",
JSON,
default=dict,
nullable=False,
)
source_fingerprints: Mapped[list[dict[str, Any]]] = mapped_column(JSON, default=list, nullable=False)
result_schema: Mapped[list[dict[str, Any]]] = mapped_column(JSON, default=list, nullable=False)
diagnostics: Mapped[list[dict[str, Any]]] = mapped_column(JSON, default=list, nullable=False)
input_row_count: Mapped[int] = mapped_column(Integer, default=0, nullable=False)
output_row_count: Mapped[int] = mapped_column(Integer, default=0, nullable=False)
output_publication_ref: Mapped[str | None] = mapped_column(
String(500),
nullable=True,
)
output_datasource_ref: Mapped[str | None] = mapped_column(
String(500),
nullable=True,
)
output_materialization_ref: Mapped[str | None] = mapped_column(
String(500),
nullable=True,
)
started_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False)
finished_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True))
error: Mapped[str | None] = mapped_column(Text)