pub struct SqliteFlowStore { /* private fields */ }Implementations§
Source§impl SqliteFlowStore
impl SqliteFlowStore
Sourcepub async fn open(path: &str) -> Result<Self, FlowError>
pub async fn open(path: &str) -> Result<Self, FlowError>
Open or create a SQLite database at path. Use :memory: for tests.
Sourcepub async fn with_pool(pool: SqlitePool) -> Result<Self, FlowError>
pub async fn with_pool(pool: SqlitePool) -> Result<Self, FlowError>
Open against a pool the caller already owns. Useful for tests that share an in-memory DB across multiple stores.
pub fn pool(&self) -> &SqlitePool
Trait Implementations§
Source§impl Clone for SqliteFlowStore
impl Clone for SqliteFlowStore
Source§fn clone(&self) -> SqliteFlowStore
fn clone(&self) -> SqliteFlowStore
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl FlowStore for SqliteFlowStore
impl FlowStore for SqliteFlowStore
Source§fn update_and_append<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
flow: &'life1 Flow,
event_kind: &'life2 str,
event_payload: Value,
) -> Pin<Box<dyn Future<Output = Result<(Flow, FlowEvent), FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn update_and_append<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
flow: &'life1 Flow,
event_kind: &'life2 str,
event_payload: Value,
) -> Pin<Box<dyn Future<Output = Result<(Flow, FlowEvent), FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Atomic override: runs the revision check, UPDATE, event INSERT, and final SELECT inside one SQLite transaction. A crash at any point rolls back and the caller sees either the full old state or the full new state + event — no torn audit trail.
fn insert<'life0, 'life1, 'async_trait>(
&'life0 self,
flow: &'life1 Flow,
) -> Pin<Box<dyn Future<Output = Result<(), FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<Flow>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_by_owner<'life0, 'life1, 'async_trait>(
&'life0 self,
owner_session_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Flow>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_by_status<'life0, 'async_trait>(
&'life0 self,
status: FlowStatus,
) -> Pin<Box<dyn Future<Output = Result<Vec<Flow>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_with_revision<'life0, 'life1, 'async_trait>(
&'life0 self,
flow: &'life1 Flow,
) -> Pin<Box<dyn Future<Output = Result<Flow, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_event<'life0, 'life1, 'async_trait>(
&'life0 self,
flow_id: Uuid,
kind: &'life1 str,
payload: Value,
) -> Pin<Box<dyn Future<Output = Result<FlowEvent, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_events<'life0, 'async_trait>(
&'life0 self,
flow_id: Uuid,
limit: i64,
) -> Pin<Box<dyn Future<Output = Result<Vec<FlowEvent>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn insert_step<'life0, 'life1, 'async_trait>(
&'life0 self,
step: &'life1 FlowStep,
) -> Pin<Box<dyn Future<Output = Result<(), FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_step<'life0, 'life1, 'async_trait>(
&'life0 self,
step: &'life1 FlowStep,
) -> Pin<Box<dyn Future<Output = Result<FlowStep, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_step<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Option<FlowStep>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_steps<'life0, 'async_trait>(
&'life0 self,
flow_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<FlowStep>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn find_step_by_run_id<'life0, 'life1, 'async_trait>(
&'life0 self,
flow_id: Uuid,
run_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<FlowStep>, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn prune_terminal_flows<'life0, 'async_trait>(
&'life0 self,
retain_days: i64,
) -> Pin<Box<dyn Future<Output = Result<u64, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn prune_terminal_flows<'life0, 'async_trait>(
&'life0 self,
retain_days: i64,
) -> Pin<Box<dyn Future<Output = Result<u64, FlowError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Drop flows in terminal status (
Finished, Failed, Cancelled)
whose updated_at is older than retain_days. Cascades through
flow_steps and flow_events via ON DELETE CASCADE in schema.
Intended for a daily heartbeat so list_by_owner / list_by_ status don’t grow O(n) over all history. Default impl returns
an error — stores must override.Auto Trait Implementations§
impl Freeze for SqliteFlowStore
impl !RefUnwindSafe for SqliteFlowStore
impl Send for SqliteFlowStore
impl Sync for SqliteFlowStore
impl Unpin for SqliteFlowStore
impl UnsafeUnpin for SqliteFlowStore
impl !UnwindSafe for SqliteFlowStore
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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