3#include "VaultRecordSet.h"
8 VaultOperationResult VaultRecordSet::RequestRecords(
const VaultRequestType& requestType,
const std::string& key,
const T& beginKeyValue,
9 const T& endKeyValue, VaultRecordSet& vaultRecordSet,
const bool& isIncludeBeginKeyValue,
10 const bool& isIncludeEndKeyValue,
const std::size_t& amountOfRecords,
const std::function<
bool(
const VaultRecordRef& ref)>& requestPredicat)
const noexcept
14 VaultOperationResult res;
16 if (GetIsParentVaultValid())
18 if (&vaultRecordSet ==
this)
20 res.IsOperationSuccess =
false;
26 ReadLock<RecursiveReadWriteMutex> readLock(ParentVault->RecursiveReadWriteMtx);
29 if (vaultRecordSet.ParentVault != ParentVault)
31 vaultRecordSet.Reset();
34 vaultRecordSet.ParentVault = ParentVault;
37 for (
auto& keyCopierIt : VaultKeyCopiers)
38 keyCopierIt.second(&vaultRecordSet);
41 vaultRecordSet.KeysOrder = KeysOrder;
44 vaultRecordSet.UniqueKeys = UniqueKeys;
46 else vaultRecordSet.Clear();
49 ParentVault->RecordSetsSet.emplace(&vaultRecordSet);
51 res =
Vault::RequestRecords(requestType, key, beginKeyValue, endKeyValue, vaultRecordSet, isIncludeBeginKeyValue, isIncludeEndKeyValue, amountOfRecords, requestPredicat);
52 vaultRecordSet.ParentVault = ParentVault;
58 res.RequestedType =
typeid(beginKeyValue);
59 res.IsOperationSuccess =
false;
73 if (GetIsParentVaultValid())
82 res.IsOperationSuccess =
false;
96 if (GetIsParentVaultValid())
107 res.IsOperationSuccess =
false;
121 if (GetIsParentVaultValid())
127 ref.Vlt = ParentVault;
133 res.IsOperationSuccess =
false;
198 template <VaultRequestType Type>
209 res.IsOperationSuccess =
false;
245 res.IsOperationSuccess =
false;
257 static_assert(!std::is_array<T>::value,
"It is not possible to use a c array as a key value. \n\
258 If you want to use a string as a key, you must specialize the function with a string. Like this: \n\
259 RemoveRecord<std::string>(\"Key\", \"Value\") or RemoveRecord(\"Key\", std::string(\"Value\"))");
263 if (GetIsParentVaultValid())
272 res.IsOperationSuccess =
false;
284 static_assert(!std::is_array<T>::value,
"It is not possible to use a c array as a key value. \n\
285 If you want to use a string as a key, you must specialize the function with a string. Like this: \n\
286 RemoveRecords<std::string>(\"Key\", \"Value\") or RemoveRecords(\"Key\", std::string(\"Value\"))");
290 if (GetIsParentVaultValid())
299 res.IsOperationSuccess =
false;
311 if (GetIsParentVaultValid())
Iterator class for all library maps.
Definition Map.h:18
bool EraseRecord(const VaultRecordRef &recordRefToErase) noexcept
Method for deleting a record from a Vault.
Definition Vault.cpp:626
VaultOperationResult GetKeyValue(const std::string &key, T &defaultKeyValue) const noexcept
The method for getting a default key value.
Definition Vault.hpp:625
VaultOperationResult RequestRecords(const VaultRequestType &requestType, const std::string &key, const T &beginKeyValue, const T &endKeyValue, VaultRecordSet &vaultRecordSet, const bool &isIncludeBeginKeyValue, const bool &isIncludeEndKeyValue, const std::size_t &amountOfRecords, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat) const noexcept
The method for getting the result of the request.
Definition Vault.hpp:272
VaultOperationResult GetRecord(const std::string &key, const T &keyValue, VaultRecordRef &vaultRecordRef) const noexcept
The method for getting a reference to the data inside Vault.
Definition Vault.hpp:672
VaultOperationResult GetRecords(const std::string &key, const T &keyValue, std::vector< VaultRecordRef > &recordsRefs, const std::size_t &amountOfRecords=-1) const noexcept
The method for getting a vector of references to the data inside Vault.
Definition Vault.hpp:729
void SortBy(const std::string &key, const std::function< bool(const VaultRecordRef &ref)> &func, const bool &isReverse=false, const std::size_t &amountOfRecords=-1) const noexcept
Method for handle sorted records.
Definition Vault.cpp:677
std::unordered_set< VaultRecordSet * > RecordSetsSet
Unordered set with all VaultRecordSet pointers.
Definition Vault.h:113
VaultOperationResult Request(const VaultRequest< Type > &request, VaultRecordSet &vaultRecordSet) const
A method for complex requests.
Definition Vault.hpp:875
VaultOperationResult EraseRecords(const std::string &key, const T &keyValue, const std::size_t &amountOfRecords=-1) noexcept
The method for erase records using key and value.
Definition Vault.hpp:1008
A class that provides access to data inside Vault.
Definition VaultRecordRef.h:21
A class for storing query results.
Definition VaultRecordSet.h:14
VaultOperationResult GetRecord(const std::string &key, const T &keyValue, VaultRecordRef &vaultRecordRef) const noexcept
The method for getting a reference to the data inside Vault.
Definition VaultRecordSet.hpp:90
void SortBy(const std::string &key, F &&func, const bool &isReverse=false, const std::size_t &amountOfRecords=-1) const noexcept
Method for handle sorted records.
Definition VaultRecordSet.hpp:307
VaultOperationResult RequestInterval(const std::string &key, const T &beginKeyValue, const T &endKeyValue, VaultRecordSet &vaultRecordSet, const bool &isIncludeBeginKeyValue=true, const bool &isIncludeEndKeyValue=true, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
The method for getting the result of the request.
Definition VaultRecordSet.hpp:186
VaultOperationResult RequestGreaterOrEqual(const std::string &key, const T &keyValue, VaultRecordSet &vaultRecordSet, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
A method for getting all records that have a value greater than or equal to keyValue stored by the ke...
Definition VaultRecordSet.hpp:159
VaultOperationResult Request(const VaultRequest< Type > &request, VaultRecordSet &vaultRecordSet) const
A method for complex requests.
Definition VaultRecordSet.hpp:199
VaultOperationResult RequestLessOrEqual(const std::string &key, const T &keyValue, VaultRecordSet &vaultRecordSet, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
A method for getting all records that have a value less than or equal to keyValue stored by the key k...
Definition VaultRecordSet.hpp:177
VaultOperationResult RequestLess(const std::string &key, const T &keyValue, VaultRecordSet &vaultRecordSet, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
A method for getting all records that have a value less than keyValue stored by the key key.
Definition VaultRecordSet.hpp:168
VaultOperationResult RequestEqual(const std::string &key, const T &keyValue, VaultRecordSet &vaultRecordSet, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
A method for getting all records that have a value equal to keyValue stored by the key key.
Definition VaultRecordSet.hpp:141
VaultOperationResult RequestGreater(const std::string &key, const T &keyValue, VaultRecordSet &vaultRecordSet, const std::size_t &amountOfRecords=-1, const std::function< bool(const VaultRecordRef &ref)> &requestPredicat=DefaultRequestPredicat) const noexcept
A method for getting all records that have a value greater than keyValue stored by the key key.
Definition VaultRecordSet.hpp:150
VaultOperationResult RemoveRecords(const std::string &key, const T &keyValue, const std::size_t &amountOfRecords=-1) noexcept
The method for remove records using key and value.
Definition VaultRecordSet.hpp:280
VaultOperationResult GetRecords(const std::string &key, const T &keyValue, std::vector< VaultRecordRef > &recordsRefs, const std::size_t &amountOfRecords=-1) const noexcept
The method for getting a vector of references to the data inside Vault.
Definition VaultRecordSet.hpp:115
bool GetIsParentVaultValid() const noexcept
Method for checking the validity of the parent Vault.
Definition VaultRecordSet.cpp:131
VaultOperationResult GetKeyValue(const std::string &key, T &defaultKeyValue) const noexcept
The method for getting a default key value.
Definition VaultRecordSet.hpp:67
@ SameVaultRecordSet
This code is returned when trying to call operations on the VaultRecordSet object itself.
@ ParentVaultNotValid
This code is returned when calling VaultRecordSet operations when the parent Vault is not valid.
Structure for storing the results of MVault operations.
Definition VaultOperationResult.h:44