pub mod notifications;
pub mod operations;
pub mod smr_impl;
pub mod store;
pub use notifications::{ChangeNotification, NotificationBus, SubscriptionId};
pub use operations::{KVOperation, KVResult, StoreError};
pub use smr_impl::{KVStoreSMR, KVStoreState};
pub use store::{KVStore, KVStoreConfig, StoreSnapshot};
pub use rabia_core::smr::StateMachine;
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_kvstore_basic_operations() {
let config = KVStoreConfig::default();
let store = KVStore::new(config).await.unwrap();
let result = store.set("key1", "value1").await.unwrap();
assert!(result.is_success());
let value = store.get("key1").await.unwrap();
assert_eq!(value.unwrap(), "value1");
let result = store.delete("key1").await.unwrap();
assert!(result.is_success());
let value = store.get("key1").await.unwrap();
assert!(value.is_none());
}
}