Crate rigatoni_stores

Crate rigatoni_stores 

Source
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 (memory feature, enabled by default): In-memory state storage
  • Redis (redis-store feature): Distributed state storage with Redis
  • File (file feature, 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());

Modules§

memory
In-memory state store implementation.
redis
Redis-backed state store for distributed deployments.