backup: default deserialization

This commit is contained in:
pythcoiner 2025-03-12 17:49:03 +01:00
parent 4ba6486645
commit 31f834f41d
No known key found for this signature in database
GPG Key ID: C1048AEEDF303B88

View File

@ -45,13 +45,14 @@ fn now() -> u64 {
#[derive(Serialize, Deserialize)]
pub struct Backup {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default)]
pub accounts: Vec<Account>,
pub network: Network,
pub date: u64,
/// App proprietary metadata (settings, configuration, etc..)
#[serde(skip_serializing_if = "serde_json::Map::is_empty")]
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty")]
pub proprietary: serde_json::Map<String, serde_json::Value>,
#[serde(default = "default_version")]
pub version: u32,
@ -359,28 +360,28 @@ async fn get_transactions(
#[derive(Debug, Serialize, Deserialize)]
pub struct Account {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub descriptor: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub receive_index: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub change_index: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<u64>,
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub keys: BTreeMap<Fingerprint, Key>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<bip329::Labels>,
#[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub transactions: Vec<String>,
#[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub psbts: Vec<String>,
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub coins: BTreeMap<String, Coin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub chain_tip: Option<ChainTip>,
#[serde(skip_serializing_if = "serde_json::Map::is_empty")]
#[serde(default, skip_serializing_if = "serde_json::Map::is_empty")]
pub proprietary: serde_json::Map<String, serde_json::Value>,
}