azure-data-tables
Loading...
Searching...
No Matches
table_client.hpp
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License. See License.txt in the project root for license information.
3
4#pragma once
5
6#include "azure/data/tables/credentials/azure_sas_credential.hpp"
7#include "azure/data/tables/credentials/named_key_credential.hpp"
8#include "azure/data/tables/models.hpp"
9
10#include <azure/core/credentials/credentials.hpp>
11#include <azure/core/http/http.hpp>
12#include <azure/core/http/policies/policy.hpp>
13#include <azure/core/internal/http/pipeline.hpp>
14#include <azure/core/internal/json/json.hpp>
15#include <azure/core/response.hpp>
16
17#include <cstdint>
18#include <memory>
19#include <string>
20#include <utility>
21#include <vector>
22
23#ifdef _azure_TABLES_TESTING_BUILD
24namespace Azure { namespace Data { namespace Tables { namespace StressTest {
25 class TransactionStressTest;
26}}}} // namespace Azure::Data::Tables::StressTest
27namespace Azure { namespace Data { namespace Test {
28 class TransactionsBodyTest_TransactionCreate_Test;
29 class TransactionsBodyTest_TransactionBodyInsertMergeOp_Test;
30 class TransactionsBodyTest_TransactionBodyInsertReplaceOp_Test;
31 class TransactionsBodyTest_TransactionBodyDeleteOp_Test;
32 class TransactionsBodyTest_TransactionBodyUpdateMergeOp_Test;
33 class TransactionsBodyTest_TransactionBodyUpdateReplaceOp_Test;
34 class TransactionsBodyTest_TransactionBodyAddOp_Test;
35}}} // namespace Azure::Data::Test
36#endif
37
38namespace Azure { namespace Data { namespace Tables {
42 struct TableClientOptions final : Azure::Core::_internal::ClientOptions
43 {
47 std::string ApiVersion{"2019-02-02"};
48
55 };
56
60 class TableClient final {
61 public:
71 explicit TableClient(
72 std::string const& serviceUrl,
73 std::string const& tableName,
74 const TableClientOptions& options = {});
85 explicit TableClient(
86 const std::string& serviceUrl,
87 const std::string& tableName,
88 std::shared_ptr<Core::Credentials::TokenCredential> credential,
89 const TableClientOptions& options = {});
90
100 explicit TableClient(
101 const std::string& serviceUrl,
102 std::shared_ptr<Azure::Data::Tables::Credentials::AzureSasCredential> credential,
103 const std::string& tableName,
104 const TableClientOptions& options = {});
105
114 Response<Models::AddEntityResult> AddEntity(
115 Models::TableEntity const& tableEntity,
116 Models::AddEntityOptions const& options = {},
117 Core::Context const& context = {});
118
127 Response<Models::UpdateEntityResult> UpdateEntity(
128 Models::TableEntity const& tableEntity,
129 Models::UpdateEntityOptions const& options = {},
130 Core::Context const& context = {});
131
140 Response<Models::MergeEntityResult> MergeEntity(
141 Models::TableEntity const& tableEntity,
142 Models::MergeEntityOptions const& options = {},
143 Core::Context const& context = {});
144
152 Response<Models::DeleteEntityResult> DeleteEntity(
153 Models::TableEntity const& tableEntity,
154 Core::Context const& context = {});
155
164 Response<Models::UpsertEntityResult> UpsertEntity(
165 Models::TableEntity const& tableEntity,
166 Models::UpsertEntityOptions const& options = {},
167 Core::Context const& context = {});
168
177 Models::QueryEntitiesOptions const& options = {},
178 Core::Context const& context = {});
179
188 Response<Models::TableEntity> GetEntity(
189 std::string const& partitionKey,
190 std::string const& rowKey,
191 Core::Context const& context = {});
192
200 Response<Models::SubmitTransactionResult> SubmitTransaction(
201 std::vector<Models::TransactionStep> const& steps,
202 Core::Context const& context = {});
203
204 private:
205#ifdef _azure_TABLES_TESTING_BUILD
206 friend class Azure::Data::Tables::StressTest::TransactionStressTest;
207 friend class Azure::Data::Test::TransactionsBodyTest_TransactionCreate_Test;
208 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyInsertMergeOp_Test;
209 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyInsertReplaceOp_Test;
210 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyDeleteOp_Test;
211 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyUpdateMergeOp_Test;
212 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyUpdateReplaceOp_Test;
213 friend class Azure::Data::Test::TransactionsBodyTest_TransactionBodyAddOp_Test;
214#endif
215
216 std::string PreparePayload(
217 std::string const& batchId,
218 std::string const& changesetId,
219 std::vector<Models::TransactionStep> const& steps);
220 std::string PrepAddEntity(std::string const& changesetId, Models::TableEntity entity);
221 std::string PrepDeleteEntity(std::string const& changesetId, Models::TableEntity entity);
222 std::string PrepMergeEntity(std::string const& changesetId, Models::TableEntity entity);
223 std::string PrepUpdateEntity(std::string const& changesetId, Models::TableEntity entity);
224 std::string PrepInsertEntity(std::string const& changesetId, Models::TableEntity entity);
225 std::shared_ptr<Core::Http::_internal::HttpPipeline> m_pipeline;
226 Core::Url m_url;
227 std::string m_tableName;
228 };
229}}} // namespace Azure::Data::Tables
Query Entities result.
Definition models.hpp:753
Table Entity.
Definition models.hpp:465
Table Client.
Definition table_client.hpp:60
Response< Models::UpsertEntityResult > UpsertEntity(Models::TableEntity const &tableEntity, Models::UpsertEntityOptions const &options={}, Core::Context const &context={})
Upsert specified entity in a table.
Definition table_clients.cpp:599
Models::QueryEntitiesPagedResponse QueryEntities(Models::QueryEntitiesOptions const &options={}, Core::Context const &context={})
Queries entities in a table.
Definition table_clients.cpp:669
Response< Models::AddEntityResult > AddEntity(Models::TableEntity const &tableEntity, Models::AddEntityOptions const &options={}, Core::Context const &context={})
Add entity in a table.
Definition table_clients.cpp:445
Response< Models::DeleteEntityResult > DeleteEntity(Models::TableEntity const &tableEntity, Core::Context const &context={})
Deletes the specified entity in a table.
Definition table_clients.cpp:567
Response< Models::MergeEntityResult > MergeEntity(Models::TableEntity const &tableEntity, Models::MergeEntityOptions const &options={}, Core::Context const &context={})
Merge entity in a table.
Definition table_clients.cpp:522
Response< Models::UpdateEntityResult > UpdateEntity(Models::TableEntity const &tableEntity, Models::UpdateEntityOptions const &options={}, Core::Context const &context={})
Update entity in a table.
Definition table_clients.cpp:477
Response< Models::SubmitTransactionResult > SubmitTransaction(std::vector< Models::TransactionStep > const &steps, Core::Context const &context={})
Submits a transaction.
Definition table_clients.cpp:755
Response< Models::TableEntity > GetEntity(std::string const &partitionKey, std::string const &rowKey, Core::Context const &context={})
Queries a single entity in a table.
Definition table_clients.cpp:636
Add Entity options.
Definition models.hpp:577
Merge Entity options.
Definition models.hpp:635
Query Entities options.
Definition models.hpp:715
Update Entity options.
Definition models.hpp:604
Upsert Entity options.
Definition models.hpp:565
Optional parameters for constructing a new TableClient.
Definition table_client.hpp:43
bool EnableTenantDiscovery
Definition table_client.hpp:54
std::string ApiVersion
Definition table_client.hpp:47