use serde::{Deserialize, Serialize};
use crate::wire::lossy_bool;
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
pub struct ServerStatus {
#[serde(default, deserialize_with = "lossy_bool")]
pub installed: bool,
#[serde(default, deserialize_with = "lossy_bool")]
pub maintenance: bool,
#[serde(
default,
alias = "needsDbUpgrade",
alias = "needs_db_upgrade",
deserialize_with = "lossy_bool"
)]
pub needs_db_upgrade: bool,
#[serde(default)]
pub version: Option<String>,
#[serde(default, alias = "versionstring", alias = "version_string")]
pub version_string: Option<String>,
#[serde(default)]
pub edition: Option<String>,
#[serde(default, alias = "productname", alias = "product_name")]
pub product_name: Option<String>,
}
impl ServerStatus {
pub const fn is_installed(&self) -> bool {
self.installed
}
pub const fn is_maintenance(&self) -> bool {
self.maintenance
}
pub const fn needs_db_upgrade(&self) -> bool {
self.needs_db_upgrade
}
pub fn version(&self) -> Option<&str> {
self.version.as_deref()
}
pub fn version_string(&self) -> Option<&str> {
self.version_string.as_deref()
}
pub fn edition(&self) -> Option<&str> {
self.edition.as_deref()
}
pub fn product_name(&self) -> Option<&str> {
self.product_name.as_deref()
}
}