pub struct Store {
pub oplog: OpLog,
/* private fields */
}Expand description
Persistent graph store backed by redb + in-memory OpLog.
On open: loads all entries from redb into the OpLog.
On append: writes to OpLog (in-memory) immediately. Persistence depends on flush_mode:
Immediate: each write persists to redb (safe, slow).Deferred: writes buffer untilflush()is called (fast, one fsync for N writes).
Fields§
§oplog: OpLogImplementations§
Source§impl Store
impl Store
Sourcepub fn open(path: &Path, genesis: Option<Entry>) -> Result<Self, StoreError>
pub fn open(path: &Path, genesis: Option<Entry>) -> Result<Self, StoreError>
Open or create a store at the given path.
If the database already exists, all entries are loaded into the OpLog. If the database is new, a genesis entry must be provided.
Sourcepub fn append(&mut self, entry: Entry) -> Result<bool, StoreError>
pub fn append(&mut self, entry: Entry) -> Result<bool, StoreError>
Append an entry — writes to OpLog immediately, persists based on flush_mode.
Sourcepub fn set_flush_mode(&mut self, mode: FlushMode)
pub fn set_flush_mode(&mut self, mode: FlushMode)
Set the flush mode.
Sourcepub fn flush(&mut self) -> Result<usize, StoreError>
pub fn flush(&mut self) -> Result<usize, StoreError>
Flush all pending entries to redb in a single transaction. No-op if no pending entries or if flush_mode is Immediate.
Sourcepub fn pending_count(&self) -> usize
pub fn pending_count(&self) -> usize
Number of entries pending flush (0 in Immediate mode).
Sourcepub fn merge(&mut self, entries: &[Entry]) -> Result<usize, StoreError>
pub fn merge(&mut self, entries: &[Entry]) -> Result<usize, StoreError>
Merge a batch of remote entries — writes each to OpLog and redb.
Handles out-of-order entries by retrying those with missing parents. Returns the number of new entries merged. Review 4 fix: batches all entry writes + heads into fewer transactions.
Sourcepub fn replace_with_checkpoint(
&mut self,
checkpoint: Entry,
) -> Result<(), StoreError>
pub fn replace_with_checkpoint( &mut self, checkpoint: Entry, ) -> Result<(), StoreError>
R-08: Replace entire store with a single checkpoint entry.