use std::fmt::Debug;
use serde::{Deserialize, Serialize};
use super::*;
use crate::aggregation::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MinAggregation {
pub field: String,
#[serde(default, deserialize_with = "deserialize_option_f64")]
pub missing: Option<f64>,
}
impl MinAggregation {
pub fn from_field_name(field_name: String) -> Self {
Self {
field: field_name,
missing: None,
}
}
pub fn field_name(&self) -> &str {
&self.field
}
}
#[derive(Default, Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IntermediateMin {
stats: IntermediateStats,
}
impl IntermediateMin {
pub(crate) fn from_stats(stats: IntermediateStats) -> Self {
Self { stats }
}
pub fn merge_fruits(&mut self, other: IntermediateMin) {
self.stats.merge_fruits(other.stats);
}
pub fn finalize(&self) -> Option<f64> {
self.stats.finalize().min
}
}