Expand description
State store implementations for Rigatoni ETL framework.
This crate provides various backend implementations of the
StateStore trait for persisting
MongoDB change stream resume tokens.
§Available Stores
- Memory (
memoryfeature, enabled by default): In-memory state storage - Redis (
redis-storefeature): Distributed state storage with Redis - File (
filefeature, coming soon): File-based state storage
§Feature Flags
memory: In-memory state store (enabled by default)redis-store: Redis-backed state store (requires Redis server)file: File-based state store (coming soon)all-stores: Enable all available stores
§Example: In-Memory Store
use rigatoni_stores::memory::MemoryStore;
use rigatoni_core::state::StateStore;
use mongodb::bson::doc;
// Create in-memory store (no configuration needed)
let store = MemoryStore::new();
// Save resume token
let token = doc! { "_data": "token123" };
store.save_resume_token("users", &token).await?;
// Retrieve token
let retrieved = store.get_resume_token("users").await?;
assert!(retrieved.is_some());§Example: Redis Store
ⓘ
use rigatoni_stores::redis::{RedisStore, RedisConfig};
use rigatoni_core::state::StateStore;
use mongodb::bson::doc;
// Configure Redis connection
let config = RedisConfig::builder()
.url("redis://localhost:6379")
.pool_size(10)
.build()?;
// Create store
let store = RedisStore::new(config).await?;
// Save resume token
let token = doc! { "_data": "token123" };
store.save_resume_token("users", &token).await?;
// Retrieve token
let retrieved = store.get_resume_token("users").await?;
assert!(retrieved.is_some());