use crate::msg::bucket_api::{BucketInfo, BucketSettings};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::fmt::{Display, Formatter};
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct License {
pub licensee: String,
pub invoice: String,
pub expiry_date: DateTime<Utc>,
pub plan: String,
pub device_number: u32,
pub disk_quota: i32,
#[serde(default)]
pub fingerprint: String,
}
impl Display for License {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(
f,
"\n\tLicensee: {}\n\tInvoice: {}\n\tExpiry Date: {}\n\tPlan: {}\n\tNumber of Devices: {}\n\tDisk Quota: {} TB,\n\tFingerprint: {}",
self.licensee, self.invoice, self.expiry_date, self.plan, self.device_number, self.disk_quota, self.fingerprint
)
}
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct ServerInfo {
pub version: String,
pub bucket_count: u64,
pub usage: u64,
pub uptime: u64,
pub oldest_record: u64,
pub latest_record: u64,
pub defaults: Defaults,
pub license: Option<License>,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct Defaults {
pub bucket: BucketSettings,
}
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
pub struct BucketInfoList {
pub buckets: Vec<BucketInfo>,
}