reinfer_client/resources/
label_def.rs1use 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 {}