Skip to content

Commit bf52467

Browse files
pixccGazizonoki
authored andcommitted
Moved commit "Add permissions to ydb tools restore" from ydb repo
1 parent 3696e11 commit bf52467

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

include/ydb-cpp-sdk/client/scheme/scheme.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ struct TPermissions {
2424
: Subject(subject)
2525
, PermissionNames(names)
2626
{}
27+
TPermissions(const ::Ydb::Scheme::Permissions& proto);
28+
2729
std::string Subject;
2830
std::vector<std::string> PermissionNames;
2931

@@ -139,6 +141,9 @@ struct TModifyPermissionsSettings : public TOperationRequestSettings<TModifyPerm
139141
void AddAction(EModifyPermissionsAction action, const TPermissions& permissions) {
140142
Actions_.emplace_back(std::pair<EModifyPermissionsAction, TPermissions>{action, permissions});
141143
}
144+
145+
TModifyPermissionsSettings() = default;
146+
explicit TModifyPermissionsSettings(const ::Ydb::Scheme::ModifyPermissionsRequest& request);
142147
};
143148

144149
class TSchemeClient {

src/client/scheme/scheme.cpp

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ namespace NScheme {
1717
using namespace NThreading;
1818
using namespace Ydb::Scheme;
1919

20+
TPermissions::TPermissions(const ::Ydb::Scheme::Permissions& proto)
21+
: Subject(proto.subject())
22+
, PermissionNames(proto.permission_names().begin(), proto.permission_names().end())
23+
{}
24+
2025
void TPermissions::SerializeTo(::Ydb::Scheme::Permissions& proto) const {
2126
proto.set_subject(TStringType{Subject});
2227
for (const auto& name : PermissionNames) {
23-
*proto.mutable_permission_names()->Add() = name;
28+
proto.add_permission_names(TStringType{name});
2429
}
2530
}
2631

@@ -132,7 +137,28 @@ void TSchemeEntry::Out(IOutputStream& out) const {
132137
void TSchemeEntry::SerializeTo(::Ydb::Scheme::ModifyPermissionsRequest& request) const {
133138
request.mutable_actions()->Add()->set_change_owner(TStringType{Owner});
134139
for (const auto& permission : Permissions) {
135-
permission.SerializeTo(*request.mutable_actions()->Add()->mutable_set());
140+
permission.SerializeTo(*request.mutable_actions()->Add()->mutable_grant());
141+
}
142+
}
143+
144+
TModifyPermissionsSettings::TModifyPermissionsSettings(const ::Ydb::Scheme::ModifyPermissionsRequest& request) {
145+
for (const auto& action : request.actions()) {
146+
switch (action.action_case()) {
147+
case Ydb::Scheme::PermissionsAction::kGrant:
148+
AddGrantPermissions(action.grant());
149+
break;
150+
case Ydb::Scheme::PermissionsAction::kRevoke:
151+
AddRevokePermissions(action.revoke());
152+
break;
153+
case Ydb::Scheme::PermissionsAction::kSet:
154+
AddSetPermissions(action.set());
155+
break;
156+
case Ydb::Scheme::PermissionsAction::kChangeOwner:
157+
AddChangeOwner(action.change_owner());
158+
break;
159+
case Ydb::Scheme::PermissionsAction::ACTION_NOT_SET:
160+
break;
161+
}
136162
}
137163
}
138164

0 commit comments

Comments
 (0)