pub(crate) mod follower;
pub(crate) mod leader;
use crate::store::StoreNode;
use serde::{Deserialize, Serialize};
use worterbuch_common::{CasVersion, GraveGoods, Key, LastWill, RequestPattern, Value};
#[derive(Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Mode {
Leader,
Follower,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum LeaderSyncMessage {
Init(StateSync),
Mut(ClientWriteCommand),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ClientWriteCommand {
Set(Key, Value, bool),
CSet(Key, Value, CasVersion, bool),
Delete(Key),
PDelete(RequestPattern),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StateSync(pub StoreNode, pub GraveGoods, pub LastWill);