/**
* 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