7#include "VaultClasses.h"
10#include "VaultRecord.h"
11#include "VaultRequest.h"
12#include "VaultRecordRef.h"
13#include "VaultParamInput.h"
14#include "VaultOperationResult.h"
16#include "CsvParser/CsvParser.h"
18#include "Strings/ToJson.h"
19#include "Strings/PrintAsTable.h"
61 mutable DataMap VaultMapStructure;
64 std::unordered_map<std::string, std::type_index> KeysTypes;
70 std::unordered_map<std::string, std::function<
void()>> VaultRecordClearers;
87 std::list<std::string> KeysOrder;
90 std::set<std::string> UniqueKeys;
93 std::vector<std::pair<std::size_t, std::string>> InvalidFileRecords;
220 const std::function<
void(
const std::vector<std::string>&
keys, std::vector<std::string>&
values)>&
recordHandler)
noexcept;
230 template <VaultRequestType Type>
740 bool SaveToFile(
const std::string&
fileName,
const std::vector<std::string>&
keys = {},
const std::string& separator =
",",
const bool& isSaveKey =
true)
const noexcept;
752 bool ReadFile(
const std::string& fileName,
const char& separator =
',',
const bool& isLoadKeys =
true,
const std::vector<std::string>& keys = {})
noexcept;
765 bool ReadFile(
const std::string& fileName,
const char& separator,
const std::function<
void(
const std::vector<std::string>& keys, std::vector<std::string>& values)>& recordHandler)
noexcept;
Iterator class for all library maps.
Definition Map.h:18
Specialization of class DataContainer, used as a type std::unordered_map<std::string,...
Definition DataContainer.h:288
Specialization of class DataContainer, used as a type std::map<std::string, DataSaver>
Definition DataContainer.h:312
A class for synchronizing threads.
Definition ReadWriteMutex.h:71
A class for storing data with the ability to quickly search for a variety of different keys of any ty...
Definition Vault.h:35
bool EraseRecord(const VaultRecordRef &recordRefToErase) noexcept
Method for deleting a record from a Vault.
Definition Vault.cpp:626
friend VaultOperationResult Intersection(const VaultRecordSet &a, const VaultRecordSet &b, VaultRecordSet &res) noexcept
Making Intersection function friendly.
Definition VaultRecordSet.cpp:616
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 Vault.hpp:846
std::size_t Size() const noexcept
Method for getting the number of records.
Definition Vault.cpp:639
std::unordered_set< VaultRecord * >::iterator RemoveRecord(VaultRecord *recordToErase, bool *wasDeleted) noexcept
Method for removing a record from a Vault.
Definition Vault.cpp:9
std::string ToJson(const bool &isFormat=false, const std::size_t &tabSize=2, const bool &isUseRecordTemplate=true, const std::string &recordTemplate="Record", const bool &isArray=false) const noexcept
Method for saving the contents of the Vault in json.
Definition Vault.cpp:701
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
void DropData() noexcept
A method for deleting all data, but keeping all keys.
Definition Vault.cpp:603
void Print(const bool &isPrintId=false, const std::size_t &amountOfRecords=-1, const std::string &primaryKey="", const bool &isReverse=false, const std::list< std::string > &keys={}) const noexcept
A method for displaying the contents of a Vault as a table on the screen.
Definition Vault.cpp:797
bool GetKeyType(const std::string &key, std::type_index &keyType) const noexcept
The method for getting a key type.
Definition Vault.cpp:326
std::vector< std::pair< std::size_t, std::string > > GetErrorsInLastReadedFile() const noexcept
A method for getting errors in the last read file.
Definition Vault.cpp:1048
VaultOperationResult SetDataToRecord(VaultRecord *dataRecord, const std::string &key, const T &data) noexcept
Method for setting a new value in VaultRecord and Vault.
Definition Vault.hpp:13
bool ReadFile(const std::string &fileName, const bool &isPreprocessRecord, const char &separator, const bool &isLoadKeys, const std::vector< std::string > &userKeys, const std::function< void(const std::vector< std::string > &keys, std::vector< std::string > &values)> &recordHandler) noexcept
A method for reading a csv file and loading data from it into memory.
Definition Vault.cpp:40
VaultOperationResult AddKey(const std::string &key, const T &defaultKeyValue, const bool &isUniqueKey, const bool &isUniqueKeyWithoutLambda, const std::function< T(const std::size_t &counter, const VaultRecordRef &ref)> &uniqueKeyFunction) noexcept
Template method to add new key with default value to Vault.
Definition Vault.hpp:325
std::vector< std::string > GetUniqueKeys() const noexcept
The method for getting the unique keys.
Definition Vault.cpp:356
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
bool RemoveKey(const std::string &key) noexcept
The method for deleting the key.
Definition Vault.cpp:370
VaultOperationResult RequestRecordsSet(const VaultRequestType &requestType, const std::string &key, const T &beginKeyValue, const T &endKeyValue, std::unordered_set< VaultRecord * > &recordsSet, 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 in the std::set.
Definition Vault.hpp:129
std::unordered_set< VaultRecord * > RecordsSet
Unordered set with all VaultRecord pointers.
Definition Vault.h:110
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
std::vector< VaultRecordRef > GetSortedRecords(const std::string &key, const bool &isReverse=false, const std::size_t &amountOfRecords=-1) const noexcept
Method for getting sorted records.
Definition Vault.cpp:651
VaultDerivedClasses VaultDerivedClass
A variable for storing the object type in the Vault inheritance tree.
Definition Vault.h:107
std::vector< std::string > GetKeys() const noexcept
The method for getting all the keys.
Definition Vault.cpp:342
friend VaultRecordRef
Making the VaultRecordRef class friendly so that it has access to the internal members of the Vault c...
Definition Vault.h:224
VaultOperationResult CreateRecord(const std::vector< std::pair< std::string, VaultParamInput > > ¶ms) noexcept
Method to create new VaultRecord.
Definition Vault.cpp:428
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 Vault.hpp:794
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 Vault.hpp:807
friend bool operator==(const VaultRecordSet &a, const VaultRecordSet &b) noexcept
Making VaultRecordSet operator comparison function friendly.
Definition VaultRecordSet.cpp:557
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
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 Vault.hpp:833
std::vector< std::vector< std::pair< std::string, std::string > > > ToStrings() const noexcept
Method for convert vault to strings.
Definition Vault.cpp:770
void DropVault() noexcept
A method for deleting all data and keys.
Definition Vault.cpp:541
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 Vault.hpp:859
Vault() noexcept
Default constructor.
Definition Vault.cpp:182
bool SaveToFile(const std::string &fileName, const std::vector< std::string > &keys={}, const std::string &separator=",", const bool &isSaveKey=true) const noexcept
A method for saving data to a table file. The file format is csv.
Definition Vault.cpp:946
VaultDerivedClasses
Enum for storing the object type during inheritance.
Definition Vault.h:101
@ VaultRecordSetDerived
VaultRecordSet class.
@ VaultBase
Vault class itself.
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
friend VaultRecordSet
Making the VaultRecordSet class friendly so that it has access to the internal members of the Vault c...
Definition Vault.h:227
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 Vault.hpp:820
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
VaultOperationResult UpdateKey(const std::string &key, const T &defaultKeyValue) noexcept
Template method to update default key value.
Definition Vault.hpp:574
VaultOperationResult AddUniqueKey(const std::string &key) noexcept
Template method to add new unique key to Vault.
Definition Vault.hpp:554
bool IsKeyExist(const std::string &key) const noexcept
The method for getting a default key value.
Definition Vault.cpp:316
A class for storing data inside Vault.
Definition VaultRecord.h:18
A class that provides access to data inside Vault.
Definition VaultRecordRef.h:21
A class for storing query results.
Definition VaultRecordSet.h:14
A class for requests to Vault.
Definition VaultRequest.h:16
Structure for storing the results of MVault operations.
Definition VaultOperationResult.h:44