pub struct SqliteWorkGraphStore { /* private fields */ }Implementations§
Source§impl SqliteWorkGraphStore
impl SqliteWorkGraphStore
pub fn open(path: impl Into<PathBuf>) -> Result<Self, WorkGraphError>
pub fn path(&self) -> &Path
pub fn rebuild_projection_from_events(&self) -> Result<(), WorkGraphError>
Trait Implementations§
Source§impl WorkGraphStore for SqliteWorkGraphStore
impl WorkGraphStore for SqliteWorkGraphStore
fn kind(&self) -> WorkGraphStoreKind
fn get_store_time_utc<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DateTime<Utc>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn insert_item<'life0, 'async_trait>(
&'life0 self,
item: WorkItem,
event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<WorkItem, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_item_cas<'life0, 'async_trait>(
&'life0 self,
item: WorkItem,
expected_previous_revision: u64,
event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<WorkItem, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_item<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
realm_id: &'life1 str,
namespace: &'life2 WorkNamespace,
id: &'life3 WorkItemId,
) -> Pin<Box<dyn Future<Output = Result<Option<WorkItem>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn list_items<'life0, 'async_trait>(
&'life0 self,
filter: WorkItemFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkItem>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn insert_goal<'life0, 'async_trait>(
&'life0 self,
item: WorkItem,
item_event: WorkGraphEvent,
attention: WorkAttentionBinding,
attention_event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<(WorkItem, WorkAttentionBinding), WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_attention_cas<'life0, 'async_trait>(
&'life0 self,
attention: WorkAttentionBinding,
expected_previous_revision: u64,
event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<WorkAttentionBinding, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reassign_attention_cas<'life0, 'async_trait>(
&'life0 self,
previous: WorkAttentionBinding,
expected_previous_revision: u64,
previous_event: WorkGraphEvent,
replacement: WorkAttentionBinding,
replacement_event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<(WorkAttentionBinding, WorkAttentionBinding), WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_item_and_attention_cas<'life0, 'async_trait>(
&'life0 self,
item: WorkItem,
expected_previous_revision: u64,
item_event: WorkGraphEvent,
attention_updates: Vec<(WorkAttentionBinding, u64, WorkGraphEvent)>,
) -> Pin<Box<dyn Future<Output = Result<WorkItem, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_attention<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
realm_id: &'life1 str,
namespace: &'life2 WorkNamespace,
binding_id: &'life3 WorkAttentionBindingId,
) -> Pin<Box<dyn Future<Output = Result<Option<WorkAttentionBinding>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn list_attention<'life0, 'async_trait>(
&'life0 self,
filter: AttentionListRequest,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkAttentionBinding>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn list_attention_bounded<'life0, 'async_trait>(
&'life0 self,
filter: AttentionListRequest,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkAttentionBinding>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_attention_bounded<'life0, 'async_trait>(
&'life0 self,
filter: AttentionListRequest,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkAttentionBinding>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Return at most
limit attention rows. Backends should push this bound
into iteration/query ownership; the default is compatibility-only for
custom stores.Source§fn prune_terminal_attention<'life0, 'async_trait>(
&'life0 self,
filter: AttentionPruneRequest,
) -> Pin<Box<dyn Future<Output = Result<u64, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn prune_terminal_attention<'life0, 'async_trait>(
&'life0 self,
filter: AttentionPruneRequest,
) -> Pin<Box<dyn Future<Output = Result<u64, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete TERMINAL (superseded/stopped) attention binding rows in scope.
The event stream keeps the audit history; binding rows otherwise grow
monotonically with reassignment churn. Returns the pruned row count.
fn insert_edge<'life0, 'async_trait>(
&'life0 self,
edge: WorkEdge,
event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<WorkEdge, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn insert_edge_validated<'life0, 'async_trait>(
&'life0 self,
edge: WorkEdge,
event: WorkGraphEvent,
) -> Pin<Box<dyn Future<Output = Result<WorkEdge, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_edges<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
realm_id: &'life1 str,
namespace: &'life2 WorkNamespace,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkEdge>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn list_edges_bounded<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
realm_id: &'life1 str,
namespace: &'life2 WorkNamespace,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkEdge>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_edges_bounded<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
realm_id: &'life1 str,
namespace: &'life2 WorkNamespace,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkEdge>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Return at most
limit edges in one namespace.fn list_events<'life0, 'async_trait>(
&'life0 self,
filter: WorkGraphEventFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<WorkGraphEvent>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn latest_event_seq<'life0, 'async_trait>(
&'life0 self,
filter: WorkGraphEventFilter,
) -> Pin<Box<dyn Future<Output = Result<Option<i64>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn latest_event_seq<'life0, 'async_trait>(
&'life0 self,
filter: WorkGraphEventFilter,
) -> Pin<Box<dyn Future<Output = Result<Option<i64>, WorkGraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Highest sequence matching a scope without retaining the event history.
Auto Trait Implementations§
impl Freeze for SqliteWorkGraphStore
impl RefUnwindSafe for SqliteWorkGraphStore
impl Send for SqliteWorkGraphStore
impl Sync for SqliteWorkGraphStore
impl Unpin for SqliteWorkGraphStore
impl UnsafeUnpin for SqliteWorkGraphStore
impl UnwindSafe for SqliteWorkGraphStore
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