#[derive(Debug, Clone, PartialEq)]
pub enum WalRecord {
Set {
key: Vec<u8>,
value: Vec<u8>,
ttl_ms: Option<u64>,
},
Del {
key: Vec<u8>,
},
Expire {
key: Vec<u8>,
ttl_ms: u64,
},
LPush {
key: Vec<u8>,
values: Vec<Vec<u8>>,
},
RPush {
key: Vec<u8>,
values: Vec<Vec<u8>>,
},
HSet {
key: Vec<u8>,
fields: Vec<(Vec<u8>, Vec<u8>)>,
},
SAdd {
key: Vec<u8>,
members: Vec<Vec<u8>>,
},
FlushDb,
DocSet {
collection: Vec<u8>,
doc_id: Vec<u8>,
json: Vec<u8>,
},
DocDel {
collection: Vec<u8>,
doc_id: Vec<u8>,
},
VecSet {
key: Vec<u8>,
dimensions: usize,
vector: Vec<u8>,
},
VecDel {
key: Vec<u8>,
},
}
pub trait WalWriter: Send {
fn append(&mut self, record: &WalRecord);
fn truncate(&mut self) -> Result<(), String> {
Ok(())
}
}