use crate::client::RestClient;
use crate::error::Result;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CmSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub cm_port: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cm_session_timeout: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_recovery: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_failover: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slave_ha: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slave_ha_grace_period: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_simultaneous_backups: Option<u32>,
}
pub struct CmSettingsHandler {
client: RestClient,
}
impl CmSettingsHandler {
pub fn new(client: RestClient) -> Self {
CmSettingsHandler { client }
}
pub async fn get(&self) -> Result<CmSettings> {
self.client.get("/v1/cm_settings").await
}
pub async fn update(&self, settings: CmSettings) -> Result<CmSettings> {
self.client.put("/v1/cm_settings", &settings).await
}
pub async fn reset(&self) -> Result<()> {
self.client.delete("/v1/cm_settings").await
}
}