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 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::write_records::_write_records_output::WriteRecordsOutputBuilder;
pub use crate::operation::write_records::_write_records_input::WriteRecordsInputBuilder;
impl WriteRecordsInputBuilder {
/// Sends a request with this input using the given client.
pub async fn send_with(
self,
client: &crate::Client,
) -> ::std::result::Result<
crate::operation::write_records::WriteRecordsOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::write_records::WriteRecordsError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let mut fluent_builder = client.write_records();
fluent_builder.inner = self;
fluent_builder.send().await
}
}
/// Fluent builder constructing a request to `WriteRecords`.
///
/// <p>Enables you to write your time-series data into Timestream. You can specify a single data point or a batch of data points to be inserted into the system. Timestream offers you a flexible schema that auto detects the column names and data types for your Timestream tables based on the dimension names and data types of the data points you specify when invoking writes into the database. </p>
/// <p>Timestream supports eventual consistency read semantics. This means that when you query data immediately after writing a batch of data into Timestream, the query results might not reflect the results of a recently completed write operation. The results may also include some stale data. If you repeat the query request after a short time, the results should return the latest data. <a href="https://docs.aws.amazon.com/timestream/latest/developerguide/ts-limits.html">Service quotas apply</a>. </p>
/// <p>See <a href="https://docs.aws.amazon.com/timestream/latest/developerguide/code-samples.write.html">code sample</a> for details.</p>
/// <p> <b>Upserts</b> </p>
/// <p>You can use the <code>Version</code> parameter in a <code>WriteRecords</code> request to update data points. Timestream tracks a version number with each record. <code>Version</code> defaults to <code>1</code> when it's not specified for the record in the request. Timestream updates an existing record’s measure value along with its <code>Version</code> when it receives a write request with a higher <code>Version</code> number for that record. When it receives an update request where the measure value is the same as that of the existing record, Timestream still updates <code>Version</code>, if it is greater than the existing value of <code>Version</code>. You can update a data point as many times as desired, as long as the value of <code>Version</code> continuously increases. </p>
/// <p> For example, suppose you write a new record without indicating <code>Version</code> in the request. Timestream stores this record, and set <code>Version</code> to <code>1</code>. Now, suppose you try to update this record with a <code>WriteRecords</code> request of the same record with a different measure value but, like before, do not provide <code>Version</code>. In this case, Timestream will reject this update with a <code>RejectedRecordsException</code> since the updated record’s version is not greater than the existing value of Version. </p>
/// <p>However, if you were to resend the update request with <code>Version</code> set to <code>2</code>, Timestream would then succeed in updating the record’s value, and the <code>Version</code> would be set to <code>2</code>. Next, suppose you sent a <code>WriteRecords</code> request with this same record and an identical measure value, but with <code>Version</code> set to <code>3</code>. In this case, Timestream would only update <code>Version</code> to <code>3</code>. Any further updates would need to send a version number greater than <code>3</code>, or the update requests would receive a <code>RejectedRecordsException</code>. </p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct WriteRecordsFluentBuilder {
handle: ::std::sync::Arc<crate::client::Handle>,
inner: crate::operation::write_records::builders::WriteRecordsInputBuilder,
config_override: ::std::option::Option<crate::config::Builder>,
}
impl
crate::client::customize::internal::CustomizableSend<
crate::operation::write_records::WriteRecordsOutput,
crate::operation::write_records::WriteRecordsError,
> for WriteRecordsFluentBuilder
{
fn send(
self,
config_override: crate::config::Builder,
) -> crate::client::customize::internal::BoxFuture<
crate::client::customize::internal::SendResult<
crate::operation::write_records::WriteRecordsOutput,
crate::operation::write_records::WriteRecordsError,
>,
> {
::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
}
}
impl WriteRecordsFluentBuilder {
/// Creates a new `WriteRecords`.
pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
Self {
handle,
inner: ::std::default::Default::default(),
config_override: ::std::option::Option::None,
}
}
/// Access the WriteRecords as a reference.
pub fn as_input(&self) -> &crate::operation::write_records::builders::WriteRecordsInputBuilder {
&self.inner
}
/// Sends the request and returns the response.
///
/// If an error occurs, an `SdkError` will be returned with additional details that
/// can be matched against.
///
/// By default, any retryable failures will be retried twice. Retry behavior
/// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
/// set when configuring the client.
pub async fn send(
self,
) -> ::std::result::Result<
crate::operation::write_records::WriteRecordsOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::write_records::WriteRecordsError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let input = self
.inner
.build()
.map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
let runtime_plugins = crate::operation::write_records::WriteRecords::operation_runtime_plugins(
self.handle.runtime_plugins.clone(),
&self.handle.conf,
self.config_override,
);
crate::operation::write_records::WriteRecords::orchestrate(&runtime_plugins, input).await
}
/// Consumes this builder, creating a customizable operation that can be modified before being sent.
pub fn customize(
self,
) -> crate::client::customize::CustomizableOperation<
crate::operation::write_records::WriteRecordsOutput,
crate::operation::write_records::WriteRecordsError,
Self,
> {
crate::client::customize::CustomizableOperation::new(self)
}
pub(crate) fn config_override(mut self, config_override: impl Into<crate::config::Builder>) -> Self {
self.set_config_override(Some(config_override.into()));
self
}
pub(crate) fn set_config_override(&mut self, config_override: Option<crate::config::Builder>) -> &mut Self {
self.config_override = config_override;
self
}
/// <p>The name of the Timestream database.</p>
pub fn database_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.database_name(input.into());
self
}
/// <p>The name of the Timestream database.</p>
pub fn set_database_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_database_name(input);
self
}
/// <p>The name of the Timestream database.</p>
pub fn get_database_name(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_database_name()
}
/// <p>The name of the Timestream table.</p>
pub fn table_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.table_name(input.into());
self
}
/// <p>The name of the Timestream table.</p>
pub fn set_table_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
self.inner = self.inner.set_table_name(input);
self
}
/// <p>The name of the Timestream table.</p>
pub fn get_table_name(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_table_name()
}
/// <p>A record that contains the common measure, dimension, time, and version attributes shared across all the records in the request. The measure and dimension attributes specified will be merged with the measure and dimension attributes in the records object when the data is written into Timestream. Dimensions may not overlap, or a <code>ValidationException</code> will be thrown. In other words, a record must contain dimensions with unique names. </p>
pub fn common_attributes(mut self, input: crate::types::Record) -> Self {
self.inner = self.inner.common_attributes(input);
self
}
/// <p>A record that contains the common measure, dimension, time, and version attributes shared across all the records in the request. The measure and dimension attributes specified will be merged with the measure and dimension attributes in the records object when the data is written into Timestream. Dimensions may not overlap, or a <code>ValidationException</code> will be thrown. In other words, a record must contain dimensions with unique names. </p>
pub fn set_common_attributes(mut self, input: ::std::option::Option<crate::types::Record>) -> Self {
self.inner = self.inner.set_common_attributes(input);
self
}
/// <p>A record that contains the common measure, dimension, time, and version attributes shared across all the records in the request. The measure and dimension attributes specified will be merged with the measure and dimension attributes in the records object when the data is written into Timestream. Dimensions may not overlap, or a <code>ValidationException</code> will be thrown. In other words, a record must contain dimensions with unique names. </p>
pub fn get_common_attributes(&self) -> &::std::option::Option<crate::types::Record> {
self.inner.get_common_attributes()
}
/// Appends an item to `Records`.
///
/// To override the contents of this collection use [`set_records`](Self::set_records).
///
/// <p>An array of records that contain the unique measure, dimension, time, and version attributes for each time-series data point. </p>
pub fn records(mut self, input: crate::types::Record) -> Self {
self.inner = self.inner.records(input);
self
}
/// <p>An array of records that contain the unique measure, dimension, time, and version attributes for each time-series data point. </p>
pub fn set_records(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Record>>) -> Self {
self.inner = self.inner.set_records(input);
self
}
/// <p>An array of records that contain the unique measure, dimension, time, and version attributes for each time-series data point. </p>
pub fn get_records(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Record>> {
self.inner.get_records()
}
}