1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use crate::{LabelGroup, LabelName};
use ordered_float::NotNan;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct LabelValidation {
    pub thresholds: Vec<NotNan<f64>>,
    pub precisions: Vec<NotNan<f64>>,
    pub recalls: Vec<NotNan<f64>>,
}

#[derive(Serialize)]
pub struct LabelValidationRequest {
    pub label: LabelName,
}

#[derive(Deserialize)]
pub struct LabelValidationResponse {
    pub label_validation: LabelValidation,
}

#[derive(Clone, Deserialize)]
pub struct ValidationResponse {
    pub label_groups: Vec<LabelGroup>,
}

impl ValidationResponse {
    pub fn get_default_label_group(&self) -> Option<&LabelGroup> {
        self.label_groups
            .iter()
            .find(|group| group.name.0 == "default")
    }
}