use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreSetRequest {
pub key: String,
pub value: Vec<u8>,
#[serde(default)]
pub ttl_secs: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreSetReply {
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreDeleteRequest {
pub key: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreDeleteReply {
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreCompareAndSetRequest {
pub key: String,
pub expected: Option<Vec<u8>>,
pub value: Vec<u8>,
#[serde(default)]
pub ttl_secs: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreCompareAndSetReply {
pub applied: bool,
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StoreReplicateOp {
Set {
key: String,
value: Vec<u8>,
#[serde(default)]
expires_at_ms: u64,
},
Delete {
key: String,
},
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreReplicateRequest {
pub ops: Vec<StoreReplicateOp>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StoreReplicateReply {
pub error: Option<String>,
}