6 #ifndef IROHA_SHARED_MODEL_QUERY_VALIDATOR_HPP 7 #define IROHA_SHARED_MODEL_QUERY_VALIDATOR_HPP 9 #include <boost/variant/apply_visitor.hpp> 10 #include <boost/variant/static_visitor.hpp> 32 namespace validation {
38 template <
typename FieldVal
idator>
40 :
public boost::static_visitor<std::optional<ValidationError>> {
42 : validator_(std::move(validator)) {}
76 "GetAccountTransactions",
85 &get_account_asset_transactions)
const {
87 "GetAccountAssetTransactions",
90 get_account_asset_transactions.
accountId()),
92 get_account_asset_transactions.
assetId()),
102 if (hashes.size() == 0) {
103 error_creator.
addReason(
"tx_hashes cannot be empty");
106 for (
const auto &h : hashes) {
110 return std::move(error_creator).getValidationError(
"GetTransactions");
115 using iroha::operator|;
121 [
this](
const auto &pagination_meta) {
129 using iroha::operator|;
134 get_account_detail.
key() |
135 [
this](
const auto &key) {
138 get_account_detail.
writer() |
139 [
this](
const auto &writer) {
143 [
this](
const auto &pagination_meta) {
157 "GetRolePermissions",
173 using iroha::operator|;
175 "GetPendingTransactions",
179 [
this](
const auto &pagination_meta) {
204 template <
typename FieldVal
idator,
typename QueryFieldVal
idator>
207 const QueryFieldValidator &query_field_validator)
208 : field_validator_(field_validator),
209 query_field_validator_(query_field_validator) {}
214 QueryFieldValidator{config}) {}
228 field_validator_.validateCreatedTime(qry.
createdTime());
229 error_creator |= field_validator_.validateCounter(qry.
queryCounter());
231 boost::apply_visitor(query_field_validator_, qry.
get());
243 #endif // IROHA_SHARED_MODEL_QUERY_VALIDATOR_HPP std::optional< ValidationError > validateHash(const crypto::Hash &hash) const
Definition: field_validator.cpp:383
Definition: get_pending_transactions.hpp:21
QueryFieldValidator query_field_validator_
Definition: query_validator.hpp:238
virtual const types::AccountIdType & creatorAccountId() const =0
std::optional< ValidationError > operator()(const interface::GetAccountAssetTransactions &get_account_asset_transactions) const
Definition: query_validator.hpp:83
virtual const TxPaginationMeta & paginationMeta() const =0
Get the query pagination metadata.
Definition: get_asset_info.hpp:17
virtual const types::AccountIdType & accountId() const =0
virtual types::HeightType height() const =0
std::optional< ValidationError > validateHeight(const interface::types::HeightType &height) const
Definition: field_validator.cpp:373
virtual const types::AccountIdType & accountId() const =0
Definition: get_transactions.hpp:14
virtual const types::AccountIdType & assetId() const =0
virtual std::optional< types::AccountIdType > writer() const =0
virtual const types::RoleIdType & roleId() const =0
std::optional< ValidationError > operator()(const interface::GetRolePermissions &get_role_permissions) const
Definition: query_validator.hpp:154
std::optional< ValidationError > operator()(const interface::GetTransactions &get_transactions) const
Definition: query_validator.hpp:97
Definition: wsv_restorer_impl.hpp:20
std::optional< ValidationError > operator()(const interface::GetAccount &get_account) const
Definition: query_validator.hpp:50
std::optional< ValidationError > operator()(const interface::GetAssetInfo &get_asset_info) const
Definition: query_validator.hpp:162
std::optional< ValidationError > operator()(const interface::GetPeers &get_peers) const
Definition: query_validator.hpp:184
std::optional< ValidationError > validate(const interface::Query &qry) const override
Definition: query_validator.hpp:221
std::optional< ValidationError > operator()(const interface::GetAccountTransactions &get_account_transactions) const
Definition: query_validator.hpp:72
Definition: get_account_asset_transactions.hpp:21
virtual const types::AccountIdType & accountId() const =0
virtual const TransactionHashesType & transactionHashes() const =0
std::optional< ValidationError > operator()(const interface::GetPendingTransactions &get_pending_transactions) const
Definition: query_validator.hpp:170
virtual const QueryVariantType & get() const =0
std::optional< ValidationError > validateAccountDetailPaginationMeta(const interface::AccountDetailPaginationMeta &pagination_meta) const
Definition: field_validator.cpp:492
std::optional< ValidationError > validateAccountDetailKey(const interface::types::AccountDetailKeyType &key) const
Definition: field_validator.cpp:205
virtual std::optional< std::reference_wrapper< const AccountDetailPaginationMeta > > paginationMeta() const =0
Get the query pagination metadata.
std::optional< ValidationError > operator()(const interface::GetEngineReceipts &qry) const
Definition: query_validator.hpp:189
std::optional< ValidationError > aggregateErrors(const ReasonName &name, std::vector< std::optional< ReasonType >> optional_reasons, std::vector< std::optional< ValidationError >> optional_child_errors)
Definition: validation_error_helpers.cpp:57
QueryValidator(std::shared_ptr< ValidatorsConfig > config)
Definition: query_validator.hpp:212
std::optional< ValidationError > operator()(const interface::GetRoles &get_roles) const
Definition: query_validator.hpp:149
virtual std::optional< types::AccountDetailKeyType > key() const =0
virtual const TxPaginationMeta & paginationMeta() const =0
Get the query pagination metadata.
QueryValidatorVisitor(std::shared_ptr< ValidatorsConfig > config)
Definition: query_validator.hpp:47
virtual const types::AssetIdType & assetId() const =0
Definition: get_signatories.hpp:18
std::optional< ValidationError > validateAccountId(const interface::types::AccountIdType &account_id) const
Definition: field_validator.cpp:129
virtual types::TimestampType createdTime() const =0
Definition: get_account_transactions.hpp:21
ValidationErrorCreator & addReason(ReasonType reason)
Add a reason to error.
Definition: validation_error_helpers.cpp:23
virtual types::CounterType queryCounter() const =0
std::optional< ValidationError > getValidationError(const ReasonName &name) &&
Definition: validation_error_helpers.cpp:15
virtual const std::string & txHash() const =0
Definition: get_roles.hpp:17
Definition: get_peers.hpp:17
Definition: get_account_detail.hpp:29
std::optional< ValidationError > validateAssetPaginationMeta(const interface::AssetPaginationMeta &asset_pagination_meta) const
Definition: field_validator.cpp:469
Definition: get_account.hpp:14
virtual const types::AccountIdType & accountId() const =0
Definition: get_engine_receipts.hpp:17
virtual const types::AccountIdType & accountId() const =0
virtual std::optional< std::reference_wrapper< const interface::AssetPaginationMeta > > paginationMeta() const =0
Get the query pagination metadata.
Definition: query_validator.hpp:39
virtual const types::AccountIdType & accountId() const =0
Definition: field_validator.hpp:41
std::optional< ValidationError > operator()(const interface::GetSignatories &get_signatories) const
Definition: query_validator.hpp:64
Definition: get_block.hpp:14
virtual std::optional< std::reference_wrapper< const TxPaginationMeta > > paginationMeta() const =0
Helper class for ValidationError creation.
Definition: validation_error_helpers.hpp:16
Definition: get_role_permissions.hpp:18
Definition: command_executor.hpp:12
std::optional< ValidationError > validateRoleId(const interface::types::RoleIdType &role_id) const
Definition: field_validator.cpp:177
Definition: query_validator.hpp:205
std::optional< ValidationError > validateTxPaginationMeta(const interface::TxPaginationMeta &tx_pagination_meta) const
Definition: field_validator.cpp:437
FieldValidator field_validator_
Definition: query_validator.hpp:237
std::optional< ValidationError > validateAssetId(const interface::types::AssetIdType &asset_id) const
Definition: field_validator.cpp:134
std::optional< ValidationError > operator()(const interface::GetBlock &get_block) const
Definition: query_validator.hpp:58
std::optional< ValidationError > operator()(const interface::GetAccountDetail &get_account_detail) const
Definition: query_validator.hpp:127
std::optional< ValidationError > operator()(const interface::GetAccountAssets &get_account_assets) const
Definition: query_validator.hpp:113
static Hash fromHexString(const std::string &hex)
Definition: hash.cpp:20
Definition: get_account_assets.hpp:20