azure-sdk-for-cpp/sdk/tables/azure-data-tables/samples/tables_entity_operations.cpp
George Arama 20d9364a3d
Storage tables implementation (#5137)
* dss

* first pass at a client and tests

* constructors work

* working request, need to fix the response parsing

* basic tests working for service client

* refactored the constructors

* testproxy and tests

* format file

* got client and one API working

* list working

* all apis recorded

* new assets.json

* assets.json regen

* format json

* adding word to cspell

* fix build issues

* fix one more break

* typo

* clangs

* one more issue

* more fixezez

* regen recordings

* try again

* clangs

* clangs again

* new assets

* new test proxy

* regen tests based on new merge

* hmmm

* restore

* add debug env for test proxy

* resync cmake presets from main

* gor get and set working

* get stats

* table client and create

* delete

* get/set acls

* list tables

* some cleanup

* Create /update/merge/delete

* upsert

* query entities

* generated tests

* clangs

* some fixes

* some more errors

* cspells

* got transaction API working

* transactions working , need to parse response

* get data out of the response

* clangs

* batch1

* regen tests

* part 2

* batch3

* batch4

* clangs

* regen tests

* regen tests

* try again

* live only

* added some more tests for the transaction body

* small refactor for tests

* oops

* some oter update

* darn includes

* sddfsd

* erorr fix

* key clients

* sas

* small cleanup

* All tests passing

* test recordings

* clangs

* missing ENV for test

* attempt1

* retry

* couple recordings

* regen some tests

* clangs

* again

* again

* comments

* comments

* headers and footers

* some cleanjup

* Move folders step1

* revert assets and test resources in storage

* revert to main

* cspell

* readme

* comments

* revert ci.yml

* liveonly test

* clangs

* camke

* ci2

* try again

* fdssfs

* fdsfsd

* some cleanup

* dasda

* dsdsds

* asda

* assets

* comments

* a few more bits and pieces

* some other updates for cspell

* typo

* more docs

* spell

* another doc error

* clangs docs

* docs

* test cov

* dasdas

* hg

* stress test

* cspell

* Update sdk/storage/azure-storage-common/test/ut/CMakeLists.txt

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/storage/azure-storage-common/test/ut/shared_key_policy_lite_test.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/CHANGELOG.md

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/CMakeLists.txt

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/test/stress/scenarios-matrix.yaml

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/test/stress/Dockerfile

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* PR comments

* respurces cleanup

* cleanup 2

* respurce fix

* revddrt

* weqq

* oops

* try again

* Update sdk/tables/azure-data-tables/vcpkg/vcpkg.json

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* try

* test fix

* samples

* readmes

* readmes

* readmes

* api view settings

* qualify friends

* try

* moving usings

* refactor for API View tool

* some more

* clangs

* Update sdk/tables/README.md

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/core/azure-core/inc/azure/core/http/http.hpp

Co-authored-by: Ahson Khan <ahkha@microsoft.com>

* Update sdk/core/azure-core/src/http/transport_policy.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/inc/azure/data/tables/rest_client.hpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/CHANGELOG.md

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/test/ut/CMakeLists.txt

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Update sdk/tables/azure-data-tables/src/rest_client.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* some comments

* comments

* comments part N

* clang

* try now

* clang

* comments

* update file names

* update test to check for the final signature

* ccc

* rename shared key policy lite

* cleanup some includes

* add a couple more tests

* small update

* clang

* increase test limits

* xml transition

* service_version_policy

* shared creds and key policy lite

* switch to secondary policy

* code done

* remove last storage vestiges

* put back some code

* readme/changelog

* Update sdk/tables/azure-data-tables/src/serializers.cpp

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Add the shared key policy for Larry

* Larry comments

* curlybracify the initializers

* Update sdk/core/azure-core-xml/inc/azure/core/xml/dll_import_export.hpp

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Update sdk/core/azure-core-xml/vcpkg.json

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Update sdk/tables/azure-data-tables/inc/azure/data/tables.hpp

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Rick's comments one more namespace change for serializers

* whiteline

* typo

* oops

* includes and clangs

* cleanup

* jhfjdhjfd

* hjkjdhf

* daas

* Anton's comments

* clang

* revert some changes

* fdss

* Update sdk/core/azure-core-xml/CHANGELOG.md

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* everything works

* clangs and vcpkg test

* test remove azure-core-xml

* vcpkg json

* remove the code

* merge main

* saa

* wqw

* last comments

* clang

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2024-01-12 11:04:43 -08:00

73 lines
1.9 KiB
C++

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#include <azure/data/tables.hpp>
#include <cstdio>
#include <iostream>
#include <stdexcept>
#include <thread>
std::string GetConnectionString()
{
const static std::string ConnectionString = "";
if (!ConnectionString.empty())
{
return ConnectionString;
}
const static std::string envConnectionString = std::getenv("STANDARD_STORAGE_CONNECTION_STRING");
if (!envConnectionString.empty())
{
return envConnectionString;
}
throw std::runtime_error("Cannot find connection string.");
}
using namespace Azure::Data::Tables;
const std::string TableName = "table";
int main()
{
auto tableServiceClient = TableServicesClient::CreateFromConnectionString(GetConnectionString());
auto tableClient = TableClient::CreateFromConnectionString(GetConnectionString(), TableName);
// create new table
tableClient.Create();
// list tables
auto tables = tableServiceClient.ListTables();
for (auto table : tables.Tables)
{
std::cout << table.TableName << std::endl;
}
// init new entity
Azure::Data::Tables::Models::TableEntity entity;
entity.PartitionKey = "P1";
entity.RowKey = "R1";
entity.Properties["Name"] = "Azure";
entity.Properties["Product"] = "Tables";
// create new entity
auto response = tableClient.CreateEntity(entity);
// update entity
std::cout << response.Value.ETag << std::endl;
entity.Properties["Product"] = "Tables2";
auto updateResponse = tableClient.UpdateEntity(entity);
std::cout << updateResponse.Value.ETag << std::endl;
// merge entity
entity.Properties["Product"] = "Tables3";
entity.ETag = updateResponse.Value.ETag;
auto updateResponse2 = tableClient.MergeEntity(entity);
// delete entity
std::cout << updateResponse2.Value.ETag << std::endl;
entity.ETag = updateResponse2.Value.ETag;
auto deleteResponse = tableClient.DeleteEntity(entity);
// delete existing table
tableClient.Delete();
return 0;
}