use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use super::get_config::GetConfigResultBody;
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[non_exhaustive]
pub struct UpdateConfigBody {
#[cfg_attr(feature = "openapi", schema(value_type = Object))]
pub overrides: HashMap<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ext: Option<Value>,
}
impl UpdateConfigBody {
pub fn new(overrides: HashMap<String, serde_json::Value>) -> Self {
Self {
overrides,
ext: None,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct RejectedKey {
pub key: String,
pub reason: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct UpdateConfigResultBody {
pub applied: Vec<String>,
pub pending_restart: Vec<String>,
pub rejected: Vec<RejectedKey>,
}
pub type ConfigView = GetConfigResultBody;