PostgreSQL persistence backend for the Sayiir workflow engine.
This crate provides [PostgresBackend], a production-grade implementation of
SnapshotStore,
SignalStore, and
TaskClaimStore backed by PostgreSQL via
[sqlx].
Features
- Codec-generic: Serialise snapshots with any codec (JSON for debuggability,
rkyv/bincode for speed). The data column is always
BYTEA. - ACID transactions: Composite signal operations (
check_and_cancel,check_and_pause,unpause) use single Postgres transactions withSELECT … FOR UPDATEfor true atomicity. - Snapshot history: Every checkpoint is appended to an immutable history table for debugging, auditing, and future replay.
- Observability-ready: Indexed metadata columns (
status,current_task_id,completed_task_count,error, timestamps) plus a denormalisedsayiir_workflow_taskstable enable monitoring without deserialising blobs. - Distributed task claiming:
TaskClaimStorewith TTL-based claims, expired-claim replacement, and soft worker bias.
PostgreSQL version support
Minimum supported version: PostgreSQL 13. The schema uses
INSERT … ON CONFLICT DO UPDATE (9.5+) and ALTER TABLE … ADD COLUMN IF NOT EXISTS (9.6+); 13 is the floor because it is the oldest major release still
receiving security patches. Integration tests run against both 13 and 17.
Quick start
use PostgresBackend;
use JsonCodec;
use SnapshotStore;
use WorkflowSnapshot;
# async