1use crossbeam_channel::Receiver;
2use std::collections::HashMap;
3
4use crate::{BackendError, StoredValue};
5
6pub trait StorageBackend: Send + Sync {
7 fn load_all(&self) -> Result<HashMap<String, StoredValue>, BackendError>;
10
11 fn set(&self, key: &str, value: &StoredValue) -> Result<(), BackendError>;
17
18 fn delete(&self, key: &str) -> Result<(), BackendError>;
22
23 fn watch_changes(&self) -> Option<Receiver<()>> {
26 None
27 }
28}
29
30#[derive(Debug, Default)]
31pub struct NoopBackend;
32
33impl StorageBackend for NoopBackend {
34 fn load_all(&self) -> Result<HashMap<String, StoredValue>, BackendError> {
35 Ok(HashMap::new())
36 }
37
38 fn set(&self, _key: &str, _value: &StoredValue) -> Result<(), BackendError> {
39 Ok(())
40 }
41
42 fn delete(&self, _key: &str) -> Result<(), BackendError> {
43 Ok(())
44 }
45}