mod file;
#[cfg(feature = "elasticsearch-storage")]
mod elasticsearch;
pub use file::FileStorage;
#[cfg(feature = "elasticsearch-storage")]
pub use elasticsearch::ElasticsearchStorage;
use crate::{HyperLogLog, Result};
use async_trait::async_trait;
#[async_trait]
pub trait Storage: Send + Sync {
async fn store(&self, key: &str, hll: &HyperLogLog) -> Result<()>;
async fn load(&self, key: &str) -> Result<HyperLogLog>;
async fn delete(&self, key: &str) -> Result<()>;
async fn exists(&self, key: &str) -> Result<bool>;
async fn list_keys(&self) -> Result<Vec<String>>;
}