pub struct PostgresStateStore { /* private fields */ }Expand description
PostgreSQL state store implementation.
Implementations§
Source§impl PostgresStateStore
impl PostgresStateStore
Sourcepub async fn new(
database_url: impl AsRef<str>,
min_connections: Option<u32>,
max_connections: Option<u32>,
) -> StateStoreResult<Self>
pub async fn new( database_url: impl AsRef<str>, min_connections: Option<u32>, max_connections: Option<u32>, ) -> StateStoreResult<Self>
Create a new PostgreSQL state store with connection pooling.
§Arguments
database_url- PostgreSQL connection stringmin_connections- Minimum number of connections in pool (default: 5)max_connections- Maximum number of connections in pool (default: 20)
§Example
let store = PostgresStateStore::new(
"postgresql://user:pass@localhost/workflows",
Some(5),
Some(20),
).await?;Trait Implementations§
Source§impl StateStore for PostgresStateStore
impl StateStore for PostgresStateStore
Source§fn save_workflow_state<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 WorkflowState,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_workflow_state<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 WorkflowState,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save or update a workflow state.
Source§fn load_workflow_state<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load_workflow_state<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Load a workflow state by ID.
Source§fn load_workflow_state_by_workflow_id<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load_workflow_state_by_workflow_id<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Load a workflow state by workflow ID (gets the most recent).
Source§fn list_active_workflows<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateStoreResult<Vec<WorkflowState>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_active_workflows<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateStoreResult<Vec<WorkflowState>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all active workflows (running or paused).
Source§fn create_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint: &'life1 Checkpoint,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint: &'life1 Checkpoint,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a checkpoint.
Source§fn get_latest_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_state_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<Option<Checkpoint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_latest_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_state_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<Option<Checkpoint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the latest checkpoint for a workflow.
Source§fn restore_from_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn restore_from_checkpoint<'life0, 'life1, 'async_trait>(
&'life0 self,
checkpoint_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = StateStoreResult<WorkflowState>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Restore state from a checkpoint.
Source§fn delete_old_states<'life0, 'async_trait>(
&'life0 self,
older_than: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = StateStoreResult<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_old_states<'life0, 'async_trait>(
&'life0 self,
older_than: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = StateStoreResult<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete old states (cleanup).
Source§fn cleanup_old_checkpoints<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_state_id: &'life1 Uuid,
keep_count: usize,
) -> Pin<Box<dyn Future<Output = StateStoreResult<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cleanup_old_checkpoints<'life0, 'life1, 'async_trait>(
&'life0 self,
workflow_state_id: &'life1 Uuid,
keep_count: usize,
) -> Pin<Box<dyn Future<Output = StateStoreResult<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete old checkpoints for a workflow (keep only the last N).
Source§fn health_check<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn health_check<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateStoreResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Health check for the state store.
Auto Trait Implementations§
impl Freeze for PostgresStateStore
impl !RefUnwindSafe for PostgresStateStore
impl Send for PostgresStateStore
impl Sync for PostgresStateStore
impl Unpin for PostgresStateStore
impl !UnwindSafe for PostgresStateStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more