nominal_api/conjure/objects/scout/run/api/
run.rs1#[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 #[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 #[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}