use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
/// A map of label names to their override configuration.
pub type OverrideLabelsConfig = HashMap<String, LabelOverrideValue>;
/// Defines the value for a label override.
///
/// It can be a simple boolean,
/// or an object containing the expression that evaluates to a boolean.
#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema)]
#[serde(untagged)]
pub enum LabelOverrideValue {
/// A static boolean value to enable or disable the label.
Boolean(bool),
/// A dynamic value computed by an expression.
Expression {
/// An expression that must evaluate to a boolean. If true, the label will be applied.
expression: String,
},
}
impl LabelOverrideValue {
pub fn is_bool_and_true(&self) -> bool {
matches!(self, LabelOverrideValue::Boolean(true))
}
}