use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WriteResponse {
#[serde(default)]
pub successful: HashMap<String, serde_json::Value>,
#[serde(default)]
pub unchanged: HashMap<String, String>,
#[serde(default)]
pub failed: HashMap<String, WriteFailed>,
}
impl WriteResponse {
pub fn is_ok(&self) -> bool {
self.failed.is_empty()
}
pub fn successful_keys(&self) -> Vec<String> {
self.successful
.values()
.filter_map(|v| v.get("key").and_then(|k| k.as_str()).map(|s| s.to_string()))
.collect()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WriteFailed {
pub key: Option<String>,
pub code: u16,
pub message: String,
}