reduct_base/msg/
replication_api.rs1use crate::msg::diagnostics::Diagnostics;
6use crate::Labels;
7use serde::{Deserialize, Serialize};
8use serde_json::Value;
9
10#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
12#[serde(rename_all = "lowercase")]
13pub enum ReplicationMode {
14 Enabled,
16 Paused,
18 Disabled,
20}
21
22impl Default for ReplicationMode {
23 fn default() -> Self {
24 Self::Enabled
25 }
26}
27
28#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
30pub struct ReplicationSettings {
31 pub src_bucket: String,
33 pub dst_bucket: String,
35 pub dst_host: String,
37 pub dst_token: Option<String>,
39 #[serde(default)]
41 pub entries: Vec<String>,
42 #[serde(default)]
44 pub include: Labels,
45 #[serde(default)]
47 pub exclude: Labels,
48 #[serde(default)]
50 pub each_n: Option<u64>,
51 #[serde(default)]
53 pub each_s: Option<f64>,
54 #[serde(default)]
56 pub when: Option<Value>,
57 #[serde(default)]
59 pub mode: ReplicationMode,
60}
61
62#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
64pub struct ReplicationInfo {
65 pub name: String,
67 #[serde(default)] pub mode: ReplicationMode,
70 pub is_active: bool,
72 pub is_provisioned: bool,
74 pub pending_records: u64,
76}
77
78#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
80pub struct ReplicationModePayload {
81 pub mode: ReplicationMode,
82}
83
84#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
86pub struct ReplicationList {
87 pub replications: Vec<ReplicationInfo>,
89}
90
91#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
93pub struct FullReplicationInfo {
94 pub info: ReplicationInfo,
96 pub settings: ReplicationSettings,
98 pub diagnostics: Diagnostics,
100}