1use crate::impl_param_described;
2use crate::params::{ParamDescribed, ParamList};
3
4
5#[derive(Debug, Default, Clone, PartialEq)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub struct Sample {
9 pub id: String,
11 pub name: Option<String>,
13 pub params: ParamList
15}
16
17impl Sample {
18 pub fn new(id: String, name: Option<String>, params: ParamList) -> Self {
19 Self { id, name, params }
20 }
21
22 crate::params::find_param_method!(number, &crate::curie!(MS:1000001), "Find the sample number, if it is present");
23 crate::params::find_param_method!(batch, &crate::curie!(MS:1000053), "Find the sample batch, if it is present");
24}
25
26
27impl_param_described!(Sample);