49 lines
No EOL
1.3 KiB
Rust
49 lines
No EOL
1.3 KiB
Rust
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<u8>, Vec<u8>)>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct KeyList {
|
|
pub keys: Vec<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
pub struct KeyDirectory {
|
|
pub key: Vec<u8>,
|
|
} |