Skip to main content

Crate aimdb_persistence

Crate aimdb_persistence 

Source
Expand description

§aimdb-persistence

Optional persistence layer for AimDB. Persistence is implemented as a buffer subscriber — just like .tap() — keeping it fully within AimDB’s existing producer–consumer architecture.

This crate provides:

§Usage

use aimdb_persistence::{AimDbBuilderPersistExt, RecordRegistrarPersistExt, AimDbQueryExt};
use aimdb_persistence_sqlite::SqliteBackend;

let backend = Arc::new(SqliteBackend::new("./data/history.db")?);

let mut builder = AimDbBuilder::new()
    .runtime(runtime)
    .with_persistence(backend.clone(), Duration::from_secs(7 * 24 * 3600));

builder.configure::<MyRecord>(key, |reg| {
    reg.buffer(BufferCfg::SpmcRing { capacity: 500 })
       .persist(key.to_string());
});

let db = builder.build().await?;

// Query historical data
let latest: Vec<MyRecord> = db.query_latest("my_record::*", 1).await?;

Re-exports§

pub use backend::BoxFuture;
pub use backend::PersistenceBackend;
pub use backend::QueryParams;
pub use backend::StoredValue;
pub use builder_ext::AimDbBuilderPersistExt;
pub use builder_ext::PersistenceState;
pub use error::PersistenceError;
pub use ext::RecordRegistrarPersistExt;
pub use query_ext::AimDbQueryExt;

Modules§

backend
Persistence backend trait for AimDB.
builder_ext
Builder extension: .with_persistence() on AimDbBuilder.
error
Persistence error types for AimDB.
ext
Record registration extension: .persist() on RecordRegistrar.
query_ext
Query extensions on AimDbquery_latest and query_range.