Skip to content

Commit 5b7141a

Browse files
authored
Refactored operation id (#314)
1 parent d36a9a1 commit 5b7141a

File tree

6 files changed

+283
-115
lines changed

6 files changed

+283
-115
lines changed

include/ydb-cpp-sdk/library/operation_id/operation_id.h

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
#include <memory>
44
#include <string>
55
#include <vector>
6-
#include <unordered_map>
6+
7+
namespace Ydb {
8+
class TOperationId;
9+
}
710

811
namespace NKikimr {
912
namespace NOperationId {
1013

1114
class TOperationId {
12-
static constexpr int kEKindMinValue = 0;
13-
static constexpr int kEKindMaxValue = 10;
1415
public:
1516
enum EKind : int {
1617
UNUSED = 0,
@@ -31,40 +32,38 @@ class TOperationId {
3132
std::string Value;
3233
};
3334

34-
using TDataList = std::vector<std::unique_ptr<TData>>;
35-
3635
TOperationId();
3736
explicit TOperationId(const std::string& string, bool allowEmpty = false);
38-
37+
3938
TOperationId(const TOperationId& other);
40-
TOperationId(TOperationId&& other) = default;
39+
TOperationId(TOperationId&& other);
4140

4241
TOperationId& operator=(const TOperationId& other);
43-
TOperationId& operator=(TOperationId&& other) = default;
42+
TOperationId& operator=(TOperationId&& other);
4443

45-
~TOperationId() = default;
44+
~TOperationId();
4645

4746
EKind GetKind() const;
4847
void SetKind(const EKind& kind);
4948

50-
const TDataList& GetData() const;
51-
TDataList& GetMutableData();
49+
std::vector<TData> GetData() const;
5250

51+
void AddOptionalValue(const std::string& key, const std::string& value);
5352
const std::vector<const std::string*>& GetValue(const std::string& key) const;
53+
5454
std::string GetSubKind() const;
5555
std::string ToString() const;
5656

57+
const Ydb::TOperationId& GetProto() const;
5758
private:
58-
bool IsValidKind(int kind);
59-
void CopyData(const TOperationId::TDataList& otherData);
60-
61-
EKind Kind;
62-
TDataList Data;
63-
std::unordered_map<std::string, std::vector<const std::string*>> Index;
59+
class TImpl;
60+
std::unique_ptr<TImpl> Impl;
6461
};
6562

66-
void AddOptionalValue(TOperationId& operarionId, const std::string& key, const std::string& value);
67-
void AddOptionalValue(TOperationId& operarionId, const std::string& key, const char* value, size_t size);
63+
std::string ProtoToString(const Ydb::TOperationId& proto);
64+
65+
void AddOptionalValue(Ydb::TOperationId& operarionId, const std::string& key, const std::string& value);
66+
6867
TOperationId::EKind ParseKind(const std::string_view value);
6968

7069
std::string FormatPreparedQueryIdCompat(const std::string& str);

src/library/operation_id/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
add_subdirectory(protos)
2+
13
_ydb_sdk_add_library(library-operation_id)
24

35
target_link_libraries(library-operation_id
46
PRIVATE
57
yutil
68
cgiparam
79
uri
10+
lib-operation_id-protos
811
)
912

1013
target_sources(library-operation_id PRIVATE

0 commit comments

Comments
 (0)