1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct UpdateVehicleInput {
    /// <p>The unique ID of the vehicle to update.</p>
    pub vehicle_name: ::std::option::Option<::std::string::String>,
    /// <p>The ARN of a vehicle model (model manifest) associated with the vehicle.</p>
    pub model_manifest_arn: ::std::option::Option<::std::string::String>,
    /// <p>The ARN of the decoder manifest associated with this vehicle.</p>
    pub decoder_manifest_arn: ::std::option::Option<::std::string::String>,
    /// <p>Static information about a vehicle in a key-value pair. For example:</p>
    /// <p><code>"engineType"</code> : <code>"1.3 L R2"</code></p>
    pub attributes: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    /// <p>The method the specified attributes will update the existing attributes on the vehicle. Use<code>Overwite</code> to replace the vehicle attributes with the specified attributes. Or use <code>Merge</code> to combine all attributes.</p>
    /// <p>This is required if attributes are present in the input.</p>
    pub attribute_update_mode: ::std::option::Option<crate::types::UpdateMode>,
}
impl UpdateVehicleInput {
    /// <p>The unique ID of the vehicle to update.</p>
    pub fn vehicle_name(&self) -> ::std::option::Option<&str> {
        self.vehicle_name.as_deref()
    }
    /// <p>The ARN of a vehicle model (model manifest) associated with the vehicle.</p>
    pub fn model_manifest_arn(&self) -> ::std::option::Option<&str> {
        self.model_manifest_arn.as_deref()
    }
    /// <p>The ARN of the decoder manifest associated with this vehicle.</p>
    pub fn decoder_manifest_arn(&self) -> ::std::option::Option<&str> {
        self.decoder_manifest_arn.as_deref()
    }
    /// <p>Static information about a vehicle in a key-value pair. For example:</p>
    /// <p><code>"engineType"</code> : <code>"1.3 L R2"</code></p>
    pub fn attributes(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.attributes.as_ref()
    }
    /// <p>The method the specified attributes will update the existing attributes on the vehicle. Use<code>Overwite</code> to replace the vehicle attributes with the specified attributes. Or use <code>Merge</code> to combine all attributes.</p>
    /// <p>This is required if attributes are present in the input.</p>
    pub fn attribute_update_mode(&self) -> ::std::option::Option<&crate::types::UpdateMode> {
        self.attribute_update_mode.as_ref()
    }
}
impl UpdateVehicleInput {
    /// Creates a new builder-style object to manufacture [`UpdateVehicleInput`](crate::operation::update_vehicle::UpdateVehicleInput).
    pub fn builder() -> crate::operation::update_vehicle::builders::UpdateVehicleInputBuilder {
        crate::operation::update_vehicle::builders::UpdateVehicleInputBuilder::default()
    }
}

/// A builder for [`UpdateVehicleInput`](crate::operation::update_vehicle::UpdateVehicleInput).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct UpdateVehicleInputBuilder {
    pub(crate) vehicle_name: ::std::option::Option<::std::string::String>,
    pub(crate) model_manifest_arn: ::std::option::Option<::std::string::String>,
    pub(crate) decoder_manifest_arn: ::std::option::Option<::std::string::String>,
    pub(crate) attributes: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub(crate) attribute_update_mode: ::std::option::Option<crate::types::UpdateMode>,
}
impl UpdateVehicleInputBuilder {
    /// <p>The unique ID of the vehicle to update.</p>
    /// This field is required.
    pub fn vehicle_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.vehicle_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The unique ID of the vehicle to update.</p>
    pub fn set_vehicle_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.vehicle_name = input;
        self
    }
    /// <p>The unique ID of the vehicle to update.</p>
    pub fn get_vehicle_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.vehicle_name
    }
    /// <p>The ARN of a vehicle model (model manifest) associated with the vehicle.</p>
    pub fn model_manifest_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.model_manifest_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The ARN of a vehicle model (model manifest) associated with the vehicle.</p>
    pub fn set_model_manifest_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.model_manifest_arn = input;
        self
    }
    /// <p>The ARN of a vehicle model (model manifest) associated with the vehicle.</p>
    pub fn get_model_manifest_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.model_manifest_arn
    }
    /// <p>The ARN of the decoder manifest associated with this vehicle.</p>
    pub fn decoder_manifest_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.decoder_manifest_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The ARN of the decoder manifest associated with this vehicle.</p>
    pub fn set_decoder_manifest_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.decoder_manifest_arn = input;
        self
    }
    /// <p>The ARN of the decoder manifest associated with this vehicle.</p>
    pub fn get_decoder_manifest_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.decoder_manifest_arn
    }
    /// Adds a key-value pair to `attributes`.
    ///
    /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
    ///
    /// <p>Static information about a vehicle in a key-value pair. For example:</p>
    /// <p><code>"engineType"</code> : <code>"1.3 L R2"</code></p>
    pub fn attributes(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
        let mut hash_map = self.attributes.unwrap_or_default();
        hash_map.insert(k.into(), v.into());
        self.attributes = ::std::option::Option::Some(hash_map);
        self
    }
    /// <p>Static information about a vehicle in a key-value pair. For example:</p>
    /// <p><code>"engineType"</code> : <code>"1.3 L R2"</code></p>
    pub fn set_attributes(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
        self.attributes = input;
        self
    }
    /// <p>Static information about a vehicle in a key-value pair. For example:</p>
    /// <p><code>"engineType"</code> : <code>"1.3 L R2"</code></p>
    pub fn get_attributes(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        &self.attributes
    }
    /// <p>The method the specified attributes will update the existing attributes on the vehicle. Use<code>Overwite</code> to replace the vehicle attributes with the specified attributes. Or use <code>Merge</code> to combine all attributes.</p>
    /// <p>This is required if attributes are present in the input.</p>
    pub fn attribute_update_mode(mut self, input: crate::types::UpdateMode) -> Self {
        self.attribute_update_mode = ::std::option::Option::Some(input);
        self
    }
    /// <p>The method the specified attributes will update the existing attributes on the vehicle. Use<code>Overwite</code> to replace the vehicle attributes with the specified attributes. Or use <code>Merge</code> to combine all attributes.</p>
    /// <p>This is required if attributes are present in the input.</p>
    pub fn set_attribute_update_mode(mut self, input: ::std::option::Option<crate::types::UpdateMode>) -> Self {
        self.attribute_update_mode = input;
        self
    }
    /// <p>The method the specified attributes will update the existing attributes on the vehicle. Use<code>Overwite</code> to replace the vehicle attributes with the specified attributes. Or use <code>Merge</code> to combine all attributes.</p>
    /// <p>This is required if attributes are present in the input.</p>
    pub fn get_attribute_update_mode(&self) -> &::std::option::Option<crate::types::UpdateMode> {
        &self.attribute_update_mode
    }
    /// Consumes the builder and constructs a [`UpdateVehicleInput`](crate::operation::update_vehicle::UpdateVehicleInput).
    pub fn build(
        self,
    ) -> ::std::result::Result<crate::operation::update_vehicle::UpdateVehicleInput, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::operation::update_vehicle::UpdateVehicleInput {
            vehicle_name: self.vehicle_name,
            model_manifest_arn: self.model_manifest_arn,
            decoder_manifest_arn: self.decoder_manifest_arn,
            attributes: self.attributes,
            attribute_update_mode: self.attribute_update_mode,
        })
    }
}