Skip to main content

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

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