use std::collections::HashMap;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Tier {
Convergent,
Causal,
Strong,
}
#[derive(Clone, Debug)]
pub struct ConsistencySchema {
default: Tier,
fields: HashMap<String, Tier>,
}
impl Default for ConsistencySchema {
fn default() -> Self {
Self {
default: Tier::Convergent,
fields: HashMap::new(),
}
}
}
impl ConsistencySchema {
pub fn new() -> Self {
Self::default()
}
pub fn with_field(mut self, field: impl Into<String>, tier: Tier) -> Self {
self.fields.insert(field.into(), tier);
self
}
pub fn tier_of(&self, field: &str) -> Tier {
self.fields.get(field).copied().unwrap_or(self.default)
}
pub fn default_tier(&self) -> Tier {
self.default
}
}