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(default, set(item(type = conjure_object::ResourceIdentifier)))]
111    #[serde(
112        rename = "attachments",
113        skip_serializing_if = "std::collections::BTreeSet::is_empty",
114        default
115    )]
116    attachments: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
117    #[builder(default, into)]
118    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
119    asset: Option<super::super::super::rids::api::AssetRid>,
120    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
121    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
122    assets: Vec<super::super::super::rids::api::AssetRid>,
123    #[serde(rename = "isArchived")]
124    is_archived: bool,
125}
126impl Run {
127    #[inline]
128    pub fn rid(&self) -> &super::RunRid {
129        &self.rid
130    }
131    #[inline]
132    pub fn run_number(&self) -> conjure_object::SafeLong {
133        self.run_number
134    }
135    #[inline]
136    pub fn run_prefix(&self) -> Option<&str> {
137        self.run_prefix.as_ref().map(|o| &**o)
138    }
139    #[inline]
140    pub fn title(&self) -> &str {
141        &*self.title
142    }
143    #[inline]
144    pub fn description(&self) -> &str {
145        &*self.description
146    }
147    #[inline]
148    pub fn author_rid(&self) -> Option<&super::super::super::rids::api::UserRid> {
149        self.author_rid.as_ref().map(|o| &*o)
150    }
151    #[inline]
152    pub fn start_time(&self) -> &super::UtcTimestamp {
153        &*self.start_time
154    }
155    #[inline]
156    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
157        self.end_time.as_ref().map(|o| &**o)
158    }
159    #[inline]
160    pub fn properties(
161        &self,
162    ) -> &std::collections::BTreeMap<
163        super::super::super::super::api::PropertyName,
164        super::super::super::super::api::PropertyValue,
165    > {
166        &self.properties
167    }
168    #[inline]
169    pub fn labels(
170        &self,
171    ) -> &std::collections::BTreeSet<super::super::super::super::api::Label> {
172        &self.labels
173    }
174    #[inline]
175    pub fn links(&self) -> &[super::Link] {
176        &*self.links
177    }
178    #[inline]
179    pub fn created_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
180        self.created_at
181    }
182    #[inline]
183    pub fn updated_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
184        self.updated_at
185    }
186    /// Map from asset RIDs to their data scopes
187    #[inline]
188    pub fn asset_data_scopes_map(
189        &self,
190    ) -> &std::collections::BTreeMap<
191        super::super::super::rids::api::AssetRid,
192        super::DataScopes,
193    > {
194        &self.asset_data_scopes_map
195    }
196    #[deprecated(
197        note = "Use assetDataScopesMap instead. Will be empty for multi-asset runs."
198    )]
199    #[inline]
200    pub fn asset_data_scopes(&self) -> &[super::super::super::asset::api::DataScope] {
201        &*self.asset_data_scopes
202    }
203    /// Map from refnames to run data sources. Will be empty for multi-asset runs.
204    #[inline]
205    pub fn data_sources(
206        &self,
207    ) -> &std::collections::BTreeMap<
208        super::super::super::api::DataSourceRefName,
209        super::RunDataSource,
210    > {
211        &self.data_sources
212    }
213    #[inline]
214    pub fn attachments(
215        &self,
216    ) -> &std::collections::BTreeSet<conjure_object::ResourceIdentifier> {
217        &self.attachments
218    }
219    #[deprecated(note = "Use assets")]
220    #[inline]
221    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
222        self.asset.as_ref().map(|o| &*o)
223    }
224    #[inline]
225    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
226        &*self.assets
227    }
228    #[inline]
229    pub fn is_archived(&self) -> bool {
230        self.is_archived
231    }
232}