ommui_data 0.39.0

OMMUI data structures
Documentation
use crate::xiolisa::{Calibration, JobMapping, JobSetMapping};
use crate::Result;
use indexmap::IndexSet;

pub trait LoadableDevice {
    fn load_calibration_mapping_index(
        &self,
        calibration_id: &str,
    ) -> Result<IndexSet<String>>;

    fn load_calibration_mapping(
        &self,
        calibration_id: &str,
        job_id: &str,
    ) -> Result<JobMapping>;

    fn load_calibration_mappings(
        &self,
        calibration_id: &str,
    ) -> Result<JobSetMapping> {
        self.load_calibration_mapping_index(calibration_id)?
            .into_iter()
            .map(|id| {
                let item =
                    self.load_calibration_mapping(calibration_id, &id)?;
                Ok((id, item))
            })
            .collect::<Result<_>>()
    }

    fn load_calibration(
        &self,
        calibration_id: &str,
    ) -> Result<Calibration> {
        Ok(Calibration {
            mappings: self.load_calibration_mappings(calibration_id)?,
        })
    }

    fn load_sampling_mapping_index(
        &self,
        sampling_id: &str,
    ) -> Result<IndexSet<String>>;

    fn load_sampling_mapping(
        &self,
        sampling_id: &str,
        job_id: &str,
    ) -> Result<JobMapping>;

    fn load_sampling_mappings(
        &self,
        sampling_id: &str,
    ) -> Result<JobSetMapping> {
        self.load_sampling_mapping_index(sampling_id)?
            .into_iter()
            .map(|id| {
                let item = self.load_sampling_mapping(sampling_id, &id)?;
                Ok((id, item))
            })
            .collect::<Result<_>>()
    }
}