pub struct SqliteStore { /* private fields */ }Expand description
Adapter that exposes the existing rusqlite-backed TransactionStore
through the async AuditStore trait. Each method runs the underlying
blocking work on tokio::task::spawn_blocking so the executor stays
responsive even when the SQLite write takes a millisecond on a slow disk.
Implementations§
Source§impl SqliteStore
impl SqliteStore
pub fn new(inner: TransactionStore) -> Self
Sourcepub fn inner(&self) -> &TransactionStore
pub fn inner(&self) -> &TransactionStore
Borrow the wrapped sync TransactionStore. Used by call sites that
genuinely need the blocking handle (test helpers, the audit-verify
CLI subcommand which is itself sync over the result).
Trait Implementations§
Source§impl AuditStore for SqliteStore
impl AuditStore for SqliteStore
fn record<'life0, 'async_trait>(
&'life0 self,
transaction: NewTransaction,
) -> Pin<Box<dyn Future<Output = Result<TransactionRecord, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn record_previewed<'life0, 'async_trait>(
&'life0 self,
transaction: NewTransaction,
preview: PreviewEnvelope,
) -> Pin<Box<dyn Future<Output = Result<RecordedPreviewedTransaction, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<TransactionRecord>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_preview<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PreviewEnvelope>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_status<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
new_status: JobState,
) -> Pin<Box<dyn Future<Output = Result<(), TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn approve_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<String>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn revoke_unconsumed_approval<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn claim_approved_for_execution<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
receipt_digest: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn cleanup_stale_queued<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn cancel_queued<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cancel_queued<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Cancel one still-
Queued transaction (Queued → Canceled). Returns
true iff a queued row was transitioned; a Running (in-flight) or
terminal transaction is never cancelled. See
crate::transactions::TransactionStore::cancel_queued.fn list_transactions<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
limit: u32,
status_filter: Option<&'life1 str>,
action_filter: Option<&'life2 str>,
since_hours: Option<u32>,
) -> Pin<Box<dyn Future<Output = Result<Vec<TransactionRecord>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn list_history<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
limit: u32,
status_filter: Option<&'life1 str>,
action_filter: Option<&'life2 str>,
since_hours: Option<u32>,
) -> Pin<Box<dyn Future<Output = Result<Vec<JobHistoryEntry>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_history<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
limit: u32,
status_filter: Option<&'life1 str>,
action_filter: Option<&'life2 str>,
since_hours: Option<u32>,
) -> Pin<Box<dyn Future<Output = Result<Vec<JobHistoryEntry>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Structured history rows (with
created_at and typed risk_level) for
programmatic clients. See crate::transactions::JobHistoryEntry.fn fetch_chain_row<'life0, 'life1, 'async_trait>(
&'life0 self,
transaction_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<ChainRow>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_chain_rows<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChainRow>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn fetch_event_rows<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<EventRow>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn fetch_event_rows<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<EventRow>, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Every approval event, in seq order. Backs the second chain that records
grant/consume/revoke — see
audit_chain::AuditEventKind.fn verify_audit_chain<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 AuditKey,
) -> Pin<Box<dyn Future<Output = Result<VerifyOutcome, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn reconcile_interrupted_running<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reconcile_interrupted_running<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u64, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Reconcile transactions orphaned by a daemon crash or restart. Read more
Source§fn verify_event_chain<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 AuditKey,
) -> Pin<Box<dyn Future<Output = Result<VerifyOutcome, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn verify_event_chain<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 AuditKey,
) -> Pin<Box<dyn Future<Output = Result<VerifyOutcome, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Walk the approval-event chain. Read more
Source§fn verify_event_binding<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<BindingOutcome, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn verify_event_binding<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<BindingOutcome, TransactionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check that every event tip committed by a transaction row still exists
in the event chain. See
audit_chain::verify_event_binding.Source§impl Clone for SqliteStore
impl Clone for SqliteStore
Auto Trait Implementations§
impl Freeze for SqliteStore
impl RefUnwindSafe for SqliteStore
impl Send for SqliteStore
impl Sync for SqliteStore
impl Unpin for SqliteStore
impl UnsafeUnpin for SqliteStore
impl UnwindSafe for SqliteStore
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