use crate::msg::diagnostics::Diagnostics;
use crate::Labels;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum ReplicationMode {
Enabled,
Paused,
Disabled,
}
impl Default for ReplicationMode {
fn default() -> Self {
Self::Enabled
}
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
pub struct ReplicationSettings {
pub src_bucket: String,
pub dst_bucket: String,
pub dst_host: String,
pub dst_token: Option<String>,
#[serde(default)]
pub entries: Vec<String>,
#[serde(default)]
pub include: Labels,
#[serde(default)]
pub exclude: Labels,
#[serde(default)]
pub each_n: Option<u64>,
#[serde(default)]
pub each_s: Option<f64>,
#[serde(default)]
pub when: Option<Value>,
#[serde(default)]
pub mode: ReplicationMode,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct ReplicationInfo {
pub name: String,
#[serde(default)] pub mode: ReplicationMode,
pub is_active: bool,
pub is_provisioned: bool,
pub pending_records: u64,
}
#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
pub struct ReplicationModePayload {
pub mode: ReplicationMode,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
pub struct ReplicationList {
pub replications: Vec<ReplicationInfo>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct FullReplicationInfo {
pub info: ReplicationInfo,
pub settings: ReplicationSettings,
pub diagnostics: Diagnostics,
}