use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub enum LDBNatsMessage { Command(LypheDBCommand), Entries(KVList), Count(u64), Success, BadRequest, NotFound, } #[derive(Clone, Debug, Serialize, Deserialize)] pub enum PropagationStrategy { /// Reads will immediately be able to read this key's value as soon as it has been set Immediate, /// The value change will be queued along with others, /// then in a period of either inactivity or a maximum time, all changes will be immediately /// seen at once Timeout, /// The key will be removed from the cache, and thus the next read will cause a cache miss, /// and the value will be loaded from disk OnRead, } #[derive(Clone, Debug, Serialize, Deserialize)] pub enum LypheDBCommand { SetKeys(KVList, PropagationStrategy), GetKeys(KeyList), CountKeys(KeyDirectory), /// NOT RECURSIVE GetKeyDirectory(KeyDirectory), DeleteKeys(KeyList), } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct KVList { pub kvs: Vec<(Vec, Vec)>, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct KeyList { pub keys: Vec>, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct KeyDirectory { pub key: Vec, }