3D Repo Bouncer  1.4
repo_database_handler_abstract.h
1 
23 #pragma once
24 
25 #include <list>
26 #include <map>
27 #include <string>
28 
29 #include "../model/bson/repo_bson.h"
30 #include "../model/bson/repo_bson_role.h"
31 #include "../model/bson/repo_bson_user.h"
32 #include "../model/bson/repo_bson_collection_stats.h"
33 
34 namespace repo{
35  namespace core{
36  namespace handler {
38  public:
39 
44 
49  uint64_t documentSizeLimit() { return maxDocumentSize; };
50 
52  //* Generates a BSON object containing user credentials
53  //* @param username user name for authentication
54  //* @param password password of the user
55  //* @param pwDigested true if pw is digested
56  //* @return returns the constructed BSON object, or 0 if username is empty
57  //*/
58  //sta repo::core::model::RepoBSON* createBSONCredentials(
59  // const std::string &dbAddress,
60  // const std::string &username,
61  // const std::string &password,
62  // const bool &pwDigested = false) = 0;
63 
64  /*
65  * ------------- Database info lookup --------------
66  */
67 
75  virtual uint64_t countItemsInCollection(
76  const std::string &database,
77  const std::string &collection,
78  std::string &errMsg) = 0;
79 
93  virtual std::vector<repo::core::model::RepoBSON>
95  const std::string &database,
96  const std::string &collection,
97  const uint64_t &skip = 0,
98  const uint32_t &limit = 0,
99  const std::list<std::string> &fields = std::list<std::string>(),
100  const std::string &sortField = std::string(),
101  const int &sortOrder = -1) = 0;
102 
106  virtual std::list<std::string> getCollections(const std::string &database) = 0;
107 
116  const std::string &database,
117  const std::string &collection,
118  std::string &errMsg) = 0;
119 
125  virtual std::list<std::string> getDatabases(const bool &sorted = true) = 0;
126 
131  virtual std::map<std::string, std::list<std::string> > getDatabasesWithProjects(
132  const std::list<std::string> &databases,
133  const std::string &projectExt = "scene") = 0;
134 
141  virtual std::list<std::string> getProjects(const std::string &database, const std::string &projectExt) = 0;
142 
147  virtual std::list<std::string> getAdminDatabaseRoles() = 0;
148 
153  virtual std::list<std::string> getStandardDatabaseRoles() = 0;
154 
155  /*
156  * ------------- Database operations (insert/delete/update) --------------
157  */
158 
164  virtual void createCollection(const std::string &database, const std::string &name) = 0;
165 
174  virtual bool insertDocument(
175  const std::string &database,
176  const std::string &collection,
177  const repo::core::model::RepoBSON &obj,
178  std::string &errMsg) = 0;
179 
190  virtual bool insertRawFile(
191  const std::string &database,
192  const std::string &collection,
193  const std::string &fileName,
194  const std::vector<uint8_t> &bin,
195  std::string &errMsg,
196  const std::string &contentType = "binary/octet-stream"
197  ) = 0;
198 
205  virtual bool insertRole(
206  const repo::core::model::RepoRole &role,
207  std::string &errmsg) = 0;
208 
215  virtual bool insertUser(
216  const repo::core::model::RepoUser &user,
217  std::string &errmsg) = 0;
218 
229  virtual bool upsertDocument(
230  const std::string &database,
231  const std::string &collection,
232  const repo::core::model::RepoBSON &obj,
233  const bool &overwrite,
234  std::string &errMsg) = 0;
235 
242  virtual bool dropCollection(
243  const std::string &database,
244  const std::string &collection,
245  std::string &errMsg) = 0;
246 
252  virtual bool dropDatabase(
253  const std::string &database,
254  std::string &errMsg) = 0;
255 
263  virtual bool dropDocument(
264  const repo::core::model::RepoBSON bson,
265  const std::string &database,
266  const std::string &collection,
267  std::string &errMsg) = 0;
268 
276  virtual bool dropDocuments(
277  const repo::core::model::RepoBSON criteria,
278  const std::string &database,
279  const std::string &collection,
280  std::string &errMsg) = 0;
281 
289  virtual bool dropRawFile(
290  const std::string &database,
291  const std::string &collection,
292  const std::string &fileName,
293  std::string &errMsg) = 0;
294 
301  virtual bool dropRole(
302  const repo::core::model::RepoRole &role,
303  std::string &errmsg) = 0;
304 
311  virtual bool dropUser(
312  const repo::core::model::RepoUser &user,
313  std::string &errmsg) = 0;
314 
321  virtual bool updateRole(
322  const repo::core::model::RepoRole &role,
323  std::string &errmsg) = 0;
324 
331  virtual bool updateUser(
332  const repo::core::model::RepoUser &user,
333  std::string &errmsg) = 0;
334  /*
335  * ------------- Query operations --------------
336  */
337 
345  virtual std::vector<repo::core::model::RepoBSON> findAllByCriteria(
346  const std::string& database,
347  const std::string& collection,
348  const repo::core::model::RepoBSON& criteria) = 0;
349 
359  const std::string& database,
360  const std::string& collection,
361  const repo::core::model::RepoBSON& criteria,
362  const std::string& sortField = "") = 0;
363 
371  virtual std::vector<repo::core::model::RepoBSON> findAllByUniqueIDs(
372  const std::string& database,
373  const std::string& collection,
374  const repo::core::model::RepoBSON& uuid) = 0;
375 
386  const std::string& database,
387  const std::string& collection,
388  const repoUUID& uuid,
389  const std::string& sortField) = 0;
390 
399  const std::string& database,
400  const std::string& collection,
401  const repoUUID& uuid) = 0;
402 
410  virtual std::vector<uint8_t> getRawFile(
411  const std::string& database,
412  const std::string& collection,
413  const std::string& fname
414  ) = 0;
415 
416  protected:
421  AbstractDatabaseHandler(uint64_t size) :maxDocumentSize(size){};
422 
423  const uint64_t maxDocumentSize;
424  };
425  }
426  }
427 }
virtual repo::core::model::RepoBSON findOneBySharedID(const std::string &database, const std::string &collection, const repoUUID &uuid, const std::string &sortField)=0
virtual repo::core::model::CollectionStats getCollectionStats(const std::string &database, const std::string &collection, std::string &errMsg)=0
virtual bool dropRole(const repo::core::model::RepoRole &role, std::string &errmsg)=0
Definition: repo_bson_collection_stats.h:30
virtual std::list< std::string > getAdminDatabaseRoles()=0
virtual uint64_t countItemsInCollection(const std::string &database, const std::string &collection, std::string &errMsg)=0
virtual bool insertRole(const repo::core::model::RepoRole &role, std::string &errmsg)=0
virtual bool insertUser(const repo::core::model::RepoUser &user, std::string &errmsg)=0
virtual void createCollection(const std::string &database, const std::string &name)=0
Definition: repo_connection_pool_mongo.h:32
virtual std::map< std::string, std::list< std::string > > getDatabasesWithProjects(const std::list< std::string > &databases, const std::string &projectExt="scene")=0
virtual std::list< std::string > getStandardDatabaseRoles()=0
virtual repo::core::model::RepoBSON findOneByUniqueID(const std::string &database, const std::string &collection, const repoUUID &uuid)=0
virtual bool upsertDocument(const std::string &database, const std::string &collection, const repo::core::model::RepoBSON &obj, const bool &overwrite, std::string &errMsg)=0
virtual repo::core::model::RepoBSON findOneByCriteria(const std::string &database, const std::string &collection, const repo::core::model::RepoBSON &criteria, const std::string &sortField="")=0
virtual std::vector< repo::core::model::RepoBSON > getAllFromCollectionTailable(const std::string &database, const std::string &collection, const uint64_t &skip=0, const uint32_t &limit=0, const std::list< std::string > &fields=std::list< std::string >(), const std::string &sortField=std::string(), const int &sortOrder=-1)=0
Definition: repo_database_handler_abstract.h:37
virtual std::vector< repo::core::model::RepoBSON > findAllByCriteria(const std::string &database, const std::string &collection, const repo::core::model::RepoBSON &criteria)=0
virtual bool updateRole(const repo::core::model::RepoRole &role, std::string &errmsg)=0
virtual std::list< std::string > getProjects(const std::string &database, const std::string &projectExt)=0
virtual bool dropDatabase(const std::string &database, std::string &errMsg)=0
virtual bool dropDocument(const repo::core::model::RepoBSON bson, const std::string &database, const std::string &collection, std::string &errMsg)=0
virtual std::vector< uint8_t > getRawFile(const std::string &database, const std::string &collection, const std::string &fname)=0
virtual ~AbstractDatabaseHandler()
Definition: repo_database_handler_abstract.h:43
virtual bool dropRawFile(const std::string &database, const std::string &collection, const std::string &fileName, std::string &errMsg)=0
virtual bool dropDocuments(const repo::core::model::RepoBSON criteria, const std::string &database, const std::string &collection, std::string &errMsg)=0
virtual bool dropUser(const repo::core::model::RepoUser &user, std::string &errmsg)=0
uint64_t documentSizeLimit()
Definition: repo_database_handler_abstract.h:49
Definition: repo_bson.h:53
virtual bool insertRawFile(const std::string &database, const std::string &collection, const std::string &fileName, const std::vector< uint8_t > &bin, std::string &errMsg, const std::string &contentType="binary/octet-stream")=0
virtual bool insertDocument(const std::string &database, const std::string &collection, const repo::core::model::RepoBSON &obj, std::string &errMsg)=0
AbstractDatabaseHandler(uint64_t size)
Definition: repo_database_handler_abstract.h:421
virtual std::list< std::string > getDatabases(const bool &sorted=true)=0
Definition: repo_bson_role.h:45
virtual bool updateUser(const repo::core::model::RepoUser &user, std::string &errmsg)=0
virtual std::vector< repo::core::model::RepoBSON > findAllByUniqueIDs(const std::string &database, const std::string &collection, const repo::core::model::RepoBSON &uuid)=0
Definition: repo_bson_user.h:69
virtual bool dropCollection(const std::string &database, const std::string &collection, std::string &errMsg)=0
virtual std::list< std::string > getCollections(const std::string &database)=0