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:
PersistenceBackendtrait for pluggable backends (SQLite, Postgres, …)AimDbBuilderPersistExt— adds.with_persistence()to the builderRecordRegistrarPersistExt— adds.persist()to record registrationAimDbQueryExt— adds.query_latest()/.query_range()toAimDb<R>
§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()onAimDbBuilder. - error
- Persistence error types for AimDB.
- ext
- Record registration extension:
.persist()onRecordRegistrar. - query_
ext - Query extensions on
AimDb—query_latestandquery_range.