C++  1.4.6
CloudBackend Software Development Kit - SDK API for C++
GroupFilter.h
1 /*
2  Copyright © CloudBackend AB 2020 - 2022..
3 */
4 
5 #ifndef INCLUDE_CBE_GROUPFILTER_H_
6 #define INCLUDE_CBE_GROUPFILTER_H_
7 
8 #include <string>
9 #include <map>
10 
11 #include "CBE/Types.h"
12 #include <vector>
13 
14 
15 namespace CBE {
16 
17  class GroupFilter {
18 
19  public:
20 
22  std::string getQuery() const;
23  std::string getFilter() const;
24 
26  bool getAscending() const;
27  bool getDeleted() const;
28  bool getPublicFirst() const;
29 
31  uint32_t getOffset() const;
32 
34  uint32_t getCount() const;
35 
39  std::string getOrder() const;
40 
42  CBE::FilterOrder getGroupOrder() const;
43 
47  void setQuery(std::string);
48 
52  void setFilter(std::string);
53 
55  void setAscending(bool);
56 
60  void setDeleted(bool);
61 
65  void setOffset(uint32_t);
66 
70  void setCount(uint32_t);
71 
73  void setGroupOrder(FilterOrder o);
74 
75 
76 
77  // Used Internally, do not use or change.
78  bool matchesGroupId(uint64_t id);
79  bool matchesQuery(uint64_t parentId, CBE::application_t type, bool isDeleted);
80  bool matchesQuery(CBE::GroupPtr group);
81  bool equals(GroupFilter filter);
82  void updateCompareValue();
83  std::string order() const;
84  void order(std::string o);
85 
86  protected:
87 
91  static std::vector<std::string> _approvedOrder;
92  std::map<FilterOrder, std::string> orderStrings = {
93  { FilterOrder::Title, "title"},
94  { FilterOrder::Published, "published"},
95  { FilterOrder::Updated, "updated"},
96  { FilterOrder::Length, "length"},
97  { FilterOrder::S1, "s1"},
98  { FilterOrder::S2, "s2"},
99  { FilterOrder::S3, "s3"},
100  { FilterOrder::S4, "s4"}
101  };
102  uint32_t offset;
103  uint32_t count;
104  bool ascending;
105  bool deleted;
106  bool publicFirst;
107  std::string query;
108  std::string _order;
109  std::string _compareValue{""};
110  std::string filter{""};
111  bool bypassCache{false};
112  void parseQueryString();
113  CBE::application_t applicationType{CBE::ApplicationType::Open};
114 
115  struct Term {
116  std::string modifier{""};
117  std::string prefix{""};
118  std::string str{""};
119  };
120 
121  std::vector<Term> _parsedQueryString = {};
122  std::vector<CBE::group_id_t> _groupIds = {};
123 
124 
125  };
126 }
127 
128 #endif // INCLUDE_CBE_GROUPFILTER_H_
CBE::GroupFilter::getQuery
std::string getQuery() const
CBE::GroupFilter::getOffset
uint32_t getOffset() const
CBE::GroupFilter::setDeleted
void setDeleted(bool)
CBE::GroupFilter::Term
Definition: GroupFilter.h:115
CBE::GroupFilter::getGroupOrder
CBE::FilterOrder getGroupOrder() const
CBE::GroupFilter
Definition: GroupFilter.h:17
CBE::GroupFilter::getOrder
std::string getOrder() const
CBE::GroupFilter::setQuery
void setQuery(std::string)
CBE::GroupFilter::setCount
void setCount(uint32_t)
CBE::GroupFilter::getAscending
bool getAscending() const
CBE::GroupFilter::setGroupOrder
void setGroupOrder(FilterOrder o)
CBE::GroupFilter::setOffset
void setOffset(uint32_t)
CBE::GroupFilter::setAscending
void setAscending(bool)
CBE::GroupFilter::_approvedOrder
static std::vector< std::string > _approvedOrder
Definition: GroupFilter.h:91
CBE::GroupFilter::getCount
uint32_t getCount() const
CBE::GroupFilter::setFilter
void setFilter(std::string)