SDK  2.1.4 [async]
CloudBackend Software Development Kit - SDK API for C++
QueryChain.h
1 /*
2  Copyright © CloudBackend AB 2020-2023.
3  */
4 
5 #ifndef INCLUDE_CBE_QUERYCHAIN_H_
6 #define INCLUDE_CBE_QUERYCHAIN_H_
7 
8 #include "cbe/delegate/JoinDelegate.h"
9 
10 #include "cbe/Types.h"
11 #include "cbe/Filter.h"
12 
13 #include <string>
14 
15 namespace CBI {
16 class QueryChain;
17 using QueryChainPtr = std::shared_ptr<CBI::QueryChain>;
18 } // namespace CBI
19 
20 namespace cbe {
21 
32 class QueryChain {
33 public:
34  using JoinDelegatePtr = delegate::JoinDelegatePtr;
59  QueryChain join(Container containerToQuery,
60  std::string key1,
61  std::string key2,
62  JoinDelegatePtr joinDelegate);
70  QueryChain join(Container containerToQuery,
71  std::string key1,
72  std::string key2,
73  Filter constraints,
74  JoinDelegatePtr joinDelegate);
83  QueryChain join(Container containerToQuery,
84  std::string key1,
85  std::string key2,
86  Container containerForResults,
87  JoinDelegatePtr joinDelegate);
95  QueryChain join(Container containerToQuery,
96  std::string key1,
97  std::string key2,
98  Filter constraints,
99  Container containerForResults,
100  JoinDelegatePtr joinDelegate);
101 
109 
111  ~QueryChain();
112 
114  // Inherit base class' constructor
115  using cbe::util::Exception::Exception;
116  };
117 
118  explicit operator bool() const;
119 private:
120  struct Impl;
121  std::shared_ptr<Impl> pImpl{};
122 
123  friend class CloudBackend;
124  friend class Container;
125  friend class QueryChainSync;
126  QueryChain(CBI::QueryChainPtr cbiPeerPtr);
127  CBI::QueryChain& getCbiPeer() const;
128 }; // class QueryChain
129 
150 class QueryChainExt : public QueryChain {
151 public:
152  using QueryChain::join; // Bring in the join()- methods from the base class
153 
170  QueryChainExt join(Container containerToQuery,
171  std::string key1,
172  std::string key2);
176  QueryChainExt join(Container containerToQuery,
177  std::string key1,
178  std::string key2,
179  Filter constraints);
183  QueryChainExt join(Container containerToQuery,
184  std::string key1,
185  std::string key2,
186  Container containerForResults);
190  QueryChainExt join(Container containerToQuery,
191  std::string key1,
192  std::string key2,
193  Filter constraints,
194  Container containerForResults);
195 private:
196  friend class CloudBackend;
197  friend class Container;
198  // Inherit base class' constructor
199  using QueryChain::QueryChain;
200 
202 }; // class QueryChainExt
203 
204 } // namespace cbe
205 
206 #endif // INCLUDE_CBE_ACCOUNT_H_
The session that holds the connection with the cloud.
Definition: CloudBackend.h:47
A collection of Item, can also represent a table or folder.
Definition: Container.h:63
Use to select Item that meets specific criterias when doing a query.
Definition: Filter.h:40
Extension of class QueryChain.
Definition: QueryChain.h:150
QueryChainExt join(Container containerToQuery, std::string key1, std::string key2, Container containerForResults)
QueryChainExt join(Container containerToQuery, std::string key1, std::string key2, Filter constraints)
QueryChainExt join(Container containerToQuery, std::string key1, std::string key2)
QueryChainExt join(Container containerToQuery, std::string key1, std::string key2, Filter constraints, Container containerForResults)
To do a search for Object combining more than one Container table.
Definition: QueryChain.h:32
QueryChain join(Container containerToQuery, std::string key1, std::string key2, Filter constraints, JoinDelegatePtr joinDelegate)
QueryChain join(Container containerToQuery, std::string key1, std::string key2, JoinDelegatePtr joinDelegate)
QueryChain join(Container containerToQuery, std::string key1, std::string key2, Filter constraints, Container containerForResults, JoinDelegatePtr joinDelegate)
QueryChain join(Container containerToQuery, std::string key1, std::string key2, Container containerForResults, JoinDelegatePtr joinDelegate)
QueryResult getQueryResult() const
resultset of data retrieved.
Definition: QueryResult.h:51
std::shared_ptr< JoinDelegate > JoinDelegatePtr
Definition: JoinDelegate.h:67
Root namespace for the CloudBackend SDK API.
Definition: Account.h:22
DefaultCtor
Default constructor marker.
Definition: Types.h:204
Definition: QueryChain.h:113
Definition: Exception.h:13