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(default, map(key(type = String, into), value(type = String, into)))]
46    #[serde(
47        rename = "properties",
48        skip_serializing_if = "std::collections::BTreeMap::is_empty",
49        default
50    )]
51    properties: std::collections::BTreeMap<String, String>,
52    #[builder(default, set(item(type = String, into)))]
53    #[serde(
54        rename = "labels",
55        skip_serializing_if = "std::collections::BTreeSet::is_empty",
56        default
57    )]
58    labels: std::collections::BTreeSet<String>,
59    #[builder(default, list(item(type = super::Link)))]
60    #[serde(rename = "links", skip_serializing_if = "Vec::is_empty", default)]
61    links: Vec<super::Link>,
62    #[serde(rename = "createdAt")]
63    created_at: conjure_object::DateTime<conjure_object::Utc>,
64    #[serde(rename = "updatedAt")]
65    updated_at: conjure_object::DateTime<conjure_object::Utc>,
66    #[builder(
67        default,
68        map(
69            key(type = super::super::super::rids::api::AssetRid),
70            value(type = super::DataScopes)
71        )
72    )]
73    #[serde(
74        rename = "assetDataScopesMap",
75        skip_serializing_if = "std::collections::BTreeMap::is_empty",
76        default
77    )]
78    asset_data_scopes_map: std::collections::BTreeMap<
79        super::super::super::rids::api::AssetRid,
80        super::DataScopes,
81    >,
82    #[builder(default, list(item(type = super::super::super::asset::api::DataScope)))]
83    #[serde(rename = "assetDataScopes", skip_serializing_if = "Vec::is_empty", default)]
84    asset_data_scopes: Vec<super::super::super::asset::api::DataScope>,
85    #[builder(
86        default,
87        map(
88            key(type = super::super::super::api::DataSourceRefName),
89            value(type = super::RunDataSource)
90        )
91    )]
92    #[serde(
93        rename = "dataSources",
94        skip_serializing_if = "std::collections::BTreeMap::is_empty",
95        default
96    )]
97    data_sources: std::collections::BTreeMap<
98        super::super::super::api::DataSourceRefName,
99        super::RunDataSource,
100    >,
101    #[builder(default, set(item(type = conjure_object::ResourceIdentifier)))]
102    #[serde(
103        rename = "attachments",
104        skip_serializing_if = "std::collections::BTreeSet::is_empty",
105        default
106    )]
107    attachments: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
108    #[builder(default, into)]
109    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
110    asset: Option<super::super::super::rids::api::AssetRid>,
111    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
112    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
113    assets: Vec<super::super::super::rids::api::AssetRid>,
114    #[serde(rename = "isArchived")]
115    is_archived: bool,
116}
117impl Run {
118    #[inline]
119    pub fn rid(&self) -> &super::RunRid {
120        &self.rid
121    }
122    #[inline]
123    pub fn run_number(&self) -> conjure_object::SafeLong {
124        self.run_number
125    }
126    #[inline]
127    pub fn run_prefix(&self) -> Option<&str> {
128        self.run_prefix.as_ref().map(|o| &**o)
129    }
130    #[inline]
131    pub fn title(&self) -> &str {
132        &*self.title
133    }
134    #[inline]
135    pub fn description(&self) -> &str {
136        &*self.description
137    }
138    #[inline]
139    pub fn author_rid(&self) -> Option<&super::super::super::rids::api::UserRid> {
140        self.author_rid.as_ref().map(|o| &*o)
141    }
142    #[inline]
143    pub fn start_time(&self) -> &super::UtcTimestamp {
144        &*self.start_time
145    }
146    #[inline]
147    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
148        self.end_time.as_ref().map(|o| &**o)
149    }
150    #[inline]
151    pub fn properties(&self) -> &std::collections::BTreeMap<String, String> {
152        &self.properties
153    }
154    #[inline]
155    pub fn labels(&self) -> &std::collections::BTreeSet<String> {
156        &self.labels
157    }
158    #[inline]
159    pub fn links(&self) -> &[super::Link] {
160        &*self.links
161    }
162    #[inline]
163    pub fn created_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
164        self.created_at
165    }
166    #[inline]
167    pub fn updated_at(&self) -> conjure_object::DateTime<conjure_object::Utc> {
168        self.updated_at
169    }
170    /// Map from asset RIDs to their data scopes
171    #[inline]
172    pub fn asset_data_scopes_map(
173        &self,
174    ) -> &std::collections::BTreeMap<
175        super::super::super::rids::api::AssetRid,
176        super::DataScopes,
177    > {
178        &self.asset_data_scopes_map
179    }
180    #[deprecated(
181        note = "Use assetDataScopesMap instead. Will be empty for multi-asset runs."
182    )]
183    #[inline]
184    pub fn asset_data_scopes(&self) -> &[super::super::super::asset::api::DataScope] {
185        &*self.asset_data_scopes
186    }
187    /// Map from refnames to run data sources. Will be empty for multi-asset runs.
188    #[inline]
189    pub fn data_sources(
190        &self,
191    ) -> &std::collections::BTreeMap<
192        super::super::super::api::DataSourceRefName,
193        super::RunDataSource,
194    > {
195        &self.data_sources
196    }
197    #[inline]
198    pub fn attachments(
199        &self,
200    ) -> &std::collections::BTreeSet<conjure_object::ResourceIdentifier> {
201        &self.attachments
202    }
203    #[deprecated(note = "Use assets")]
204    #[inline]
205    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
206        self.asset.as_ref().map(|o| &*o)
207    }
208    #[inline]
209    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
210        &*self.assets
211    }
212    #[inline]
213    pub fn is_archived(&self) -> bool {
214        self.is_archived
215    }
216}