Skip to main content

nominal_api/conjure/objects/scout/run/api/
create_run_request.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 CreateRunRequest {
16    #[builder(into)]
17    #[serde(rename = "title")]
18    title: String,
19    #[builder(into)]
20    #[serde(rename = "description")]
21    description: String,
22    #[builder(custom(type = super::UtcTimestamp, convert = Box::new))]
23    #[serde(rename = "startTime")]
24    start_time: Box<super::UtcTimestamp>,
25    #[builder(
26        default,
27        custom(
28            type = impl
29            Into<Option<super::UtcTimestamp>>,
30            convert = |v|v.into().map(Box::new)
31        )
32    )]
33    #[serde(rename = "endTime", skip_serializing_if = "Option::is_none", default)]
34    end_time: Option<Box<super::UtcTimestamp>>,
35    #[builder(
36        default,
37        map(
38            key(type = super::super::super::super::api::PropertyName),
39            value(type = super::super::super::super::api::PropertyValue)
40        )
41    )]
42    #[serde(
43        rename = "properties",
44        skip_serializing_if = "std::collections::BTreeMap::is_empty",
45        default
46    )]
47    properties: std::collections::BTreeMap<
48        super::super::super::super::api::PropertyName,
49        super::super::super::super::api::PropertyValue,
50    >,
51    #[builder(default, set(item(type = super::super::super::super::api::Label)))]
52    #[serde(
53        rename = "labels",
54        skip_serializing_if = "std::collections::BTreeSet::is_empty",
55        default
56    )]
57    labels: std::collections::BTreeSet<super::super::super::super::api::Label>,
58    #[builder(default, list(item(type = super::Link)))]
59    #[serde(rename = "links", skip_serializing_if = "Vec::is_empty", default)]
60    links: Vec<super::Link>,
61    #[builder(default, into)]
62    #[serde(rename = "runPrefix", skip_serializing_if = "Option::is_none", default)]
63    run_prefix: Option<String>,
64    #[builder(
65        default,
66        map(
67            key(type = super::super::super::api::DataSourceRefName),
68            value(type = super::CreateRunDataSource)
69        )
70    )]
71    #[serde(
72        rename = "dataSources",
73        skip_serializing_if = "std::collections::BTreeMap::is_empty",
74        default
75    )]
76    data_sources: std::collections::BTreeMap<
77        super::super::super::api::DataSourceRefName,
78        super::CreateRunDataSource,
79    >,
80    #[builder(default, set(item(type = conjure_object::ResourceIdentifier)))]
81    #[serde(
82        rename = "attachments",
83        skip_serializing_if = "std::collections::BTreeSet::is_empty",
84        default
85    )]
86    attachments: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
87    #[builder(default, into)]
88    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
89    asset: Option<super::super::super::rids::api::AssetRid>,
90    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
91    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
92    assets: Vec<super::super::super::rids::api::AssetRid>,
93    #[builder(default, into)]
94    #[serde(rename = "workspace", skip_serializing_if = "Option::is_none", default)]
95    workspace: Option<conjure_object::ResourceIdentifier>,
96}
97impl CreateRunRequest {
98    /// Constructs a new instance of the type.
99    #[inline]
100    pub fn new(
101        title: impl Into<String>,
102        description: impl Into<String>,
103        start_time: super::UtcTimestamp,
104    ) -> Self {
105        Self::builder()
106            .title(title)
107            .description(description)
108            .start_time(start_time)
109            .build()
110    }
111    #[inline]
112    pub fn title(&self) -> &str {
113        &*self.title
114    }
115    #[inline]
116    pub fn description(&self) -> &str {
117        &*self.description
118    }
119    #[inline]
120    pub fn start_time(&self) -> &super::UtcTimestamp {
121        &*self.start_time
122    }
123    #[inline]
124    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
125        self.end_time.as_ref().map(|o| &**o)
126    }
127    #[inline]
128    pub fn properties(
129        &self,
130    ) -> &std::collections::BTreeMap<
131        super::super::super::super::api::PropertyName,
132        super::super::super::super::api::PropertyValue,
133    > {
134        &self.properties
135    }
136    #[inline]
137    pub fn labels(
138        &self,
139    ) -> &std::collections::BTreeSet<super::super::super::super::api::Label> {
140        &self.labels
141    }
142    #[inline]
143    pub fn links(&self) -> &[super::Link] {
144        &*self.links
145    }
146    #[inline]
147    pub fn run_prefix(&self) -> Option<&str> {
148        self.run_prefix.as_ref().map(|o| &**o)
149    }
150    #[inline]
151    pub fn data_sources(
152        &self,
153    ) -> &std::collections::BTreeMap<
154        super::super::super::api::DataSourceRefName,
155        super::CreateRunDataSource,
156    > {
157        &self.data_sources
158    }
159    #[inline]
160    pub fn attachments(
161        &self,
162    ) -> &std::collections::BTreeSet<conjure_object::ResourceIdentifier> {
163        &self.attachments
164    }
165    #[deprecated(note = "Use assets")]
166    #[inline]
167    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
168        self.asset.as_ref().map(|o| &*o)
169    }
170    #[inline]
171    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
172        &*self.assets
173    }
174    /// The workspace in which to create the run. If not provided, the run will be created in
175    /// the default workspace for the user's organization, if the default workspace for the
176    /// organization is configured.
177    /// All data sources, attachments, and assets must be in the same workspace.
178    #[inline]
179    pub fn workspace(&self) -> Option<&conjure_object::ResourceIdentifier> {
180        self.workspace.as_ref().map(|o| &*o)
181    }
182}