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(
81        default,
82        set(item(type = super::super::super::super::api::rids::AttachmentRid))
83    )]
84    #[serde(
85        rename = "attachments",
86        skip_serializing_if = "std::collections::BTreeSet::is_empty",
87        default
88    )]
89    attachments: std::collections::BTreeSet<
90        super::super::super::super::api::rids::AttachmentRid,
91    >,
92    #[builder(default, into)]
93    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
94    asset: Option<super::super::super::rids::api::AssetRid>,
95    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
96    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
97    assets: Vec<super::super::super::rids::api::AssetRid>,
98    #[builder(default, into)]
99    #[serde(rename = "workspace", skip_serializing_if = "Option::is_none", default)]
100    workspace: Option<super::super::super::super::api::rids::WorkspaceRid>,
101}
102impl CreateRunRequest {
103    /// Constructs a new instance of the type.
104    #[inline]
105    pub fn new(
106        title: impl Into<String>,
107        description: impl Into<String>,
108        start_time: super::UtcTimestamp,
109    ) -> Self {
110        Self::builder()
111            .title(title)
112            .description(description)
113            .start_time(start_time)
114            .build()
115    }
116    #[inline]
117    pub fn title(&self) -> &str {
118        &*self.title
119    }
120    #[inline]
121    pub fn description(&self) -> &str {
122        &*self.description
123    }
124    #[inline]
125    pub fn start_time(&self) -> &super::UtcTimestamp {
126        &*self.start_time
127    }
128    #[inline]
129    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
130        self.end_time.as_ref().map(|o| &**o)
131    }
132    #[inline]
133    pub fn properties(
134        &self,
135    ) -> &std::collections::BTreeMap<
136        super::super::super::super::api::PropertyName,
137        super::super::super::super::api::PropertyValue,
138    > {
139        &self.properties
140    }
141    #[inline]
142    pub fn labels(
143        &self,
144    ) -> &std::collections::BTreeSet<super::super::super::super::api::Label> {
145        &self.labels
146    }
147    #[inline]
148    pub fn links(&self) -> &[super::Link] {
149        &*self.links
150    }
151    #[inline]
152    pub fn run_prefix(&self) -> Option<&str> {
153        self.run_prefix.as_ref().map(|o| &**o)
154    }
155    #[inline]
156    pub fn data_sources(
157        &self,
158    ) -> &std::collections::BTreeMap<
159        super::super::super::api::DataSourceRefName,
160        super::CreateRunDataSource,
161    > {
162        &self.data_sources
163    }
164    #[inline]
165    pub fn attachments(
166        &self,
167    ) -> &std::collections::BTreeSet<
168        super::super::super::super::api::rids::AttachmentRid,
169    > {
170        &self.attachments
171    }
172    #[deprecated(note = "Use assets")]
173    #[inline]
174    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
175        self.asset.as_ref().map(|o| &*o)
176    }
177    #[inline]
178    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
179        &*self.assets
180    }
181    /// The workspace in which to create the run. If not provided, the run will be created in
182    /// the default workspace for the user's organization, if the default workspace for the
183    /// organization is configured.
184    /// All data sources, attachments, and assets must be in the same workspace.
185    #[inline]
186    pub fn workspace(
187        &self,
188    ) -> Option<&super::super::super::super::api::rids::WorkspaceRid> {
189        self.workspace.as_ref().map(|o| &*o)
190    }
191}