fakecloud_transfer/
state.rs1use std::collections::BTreeMap;
12use std::sync::Arc;
13
14use parking_lot::RwLock;
15use serde::{Deserialize, Serialize};
16use serde_json::Value;
17
18use fakecloud_core::multi_account::{AccountState, MultiAccountState};
19
20pub const TRANSFER_SNAPSHOT_SCHEMA_VERSION: u32 = 1;
21
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
25pub struct TransferData {
26 #[serde(default)]
28 pub servers: BTreeMap<String, Value>,
29 #[serde(default)]
31 pub users: BTreeMap<String, Value>,
32 #[serde(default)]
34 pub accesses: BTreeMap<String, Value>,
35 #[serde(default)]
37 pub host_keys: BTreeMap<String, Value>,
38 #[serde(default)]
40 pub workflows: BTreeMap<String, Value>,
41 #[serde(default)]
43 pub executions: BTreeMap<String, Value>,
44 #[serde(default)]
46 pub agreements: BTreeMap<String, Value>,
47 #[serde(default)]
49 pub connectors: BTreeMap<String, Value>,
50 #[serde(default)]
52 pub profiles: BTreeMap<String, Value>,
53 #[serde(default)]
55 pub certificates: BTreeMap<String, Value>,
56 #[serde(default)]
58 pub web_apps: BTreeMap<String, Value>,
59 #[serde(default)]
61 pub web_app_customizations: BTreeMap<String, Value>,
62 #[serde(default)]
64 pub file_transfers: BTreeMap<String, Value>,
65 #[serde(default)]
67 pub tags: BTreeMap<String, BTreeMap<String, String>>,
68}
69
70impl AccountState for TransferData {
71 fn new_for_account(_account_id: &str, _region: &str, _endpoint: &str) -> Self {
72 Self::default()
73 }
74}
75
76pub type SharedTransferState = Arc<RwLock<MultiAccountState<TransferData>>>;
77
78#[derive(Debug, Serialize, Deserialize)]
79pub struct TransferSnapshot {
80 pub schema_version: u32,
81 pub accounts: MultiAccountState<TransferData>,
82}