reinfer_client/resources/
label_def.rs

1use crate::resources::comment::should_skip_serializing_optional_vec;
2use serde::{Deserialize, Serialize};
3use serde_json::json;
4
5#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)]
6pub struct PretrainedId(pub String);
7
8#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)]
9pub struct Name(pub String);
10
11#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
12pub struct LabelDef {
13    pub name: Name,
14
15    #[serde(default)]
16    pub instructions: String,
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub external_id: Option<String>,
19    #[serde(default, skip_serializing_if = "Option::is_none")]
20    pub pretrained: Option<LabelDefPretrained>,
21    #[serde(default)]
22    pub title: String,
23    #[serde(skip_serializing_if = "should_skip_serializing_optional_vec", default)]
24    pub moon_form: Option<Vec<MoonFormFieldDef>>,
25}
26
27#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
28pub struct NewLabelDef {
29    pub name: Name,
30
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub title: Option<String>,
33    #[serde(default, skip_serializing_if = "Option::is_none")]
34    pub instructions: Option<String>,
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub external_id: Option<String>,
37    #[serde(default, skip_serializing_if = "Option::is_none")]
38    pub pretrained: Option<NewLabelDefPretrained>,
39    #[serde(default, skip_serializing_if = "Option::is_none")]
40    pub trainable: Option<bool>,
41    #[serde(skip_serializing_if = "should_skip_serializing_optional_vec", default)]
42    pub moon_form: Option<Vec<MoonFormFieldDef>>,
43}
44
45impl TryFrom<&LabelDef> for NewLabelDef {
46    type Error = crate::Error;
47    fn try_from(value: &LabelDef) -> Result<Self, Self::Error> {
48        let label_as_string = json!(value).to_string();
49
50        let result: NewLabelDef =
51            serde_json::from_str(&label_as_string).map_err(|err| crate::Error::Unknown {
52                message: "Could not parse new label def".to_string(),
53                source: Box::new(err),
54            })?;
55        Ok(result)
56    }
57}
58
59#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
60pub struct LabelDefProperty {
61    pub name: String,
62    pub value: f64,
63}
64
65#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
66pub struct LabelDefPretrained {
67    pub id: PretrainedId,
68    pub name: Name,
69}
70
71#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
72pub struct NewLabelDefPretrained {
73    pub id: PretrainedId,
74    #[serde(default, skip_serializing_if = "Option::is_none")]
75    pub name: Option<Name>,
76}
77
78#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
79pub struct MoonFormFieldDef {
80    pub name: String,
81    pub kind: String,
82
83    #[serde(default, skip_serializing_if = "Option::is_none")]
84    pub instructions: Option<String>,
85}
86
87#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
88pub struct CreateOrUpdateLabelDefsBulkRequest {
89    pub label_defs: Vec<NewLabelDef>,
90}
91
92#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
93pub struct CreateOrUpdateLabelDefsBulkResponse {}