MVault 1.0.0
Simple c++ database
Loading...
Searching...
No Matches
VaultRecordSet.h
1#pragma once
2
3#include "Vault.h"
4
5namespace mvlt
6{
13 class VaultRecordSet : protected Vault
14 {
15 private:
16 // Pointer to parent Vault
17 Vault* ParentVault = nullptr;
18
37 template <class T>
38 VaultOperationResult RequestRecords(const VaultRequestType& requestType, const std::string& key, const T& beginKeyValue,
40 const bool& isIncludeEndKeyValue, const std::size_t& amountOfRecords, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat) const noexcept;
41
52 std::unordered_set<VaultRecord*>::iterator RemoveRecord(VaultRecord* recordToErase, bool* wasDeleted) noexcept;
53
59 void CopySet(const VaultRecordSet& other) noexcept;
60
66 void MoveSet(VaultRecordSet&& other) noexcept;
67
68 public:
70 friend Vault;
71
74
77
84
93
100
109
112
115
122
129
137 bool IsKeyExist(const std::string& key) const noexcept;
138
149
159
166
185
201
218 const std::size_t& amountOfRecords = -1, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
219
236 const std::size_t& amountOfRecords = -1, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
237
254 const std::size_t& amountOfRecords = -1, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
255
272 const std::size_t& amountOfRecords = -1, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
273
290 const std::size_t& amountOfRecords = -1, const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
291
313 const std::function<bool(const VaultRecordRef& ref)>& requestPredicat = DefaultRequestPredicat) const noexcept;
314
321 template <VaultRequestType Type>
323
332
334 void Reset() noexcept;
335
342 void Clear() noexcept;
343
353 bool RemoveRecord(const VaultRecordRef& recordRefToErase) noexcept;
354
368 VaultOperationResult RemoveRecord(const std::string& key, const T& keyValue) noexcept;
369
387
395 std::size_t Size() const noexcept;
396
404 std::vector<std::string> GetKeys() const noexcept;
405
412
425
445 void SortBy(const std::string& key, F&& func, const bool& isReverse = false, const std::size_t& amountOfRecords = -1) const noexcept;
446
458 std::string ToJson(const bool& isFormat = false, const std::size_t& tabSize = 2, const bool& isUseRecordTemplate = true,
460
466 std::vector<std::vector<std::pair<std::string, std::string>>> ToStrings() const noexcept;
467
477 void Print(const bool& isPrintId = false, const std::size_t& amountOfRecords = -1, const std::string& primaryKey = "", const bool& isReverse = false,
478 const std::list<std::string>& keys = {}) const noexcept;
479
487 VaultOperationResult Join(const VaultRecordSet& a) noexcept;
488
497
506
519 bool SaveToFile(const std::string& fileName, const std::vector<std::string>& keys = {}, const std::string& separator = ",", const bool& isSaveKey = true) const noexcept;
520
522 ~VaultRecordSet() noexcept;
523
525 friend VaultOperationResult Union(const VaultRecordSet& a, const VaultRecordSet& b, VaultRecordSet& res) noexcept;
526
528 friend VaultOperationResult Intersection(const VaultRecordSet& a, const VaultRecordSet& b, VaultRecordSet& res) noexcept;
529 };
530
539 bool operator==(const VaultRecordSet& a, const VaultRecordSet& b) noexcept;
540
541
550 bool operator!=(const VaultRecordSet& a, const VaultRecordSet& b) noexcept;
551
561 VaultOperationResult Union(const VaultRecordSet& a, const VaultRecordSet& b, VaultRecordSet& res) noexcept;
562
572 VaultOperationResult Intersection(const VaultRecordSet& a, const VaultRecordSet& b, VaultRecordSet& res) noexcept;
573}
Iterator class for all library maps.
Definition Map.h:18
A class for storing data with the ability to quickly search for a variety of different keys of any ty...
Definition Vault.h:35
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
bool CheckRecord(const VaultRecordRef &ref) const noexcept
A method for checking for an entry in set.
Definition VaultRecordSet.cpp:231
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
bool IsKeyExist(const std::string &key) const noexcept
The method for getting a default key value.
Definition VaultRecordSet.cpp:152
friend VaultOperationResult Intersection(const VaultRecordSet &a, const VaultRecordSet &b, VaultRecordSet &res) noexcept
Making Intersection function friendly.
Definition VaultRecordSet.cpp:616
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
std::size_t Size() const noexcept
Method for getting the number of records.
Definition VaultRecordSet.cpp:288
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 VaultRecordSet.cpp:535
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 Intersect(const VaultRecordSet &a) noexcept
A method to delete all records from this that are not in a.
Definition VaultRecordSet.cpp:485
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
std::vector< std::string > GetKeys() const noexcept
The method for getting all the keys.
Definition VaultRecordSet.cpp:303
VaultRecordSet() noexcept
Default constructor.
Definition VaultRecordSet.cpp:77
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 VaultRecordSet as a table on the screen.
Definition VaultRecordSet.cpp:369
friend VaultOperationResult Union(const VaultRecordSet &a, const VaultRecordSet &b, VaultRecordSet &res) noexcept
Making Union function friendly.
Definition VaultRecordSet.cpp:581
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 Exclude(const VaultRecordSet &a) noexcept
A method for deleting all records from this that are also in a.
Definition VaultRecordSet.cpp:435
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
void Reset() noexcept
Resets the object to its initial state.
Definition VaultRecordSet.cpp:244
bool GetKeyType(const std::string &key, std::type_index &keyType) const noexcept
The method for getting a key type.
Definition VaultRecordSet.cpp:164
std::string GetParentVaultUniqueId() const noexcept
Method for getting parent vault unique id.
Definition VaultRecordSet.cpp:138
friend VaultRecord
Make VaultRecord class friend.
Definition VaultRecordSet.h:73
~VaultRecordSet() noexcept
Destructor.
Definition VaultRecordSet.cpp:550
std::vector< std::string > GetUniqueKeys() const noexcept
The method for getting the unique keys.
Definition VaultRecordSet.cpp:315
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
friend Vault
Make Vault class friend.
Definition VaultRecordSet.h:70
void Clear() noexcept
Clear VaultRecordSet.
Definition VaultRecordSet.cpp:259
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 VaultRecordSet.cpp:327
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
VaultOperationResult Join(const VaultRecordSet &a) noexcept
A method for adding all records from a to this.
Definition VaultRecordSet.cpp:383
VaultOperationResult AddRecord(const VaultRecordRef &recordRef) noexcept
Method for adding a record to VaultRecordSet.
Definition VaultRecordSet.cpp:179
bool GetIsParentVaultValid() const noexcept
Method for checking the validity of the parent Vault.
Definition VaultRecordSet.cpp:131
std::vector< std::vector< std::pair< std::string, std::string > > > ToStrings() const noexcept
Method for convert vault record set to strings.
Definition VaultRecordSet.cpp:356
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 VaultRecordSet in json.
Definition VaultRecordSet.cpp:342
VaultOperationResult GetKeyValue(const std::string &key, T &defaultKeyValue) const noexcept
The method for getting a default key value.
Definition VaultRecordSet.hpp:67
A class for requests to Vault.
Definition VaultRequest.h:16
Structure for storing the results of MVault operations.
Definition VaultOperationResult.h:44