aws_sdk_neptunedata/operation/execute_gremlin_explain_query/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::execute_gremlin_explain_query::_execute_gremlin_explain_query_output::ExecuteGremlinExplainQueryOutputBuilder;
3
4pub use crate::operation::execute_gremlin_explain_query::_execute_gremlin_explain_query_input::ExecuteGremlinExplainQueryInputBuilder;
5
6impl crate::operation::execute_gremlin_explain_query::builders::ExecuteGremlinExplainQueryInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.execute_gremlin_explain_query();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `ExecuteGremlinExplainQuery`.
24///
25/// <p>Executes a Gremlin Explain query.</p>
26/// <p>Amazon Neptune has added a Gremlin feature named <code>explain</code> that provides is a self-service tool for understanding the execution approach being taken by the Neptune engine for the query. You invoke it by adding an <code>explain</code> parameter to an HTTP call that submits a Gremlin query.</p>
27/// <p>The explain feature provides information about the logical structure of query execution plans. You can use this information to identify potential evaluation and execution bottlenecks and to tune your query, as explained in <a href="https://docs.aws.amazon.com/neptune/latest/userguide/gremlin-traversal-tuning.html">Tuning Gremlin queries</a>. You can also use query hints to improve query execution plans.</p>
28/// <p>When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows one of the following IAM actions in that cluster, depending on the query:</p>
29/// <ul>
30/// <li>
31/// <p><a href="https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery">neptune-db:ReadDataViaQuery</a></p></li>
32/// <li>
33/// <p><a href="https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#writedataviaquery">neptune-db:WriteDataViaQuery</a></p></li>
34/// <li>
35/// <p><a href="https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#deletedataviaquery">neptune-db:DeleteDataViaQuery</a></p></li>
36/// </ul>
37/// <p>Note that the <a href="https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys">neptune-db:QueryLanguage:Gremlin</a> IAM condition key can be used in the policy document to restrict the use of Gremlin queries (see <a href="https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html">Condition keys available in Neptune IAM data-access policy statements</a>).</p>
38#[derive(::std::clone::Clone, ::std::fmt::Debug)]
39pub struct ExecuteGremlinExplainQueryFluentBuilder {
40    handle: ::std::sync::Arc<crate::client::Handle>,
41    inner: crate::operation::execute_gremlin_explain_query::builders::ExecuteGremlinExplainQueryInputBuilder,
42    config_override: ::std::option::Option<crate::config::Builder>,
43}
44impl
45    crate::client::customize::internal::CustomizableSend<
46        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryOutput,
47        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryError,
48    > for ExecuteGremlinExplainQueryFluentBuilder
49{
50    fn send(
51        self,
52        config_override: crate::config::Builder,
53    ) -> crate::client::customize::internal::BoxFuture<
54        crate::client::customize::internal::SendResult<
55            crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryOutput,
56            crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryError,
57        >,
58    > {
59        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
60    }
61}
62impl ExecuteGremlinExplainQueryFluentBuilder {
63    /// Creates a new `ExecuteGremlinExplainQueryFluentBuilder`.
64    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
65        Self {
66            handle,
67            inner: ::std::default::Default::default(),
68            config_override: ::std::option::Option::None,
69        }
70    }
71    /// Access the ExecuteGremlinExplainQuery as a reference.
72    pub fn as_input(&self) -> &crate::operation::execute_gremlin_explain_query::builders::ExecuteGremlinExplainQueryInputBuilder {
73        &self.inner
74    }
75    /// Sends the request and returns the response.
76    ///
77    /// If an error occurs, an `SdkError` will be returned with additional details that
78    /// can be matched against.
79    ///
80    /// By default, any retryable failures will be retried twice. Retry behavior
81    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
82    /// set when configuring the client.
83    pub async fn send(
84        self,
85    ) -> ::std::result::Result<
86        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryOutput,
87        ::aws_smithy_runtime_api::client::result::SdkError<
88            crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryError,
89            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
90        >,
91    > {
92        let input = self
93            .inner
94            .build()
95            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
96        let runtime_plugins = crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQuery::operation_runtime_plugins(
97            self.handle.runtime_plugins.clone(),
98            &self.handle.conf,
99            self.config_override,
100        );
101        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQuery::orchestrate(&runtime_plugins, input).await
102    }
103
104    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
105    pub fn customize(
106        self,
107    ) -> crate::client::customize::CustomizableOperation<
108        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryOutput,
109        crate::operation::execute_gremlin_explain_query::ExecuteGremlinExplainQueryError,
110        Self,
111    > {
112        crate::client::customize::CustomizableOperation::new(self)
113    }
114    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
115        self.set_config_override(::std::option::Option::Some(config_override.into()));
116        self
117    }
118
119    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
120        self.config_override = config_override;
121        self
122    }
123    /// <p>The Gremlin explain query string.</p>
124    pub fn gremlin_query(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
125        self.inner = self.inner.gremlin_query(input.into());
126        self
127    }
128    /// <p>The Gremlin explain query string.</p>
129    pub fn set_gremlin_query(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
130        self.inner = self.inner.set_gremlin_query(input);
131        self
132    }
133    /// <p>The Gremlin explain query string.</p>
134    pub fn get_gremlin_query(&self) -> &::std::option::Option<::std::string::String> {
135        self.inner.get_gremlin_query()
136    }
137}