Skip to main content

nominal_api/conjure/objects/scout/run/api/
run.rs

1#[derive(
2    Debug,
3    Clone,
4    conjure_object::serde::Serialize,
5    conjure_object::serde::Deserialize,
6    PartialEq,
7    Eq,
8    PartialOrd,
9    Ord,
10    Hash
11)]
12#[serde(crate = "conjure_object::serde")]
13#[conjure_object::private::staged_builder::staged_builder]
14#[builder(crate = conjure_object::private::staged_builder, update, inline)]
15pub struct Run {
16    #[serde(rename = "rid")]
17    rid: super::RunRid,
18    #[serde(rename = "runNumber")]
19    run_number: conjure_object::SafeLong,
20    #[builder(default, into)]
21    #[serde(rename = "runPrefix", skip_serializing_if = "Option::is_none", default)]
22    run_prefix: Option<String>,
23    #[builder(into)]
24    #[serde(rename = "title")]
25    title: String,
26    #[builder(into)]
27    #[serde(rename = "description")]
28    description: String,
29    #[builder(default, into)]
30    #[serde(rename = "authorRid", skip_serializing_if = "Option::is_none", default)]
31    author_rid: Option<super::super::super::rids::api::UserRid>,
32    #[builder(custom(type = super::UtcTimestamp, convert = Box::new))]
33    #[serde(rename = "startTime")]
34    start_time: Box<super::UtcTimestamp>,
35    #[builder(
36        default,
37        custom(
38            type = impl
39            Into<Option<super::UtcTimestamp>>,
40            convert = |v|v.into().map(Box::new)
41        )
42    )]
43    #[serde(rename = "endTime", skip_serializing_if = "Option::is_none", default)]
44    end_time: Option<Box<super::UtcTimestamp>>,
45    #[builder(
46        default,
47        map(
48            key(type = super::super::super::super::api::PropertyName),
49            value(type = super::super::super::super::api::PropertyValue)
50        )
51    )]
52    #[serde(
53        rename = "properties",
54        skip_serializing_if = "std::collections::BTreeMap::is_empty",
55        default
56    )]
57    properties: std::collections::BTreeMap<
58        super::super::super::super::api::PropertyName,
59        super::super::super::super::api::PropertyValue,
60    >,
61    #[builder(default, set(item(type = super::super::super::super::api::Label)))]
62    #[serde(
63        rename = "labels",
64        skip_serializing_if = "std::collections::BTreeSet::is_empty",
65        default
66    )]
67    labels: std::collections::BTreeSet<super::super::super::super::api::Label>,
68    #[builder(default, list(item(type = super::Link)))]
69    #[serde(rename = "links", skip_serializing_if = "Vec::is_empty", default)]
70    links: Vec<super::Link>,
71    #[serde(rename = "createdAt")]
72    created_at: conjure_object::DateTime<conjure_object::Utc>,
73    #[serde(rename = "updatedAt")]
74    updated_at: conjure_object::DateTime<conjure_object::Utc>,
75    #[builder(
76        default,
77        map(
78            key(type = super::super::super::rids::api::AssetRid),
79            value(type = super::DataScopes)
80        )
81    )]
82    #[serde(
83        rename = "assetDataScopesMap",
84        skip_serializing_if = "std::collections::BTreeMap::is_empty",
85        default
86    )]
87    asset_data_scopes_map: std::collections::BTreeMap<
88        super::super::super::rids::api::AssetRid,
89        super::DataScopes,
90    >,
91    #[builder(default, list(item(type = super::super::super::asset::api::DataScope)))]
92    #[serde(rename = "assetDataScopes", skip_serializing_if = "Vec::is_empty", default)]
93    asset_data_scopes: Vec<super::super::super::asset::api::DataScope>,
94    #[builder(
95        default,
96        map(
97            key(type = super::super::super::api::DataSourceRefName),
98            value(type = super::RunDataSource)
99        )
100    )]
101    #[serde(
102        rename = "dataSources",
103        skip_serializing_if = "std::collections::BTreeMap::is_empty",
104        default
105    )]
106    data_sources: std::collections::BTreeMap<
107        super::super::super::api::DataSourceRefName,
108        super::RunDataSource,
109    >,
110    #[builder(
111        default,
112        set(item(type = super::super::super::super::api::rids::AttachmentRid))
113    )]
114    #[serde(
115        rename = "attachments",
116        skip_serializing_if = "std::collections::BTreeSet::is_empty",
117        default
118    )]
119    attachments: std::collections::BTreeSet<
120        super::super::super::super::api::rids::AttachmentRid,
121    >,
122    #[builder(default, into)]
123    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
124    asset: Option<super::super::super::rids::api::AssetRid>,
125    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
126    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
127    assets: Vec<super::super::super::rids::api::AssetRid>,
128    #[serde(rename = "isArchived")]
129    is_archived: bool,
130}
131impl Run {
132    #[inline]
133    pub fn rid(&self) -> &super::RunRid {
134        &self.rid
135    }
136    #[inline]
137    pub fn run_number(&self) -> conjure_object::SafeLong {
138        self.run_number
139    }
140    #[inline]
141    pub fn run_prefix(&self) -> Option<&str> {
142        self.run_prefix.as_ref().map(|o| &**o)
143    }
144    #[inline]
145    pub fn title(&self) -> &str {
146        &*self.title
147    }
148    #[inline]
149    pub fn description(&self) -> &str {
150        &*self.description
151    }
152    #[inline]
153    pub fn author_rid(&self) -> Option<&super::super::super::rids::api::UserRid> {
154        self.author_rid.as_ref().map(|o| &*o)
155    }
156    #[inline]
157    pub fn start_time(&self) -> &super::UtcTimestamp {
158        &*self.start_time
159    }
160    #[inline]
161    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
162        self.end_time.as_ref().map(|o| &**o)
163    }
164    #[inline]
165    pub fn properties(
166        &self,
167    ) -> &std::collections::BTreeMap<
168        super::super::super::super::api::PropertyName,
169        super::super::super::super::api::PropertyValue,
170    > {
171        &self.properties
172    }
173    #[inline]
174    pub fn labels(
175        &self,
176    ) -> &std::collections::BTreeSet<super::super::super::super::api::Label> {
177        &self.labels
178    }
179    #[inline]
180    pub fn links(&self) -> &[super::Link] {
181        &*self.links
182    }
183    #[inline]
184    pub fn created_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
185        self.created_at
186    }
187    #[inline]
188    pub fn updated_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
189        self.updated_at
190    }
191    /// Map from asset RIDs to their data scopes
192    #[inline]
193    pub fn asset_data_scopes_map(
194        &self,
195    ) -> &std::collections::BTreeMap<
196        super::super::super::rids::api::AssetRid,
197        super::DataScopes,
198    > {
199        &self.asset_data_scopes_map
200    }
201    #[deprecated(
202        note = "Use assetDataScopesMap instead. Will be empty for multi-asset runs."
203    )]
204    #[inline]
205    pub fn asset_data_scopes(&self) -> &[super::super::super::asset::api::DataScope] {
206        &*self.asset_data_scopes
207    }
208    /// Map from refnames to run data sources. Will be empty for multi-asset runs.
209    #[inline]
210    pub fn data_sources(
211        &self,
212    ) -> &std::collections::BTreeMap<
213        super::super::super::api::DataSourceRefName,
214        super::RunDataSource,
215    > {
216        &self.data_sources
217    }
218    #[inline]
219    pub fn attachments(
220        &self,
221    ) -> &std::collections::BTreeSet<
222        super::super::super::super::api::rids::AttachmentRid,
223    > {
224        &self.attachments
225    }
226    #[deprecated(note = "Use assets")]
227    #[inline]
228    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
229        self.asset.as_ref().map(|o| &*o)
230    }
231    #[inline]
232    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
233        &*self.assets
234    }
235    #[inline]
236    pub fn is_archived(&self) -> bool {
237        self.is_archived
238    }
239}