use serde::{Deserialize, Serialize};
use crate::enums::DyeChemistry;
use crate::types::{DyeRef, Id};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Dye {
pub id: Id,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub description: Option<String>,
#[serde(
rename = "dyeChemistry",
skip_serializing_if = "Option::is_none",
default
)]
pub chemistry: Option<DyeChemistry>,
#[serde(rename = "nCopyFact", skip_serializing_if = "Option::is_none", default)]
pub n_copy_fact: Option<f64>,
#[serde(rename = "dyeConc", skip_serializing_if = "Option::is_none", default)]
pub dye_conc: Option<f64>,
}
impl Dye {
#[must_use]
pub fn new(id: Id) -> Self {
Self {
id,
description: None,
chemistry: None,
n_copy_fact: None,
dye_conc: None,
}
}
#[must_use]
pub fn reference(&self) -> DyeRef {
self.id.clone().into()
}
}