/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace RDSDataService { namespace Model { class BatchExecuteStatementRequest; class BeginTransactionRequest; class CommitTransactionRequest; class ExecuteStatementRequest; class RollbackTransactionRequest; typedef Aws::Utils::Outcome BatchExecuteStatementOutcome; typedef Aws::Utils::Outcome BeginTransactionOutcome; typedef Aws::Utils::Outcome CommitTransactionOutcome; typedef Aws::Utils::Outcome ExecuteStatementOutcome; typedef Aws::Utils::Outcome RollbackTransactionOutcome; typedef std::future BatchExecuteStatementOutcomeCallable; typedef std::future BeginTransactionOutcomeCallable; typedef std::future CommitTransactionOutcomeCallable; typedef std::future ExecuteStatementOutcomeCallable; typedef std::future RollbackTransactionOutcomeCallable; } // namespace Model class RDSDataServiceClient; typedef std::function&) > BatchExecuteStatementResponseReceivedHandler; typedef std::function&) > BeginTransactionResponseReceivedHandler; typedef std::function&) > CommitTransactionResponseReceivedHandler; typedef std::function&) > ExecuteStatementResponseReceivedHandler; typedef std::function&) > RollbackTransactionResponseReceivedHandler; /** *

Amazon RDS Data Service

Amazon RDS provides an HTTP * endpoint to run SQL statements on an Amazon Aurora Serverless DB cluster. To run * these statements, you work with the Data Service API.

For more * information about the Data Service API, see Using * the Data API for Aurora Serverless in the Amazon Aurora User * Guide.

If you have questions or comments related to the Data * API, send email to Rds-data-api-feedback@amazon.com.

*

*/ class AWS_RDSDATASERVICE_API RDSDataServiceClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ RDSDataServiceClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ RDSDataServiceClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ RDSDataServiceClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration()); virtual ~RDSDataServiceClient(); /** *

Runs a batch SQL statement over an array of data.

You can run bulk * update and insert operations for multiple records using a DML statement with * different parameter sets. Bulk operations can provide a significant performance * improvement over individual insert and update operations.

If * a call isn't part of a transaction because it doesn't include the * transactionID parameter, changes that result from the call are * committed automatically.

See Also:

AWS * API Reference

*/ virtual Model::BatchExecuteStatementOutcome BatchExecuteStatement(const Model::BatchExecuteStatementRequest& request) const; /** *

Runs a batch SQL statement over an array of data.

You can run bulk * update and insert operations for multiple records using a DML statement with * different parameter sets. Bulk operations can provide a significant performance * improvement over individual insert and update operations.

If * a call isn't part of a transaction because it doesn't include the * transactionID parameter, changes that result from the call are * committed automatically.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::BatchExecuteStatementOutcomeCallable BatchExecuteStatementCallable(const Model::BatchExecuteStatementRequest& request) const; /** *

Runs a batch SQL statement over an array of data.

You can run bulk * update and insert operations for multiple records using a DML statement with * different parameter sets. Bulk operations can provide a significant performance * improvement over individual insert and update operations.

If * a call isn't part of a transaction because it doesn't include the * transactionID parameter, changes that result from the call are * committed automatically.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void BatchExecuteStatementAsync(const Model::BatchExecuteStatementRequest& request, const BatchExecuteStatementResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Starts a SQL transaction.

 <important> <p>A
         * transaction can run for a maximum of 24 hours. A transaction is terminated and
         * rolled back automatically after 24 hours.</p> <p>A transaction times
         * out if no calls use its transaction ID in three minutes. If a transaction times
         * out before it's committed, it's rolled back automatically.</p>
         * <p>DDL statements inside a transaction cause an implicit commit. We
         * recommend that you run each DDL statement in a separate
         * <code>ExecuteStatement</code> call with
         * <code>continueAfterTimeout</code> enabled.</p>
         * </important> 

See Also:

AWS * API Reference

*/ virtual Model::BeginTransactionOutcome BeginTransaction(const Model::BeginTransactionRequest& request) const; /** *

Starts a SQL transaction.

 <important> <p>A
         * transaction can run for a maximum of 24 hours. A transaction is terminated and
         * rolled back automatically after 24 hours.</p> <p>A transaction times
         * out if no calls use its transaction ID in three minutes. If a transaction times
         * out before it's committed, it's rolled back automatically.</p>
         * <p>DDL statements inside a transaction cause an implicit commit. We
         * recommend that you run each DDL statement in a separate
         * <code>ExecuteStatement</code> call with
         * <code>continueAfterTimeout</code> enabled.</p>
         * </important> 

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::BeginTransactionOutcomeCallable BeginTransactionCallable(const Model::BeginTransactionRequest& request) const; /** *

Starts a SQL transaction.

 <important> <p>A
         * transaction can run for a maximum of 24 hours. A transaction is terminated and
         * rolled back automatically after 24 hours.</p> <p>A transaction times
         * out if no calls use its transaction ID in three minutes. If a transaction times
         * out before it's committed, it's rolled back automatically.</p>
         * <p>DDL statements inside a transaction cause an implicit commit. We
         * recommend that you run each DDL statement in a separate
         * <code>ExecuteStatement</code> call with
         * <code>continueAfterTimeout</code> enabled.</p>
         * </important> 

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void BeginTransactionAsync(const Model::BeginTransactionRequest& request, const BeginTransactionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Ends a SQL transaction started with the BeginTransaction * operation and commits the changes.

See Also:

AWS * API Reference

*/ virtual Model::CommitTransactionOutcome CommitTransaction(const Model::CommitTransactionRequest& request) const; /** *

Ends a SQL transaction started with the BeginTransaction * operation and commits the changes.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::CommitTransactionOutcomeCallable CommitTransactionCallable(const Model::CommitTransactionRequest& request) const; /** *

Ends a SQL transaction started with the BeginTransaction * operation and commits the changes.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void CommitTransactionAsync(const Model::CommitTransactionRequest& request, const CommitTransactionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Runs a SQL statement against a database.

If a call isn't * part of a transaction because it doesn't include the transactionID * parameter, changes that result from the call are committed automatically.

*

The response size limit is 1 MB. If the call returns more than 1 * MB of response data, the call is terminated.

See Also:

AWS * API Reference

*/ virtual Model::ExecuteStatementOutcome ExecuteStatement(const Model::ExecuteStatementRequest& request) const; /** *

Runs a SQL statement against a database.

If a call isn't * part of a transaction because it doesn't include the transactionID * parameter, changes that result from the call are committed automatically.

*

The response size limit is 1 MB. If the call returns more than 1 * MB of response data, the call is terminated.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::ExecuteStatementOutcomeCallable ExecuteStatementCallable(const Model::ExecuteStatementRequest& request) const; /** *

Runs a SQL statement against a database.

If a call isn't * part of a transaction because it doesn't include the transactionID * parameter, changes that result from the call are committed automatically.

*

The response size limit is 1 MB. If the call returns more than 1 * MB of response data, the call is terminated.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void ExecuteStatementAsync(const Model::ExecuteStatementRequest& request, const ExecuteStatementResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Performs a rollback of a transaction. Rolling back a transaction cancels its * changes.

See Also:

AWS * API Reference

*/ virtual Model::RollbackTransactionOutcome RollbackTransaction(const Model::RollbackTransactionRequest& request) const; /** *

Performs a rollback of a transaction. Rolling back a transaction cancels its * changes.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::RollbackTransactionOutcomeCallable RollbackTransactionCallable(const Model::RollbackTransactionRequest& request) const; /** *

Performs a rollback of a transaction. Rolling back a transaction cancels its * changes.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void RollbackTransactionAsync(const Model::RollbackTransactionRequest& request, const RollbackTransactionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void BatchExecuteStatementAsyncHelper(const Model::BatchExecuteStatementRequest& request, const BatchExecuteStatementResponseReceivedHandler& handler, const std::shared_ptr& context) const; void BeginTransactionAsyncHelper(const Model::BeginTransactionRequest& request, const BeginTransactionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void CommitTransactionAsyncHelper(const Model::CommitTransactionRequest& request, const CommitTransactionResponseReceivedHandler& handler, const std::shared_ptr& context) const; void ExecuteStatementAsyncHelper(const Model::ExecuteStatementRequest& request, const ExecuteStatementResponseReceivedHandler& handler, const std::shared_ptr& context) const; void RollbackTransactionAsyncHelper(const Model::RollbackTransactionRequest& request, const RollbackTransactionResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace RDSDataService } // namespace Aws