reduct_base/msg/
replication_api.rs1use crate::msg::diagnostics::Diagnostics;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
9#[serde(rename_all = "lowercase")]
10pub enum ReplicationMode {
11 Enabled,
13 Paused,
15 Disabled,
17}
18
19impl Default for ReplicationMode {
20 fn default() -> Self {
21 Self::Enabled
22 }
23}
24
25#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, Default)]
27#[serde(rename_all = "lowercase")]
28pub enum ReplicationCompression {
29 #[default]
31 None,
32 Zstd,
34 Gzip,
36}
37
38#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
40pub struct ReplicationSettings {
41 pub src_bucket: String,
43 pub dst_bucket: String,
45 pub dst_host: String,
47 pub dst_token: Option<String>,
49 #[serde(default)]
52 pub entries: Vec<String>,
53 #[serde(default)]
55 pub dst_prefix: String,
56 #[serde(default)]
58 pub when: Option<Value>,
59 #[serde(default)]
61 pub mode: ReplicationMode,
62 #[serde(default)]
64 pub compression: ReplicationCompression,
65}
66
67#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
69pub struct ReplicationInfo {
70 pub name: String,
72 #[serde(default)] pub mode: ReplicationMode,
75 pub is_active: bool,
77 pub is_provisioned: bool,
79 pub pending_records: u64,
81}
82
83#[derive(Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq)]
85pub struct ReplicationModePayload {
86 pub mode: ReplicationMode,
87}
88
89#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
91pub struct ReplicationList {
92 pub replications: Vec<ReplicationInfo>,
94}
95
96#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
98pub struct FullReplicationInfo {
99 pub info: ReplicationInfo,
101 pub settings: ReplicationSettings,
103 pub diagnostics: Diagnostics,
105}