use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::output::common::{Cache, Encryption, Limits, Repository};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum Info {
Repository {
repository: Repository,
cache: Option<Cache>,
encryption: Option<Encryption>,
security_dir: Option<String>,
},
Archives {
repository: Repository,
cache: Option<Cache>,
encryption: Option<Encryption>,
archives: Vec<InfoArchive>,
},
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct InfoArchive {
pub id: String,
pub name: String,
pub command_line: Vec<String>,
pub limits: Limits,
pub duration: f64,
pub chunker_params: Vec<Value>,
pub start: NaiveDateTime,
pub end: NaiveDateTime,
pub stats: ArchiveStats,
pub hostname: String,
pub username: String,
pub comment: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub struct ArchiveStats {
pub compressed_size: u64,
pub deduplicated_size: u64,
pub nfiles: u64,
pub original_size: u64,
}