reduct_base/msg/
replication_api.rs1use crate::msg::diagnostics::Diagnostics;
4use crate::Labels;
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7
8#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
10#[serde(rename_all = "lowercase")]
11pub enum ReplicationMode {
12 Enabled,
14 Paused,
16 Disabled,
18}
19
20impl Default for ReplicationMode {
21 fn default() -> Self {
22 Self::Enabled
23 }
24}
25
26#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
28pub struct ReplicationSettings {
29 pub src_bucket: String,
31 pub dst_bucket: String,
33 pub dst_host: String,
35 pub dst_token: Option<String>,
37 #[serde(default)]
39 pub entries: Vec<String>,
40 #[serde(default)]
42 pub include: Labels,
43 #[serde(default)]
45 pub exclude: Labels,
46 #[serde(default)]
48 pub each_n: Option<u64>,
49 #[serde(default)]
51 pub each_s: Option<f64>,
52 #[serde(default)]
54 pub when: Option<Value>,
55 #[serde(default)]
57 pub mode: ReplicationMode,
58}
59
60#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
62pub struct ReplicationInfo {
63 pub name: String,
65 #[serde(default)] pub mode: ReplicationMode,
68 pub is_active: bool,
70 pub is_provisioned: bool,
72 pub pending_records: u64,
74}
75
76#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
78pub struct ReplicationModePayload {
79 pub mode: ReplicationMode,
80}
81
82#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
84pub struct ReplicationList {
85 pub replications: Vec<ReplicationInfo>,
87}
88
89#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
91pub struct FullReplicationInfo {
92 pub info: ReplicationInfo,
94 pub settings: ReplicationSettings,
96 pub diagnostics: Diagnostics,
98}