3D Repo Bouncer  1.4
repo_manipulator.h
1 
22 #pragma once
23 #include <map>
24 #include <string>
25 
26 #include "../core/model/bson/repo_bson_role_settings.h"
27 #include "../core/model/bson/repo_node_map.h"
28 #include "../core/model/bson/repo_node_reference.h"
29 #include "../core/model/bson/repo_node_transformation.h"
30 #include "../core/model/collection/repo_scene.h"
31 #include "diff/repo_diff_abstract.h"
32 #include "modelconvertor/export/repo_model_export_web.h"
33 #include "modelconvertor/import/repo_model_import_config.h"
34 #include "modelutility/spatialpartitioning/repo_spatial_partitioner_abstract.h"
35 
36 namespace repo{
37  namespace manipulator{
39  {
40  public:
42  ~RepoManipulator();
43 
51  void cleanUp(
52  const std::string &databaseAd,
53  const repo::core::model::RepoBSON *cred,
54  const std::string &dbName,
55  const std::string &projectName
56  );
57 
71  std::string &errMsg,
72  const std::string &address,
73  const uint32_t &port,
74  const uint32_t &maxConnections,
75  const std::string &dbName,
76  const std::string &username,
77  const std::string &password,
78  const bool &pwDigested = false
79  );
80 
92  std::string &errMsg,
93  const std::string &address,
94  const uint32_t &port,
95  const uint32_t &maxConnections,
96  const std::string &dbName,
97  const repo::core::model::RepoBSON *credentials
98  );
99 
112  std::string &errMsg,
113  const std::string &address,
114  const uint32_t &port,
115  const uint32_t &maxConnections,
116  const std::string &username,
117  const std::string &password,
118  const bool &pwDigested = false
119  );
120 
128  bool commitScene(
129  const std::string &databaseAd,
130  const repo::core::model::RepoBSON *cred,
132  const std::string &owner = "",
133  const std::string &tag = "",
134  const std::string &desc = "");
135 
145  void compareScenes(
148  repo_diff_result_t &baseResults,
149  repo_diff_result_t &compResults,
150  const repo::DiffMode &diffMode,
152  = repo::core::model::RepoScene::GraphType::DEFAULT);
153 
163  const std::string &databaseAd,
164  const std::string &username,
165  const std::string &password,
166  const bool &pwDigested);
167 
174  const std::map<repo::core::model::TransformationNode, repo::core::model::ReferenceNode> &fedMap);
175 
182  const repo::core::model::MapNode &mapNode);
183 
192  uint64_t countItemsInCollection(
193  const std::string &databaseAd,
194  const repo::core::model::RepoBSON *cred,
195  const std::string &database,
196  const std::string &collection,
197  std::string &errMsg
198  );
199 
204  void disconnectFromDatabase(const std::string &databaseAd);
205 
215  bool dropCollection(
216  const std::string &databaseAd,
217  const repo::core::model::RepoBSON *cred,
218  const std::string &databaseName,
219  const std::string &collectionName,
220  std::string &errMsg
221  );
222 
231  bool dropDatabase(
232  const std::string &databaseAd,
233  const repo::core::model::RepoBSON *cred,
234  const std::string &databaseName,
235  std::string &errMsg
236  );
237 
244  std::list<std::string> fetchDatabases(
245  const std::string &databaseAd,
246  const repo::core::model::RepoBSON *cred
247  );
248 
256  std::list<std::string> fetchCollections(
257  const std::string &databaseAd,
258  const repo::core::model::RepoBSON *cred,
259  const std::string &database
260  );
261 
276  const std::string &databaseAd,
277  const repo::core::model::RepoBSON *cred,
278  const std::string &database,
279  const std::string &collection,
280  const repoUUID &uuid,
281  const bool &headRevision = false,
282  const bool &lightFetch = false);
283 
291  void fetchScene(
292  const std::string &databaseAd,
293  const repo::core::model::RepoBSON *cred,
295 
306  const std::string &databaseAd,
307  const repo::core::model::RepoBSON *cred,
309  );
310 
321  const std::string &databaseAd,
322  const repo::core::model::RepoBSON *cred,
324  );
325 
337  const std::string &databaseAd,
338  const repo::core::model::RepoBSON *cred,
340  repo_web_buffers_t &buffers,
341  const modelconvertor::WebExportType &exType);
342 
353  const std::string &databaseAd,
354  const repo::core::model::RepoBSON *cred,
356 
366  const std::string &databaseAd,
367  const repo::core::model::RepoBSON *cred,
369 
378 
387 
394  bool generateStashGraph(
396  );
409  std::vector<repo::core::model::RepoBSON>
411  const std::string &databaseAd,
412  const repo::core::model::RepoBSON *cred,
413  const std::string &database,
414  const std::string &collection,
415  const uint64_t &skip = 0,
416  const uint32_t &limit = 0);
417 
433  std::vector<repo::core::model::RepoBSON>
435  const std::string &databaseAd,
436  const repo::core::model::RepoBSON *cred,
437  const std::string &database,
438  const std::string &collection,
439  const std::list<std::string> &fields,
440  const std::string &sortField = std::string(),
441  const int &sortOrder = -1,
442  const uint64_t &skip = 0,
443  const uint32_t &limit = 0);
444 
455  const std::string &databaseAd,
456  const repo::core::model::RepoBSON *cred,
457  const std::string &database,
458  const std::string &collection,
459  std::string &errMsg
460  );
461 
469  std::map<std::string, std::list<std::string>>
471  const std::string &databaseAd,
472  const repo::core::model::RepoBSON *cred,
473  const std::list<std::string> &databases);
474 
480  std::list<std::string> getAdminDatabaseRoles(
481  const std::string &databaseAd);
482 
491  const std::string &databaseAd,
492  const repo::core::model::RepoBSON *cred,
493  const std::string &database,
494  const std::string &uniqueRoleName
495  );
496 
502  std::shared_ptr<repo_partitioning_tree_t> getScenePartitioning(
503  const repo::core::model::RepoScene *scene,
504  const uint32_t &maxDepth = 8
505  );
506 
512  std::list<std::string> getStandardDatabaseRoles(
513  const std::string &databaseAd);
514 
522  std::string getNameOfAdminDatabase(
523  const std::string &databaseAd) const;
524 
525  bool hasCollection(
526  const std::string &databaseAd,
527  const repo::core::model::RepoBSON *cred,
528  const std::string &dbName,
529  const std::string &project);
530 
538  bool hasDatabase(
539  const std::string &databaseAd,
540  const repo::core::model::RepoBSON *cred,
541  const std::string &dbName);
542 
553  const std::string &databaseAd,
554  const repo::core::model::RepoBSON *cred,
555  const std::string &database,
556  const std::string &collection,
557  const std::string &name,
558  const std::vector<uint8_t> &rawData,
559  const std::string &mimeType = "");
560 
567  void insertRole(
568  const std::string &databaseAd,
569  const repo::core::model::RepoBSON *cred,
570  const repo::core::model::RepoRole &role);
571 
578  void insertUser(
579  const std::string &databaseAd,
580  const repo::core::model::RepoBSON *cred,
581  const repo::core::model::RepoUser &user);
582 
589  repo::core::model::RepoNodeSet
591  const std::string &filePath,
592  const char &delimiter = ',');
593 
605  const std::string &filePath,
606  std::string &msg,
607  const bool &applyReduction = true,
608  const bool &rotateModel = false,
610 
621  void removeDocument(
622  const std::string &databaseAd,
623  const repo::core::model::RepoBSON *cred,
624  const std::string &databaseName,
625  const std::string &collectionName,
626  const repo::core::model::RepoBSON &bson);
627 
641  bool removeProject(
642  const std::string &databaseAd,
643  const repo::core::model::RepoBSON *cred,
644  const std::string &databaseName,
645  const std::string &projectName,
646  std::string &errMsg
647  );
648 
658  = repo::core::model::RepoScene::GraphType::DEFAULT);
659 
669  const std::string &databaseAd,
670  const repo::core::model::RepoBSON *cred,
672  );
673 
680  void removeRole(
681  const std::string &databaseAd,
682  const repo::core::model::RepoBSON *cred,
683  const repo::core::model::RepoRole &role);
684 
691  void removeUser(
692  const std::string &databaseAd,
693  const repo::core::model::RepoBSON *cred,
694  const repo::core::model::RepoUser &user);
695 
703  void saveOriginalFiles(
704  const std::string &databaseAd,
705  const repo::core::model::RepoBSON *cred,
706  const repo::core::model::RepoScene *scene,
707  const std::string &directory);
708 
717  void saveOriginalFiles(
718  const std::string &databaseAd,
719  const repo::core::model::RepoBSON *cred,
720  const std::string &database,
721  const std::string &project,
722  const std::string &directory);
723 
730  bool saveSceneToFile(
731  const std::string &filePath,
732  const repo::core::model::RepoScene* scene);
733 
740  void updateRole(
741  const std::string &databaseAd,
742  const repo::core::model::RepoBSON *cred,
743  const repo::core::model::RepoRole &role);
744 
751  void updateUser(
752  const std::string &databaseAd,
753  const repo::core::model::RepoBSON *cred,
754  const repo::core::model::RepoUser &user);
765  void upsertDocument(
766  const std::string &databaseAd,
767  const repo::core::model::RepoBSON *cred,
768  const std::string &databaseName,
769  const std::string &collectionName,
770  const repo::core::model::RepoBSON &bson);
771 
772  private:
773 
783  const std::string &databaseAd,
784  const repo::core::model::RepoBSON *cred,
785  const std::string &dbName,
786  const std::string &roleName
787  );
788 
798  const std::string &databaseAd,
799  const repo::core::model::RepoBSON *cred,
800  const std::string &username
801  );
802  };
803  }
804 }
void disconnectFromDatabase(const std::string &databaseAd)
Definition: repo_manipulator.cpp:329
std::map< std::string, std::list< std::string > > getDatabasesWithProjects(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::list< std::string > &databases)
Definition: repo_manipulator.cpp:627
repo::core::model::RepoRoleSettings getRoleSettingByName(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &uniqueRoleName)
Definition: repo_manipulator.cpp:654
Definition: repo_bson_collection_stats.h:30
bool generateAndCommitSelectionTree(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:498
bool connectAndAuthenticateWithAdmin(std::string &errMsg, const std::string &address, const uint32_t &port, const uint32_t &maxConnections, const std::string &username, const std::string &password, const bool &pwDigested=false)
Definition: repo_manipulator.cpp:105
Definition: repo_node_map.h:27
std::list< std::string > fetchDatabases(const std::string &databaseAd, const repo::core::model::RepoBSON *cred)
Definition: repo_manipulator.cpp:372
std::string getNameOfAdminDatabase(const std::string &databaseAd) const
Definition: repo_manipulator.cpp:695
void insertRole(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoRole &role)
Definition: repo_manipulator.cpp:836
std::list< std::string > fetchCollections(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database)
Definition: repo_manipulator.cpp:386
void updateUser(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoUser &user)
Definition: repo_manipulator.cpp:1125
std::vector< repo::core::model::RepoBSON > getAllFromCollectionTailable(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &collection, const uint64_t &skip=0, const uint32_t &limit=0)
Definition: repo_manipulator.cpp:574
repo::core::model::RepoNodeSet loadMetadataFromFile(const std::string &filePath, const char &delimiter= ',')
Definition: repo_manipulator.cpp:704
repo_web_buffers_t generateGLTFBuffer(repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:555
Definition: repo_connection_pool_mongo.h:32
bool removeProject(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &databaseName, const std::string &projectName, std::string &errMsg)
Definition: repo_manipulator.cpp:925
bool dropCollection(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &databaseName, const std::string &collectionName, std::string &errMsg)
Definition: repo_manipulator.cpp:335
repo::core::model::RepoScene * createMapScene(const repo::core::model::MapNode &mapNode)
Definition: repo_manipulator.cpp:169
void upsertDocument(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &databaseName, const std::string &collectionName, const repo::core::model::RepoBSON &bson)
Definition: repo_manipulator.cpp:1146
std::list< std::string > getStandardDatabaseRoles(const std::string &databaseAd)
Definition: repo_manipulator.cpp:682
bool generateStashGraph(repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:522
void saveOriginalFiles(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoScene *scene, const std::string &directory)
Definition: repo_manipulator.cpp:1024
repo::core::model::RepoScene * createFederatedScene(const std::map< repo::core::model::TransformationNode, repo::core::model::ReferenceNode > &fedMap)
Definition: repo_manipulator.cpp:137
void cleanUp(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &dbName, const std::string &projectName)
Definition: repo_manipulator.cpp:51
Definition: repo_scene.h:44
Definition: repo_structs.h:77
bool saveSceneToFile(const std::string &filePath, const repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:1095
repo_web_buffers_t generateSRCBuffer(repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:564
repo::core::model::RepoScene * fetchScene(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &collection, const repoUUID &uuid, const bool &headRevision=false, const bool &lightFetch=false)
Definition: repo_manipulator.cpp:401
repo::core::model::CollectionStats getCollectionStats(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &collection, std::string &errMsg)
Definition: repo_manipulator.cpp:610
bool hasDatabase(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &dbName)
Definition: repo_manipulator.cpp:801
void insertUser(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoUser &user)
Definition: repo_manipulator.cpp:857
bool commitScene(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene, const std::string &owner="", const std::string &tag="", const std::string &desc="")
Definition: repo_manipulator.cpp:192
bool generateAndCommitStashGraph(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:530
uint64_t countItemsInCollection(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &collection, std::string &errMsg)
Definition: repo_manipulator.cpp:312
bool connectAndAuthenticate(std::string &errMsg, const std::string &address, const uint32_t &port, const uint32_t &maxConnections, const std::string &dbName, const std::string &username, const std::string &password, const bool &pwDigested=false)
Definition: repo_manipulator.cpp:71
bool removeStashGraphFromDatabase(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:510
repo::core::model::RepoScene * loadSceneFromFile(const std::string &filePath, std::string &msg, const bool &applyReduction=true, const bool &rotateModel=false, const repo::manipulator::modelconvertor::ModelImportConfig *config=nullptr)
Definition: repo_manipulator.cpp:715
void compareScenes(repo::core::model::RepoScene *base, repo::core::model::RepoScene *compare, repo_diff_result_t &baseResults, repo_diff_result_t &compResults, const repo::DiffMode &diffMode, const repo::core::model::RepoScene::GraphType &gType=repo::core::model::RepoScene::GraphType::DEFAULT)
Definition: repo_manipulator.cpp:268
Definition: repo_bson_role_settings.h:30
bool generateAndCommitSRCBuffer(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:488
Definition: repo_bson.h:53
void removeRole(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoRole &role)
Definition: repo_manipulator.cpp:982
repo::core::model::RepoBSON * createCredBSON(const std::string &databaseAd, const std::string &username, const std::string &password, const bool &pwDigested)
Definition: repo_manipulator.cpp:125
std::list< std::string > getAdminDatabaseRoles(const std::string &databaseAd)
Definition: repo_manipulator.cpp:641
Definition: repo_bson_role.h:45
std::shared_ptr< repo_partitioning_tree_t > getScenePartitioning(const repo::core::model::RepoScene *scene, const uint32_t &maxDepth=8)
Definition: repo_manipulator.cpp:673
void updateRole(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoRole &role)
Definition: repo_manipulator.cpp:1103
void removeDocument(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &databaseName, const std::string &collectionName, const repo::core::model::RepoBSON &bson)
Definition: repo_manipulator.cpp:902
Definition: repo_model_import_config.h:33
bool dropDatabase(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &databaseName, std::string &errMsg)
Definition: repo_manipulator.cpp:354
bool generateAndCommitGLTFBuffer(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene)
Definition: repo_manipulator.cpp:478
void removeUser(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const repo::core::model::RepoUser &user)
Definition: repo_manipulator.cpp:1003
void insertBinaryFileToDatabase(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, const std::string &database, const std::string &collection, const std::string &name, const std::vector< uint8_t > &rawData, const std::string &mimeType="")
Definition: repo_manipulator.cpp:811
void reduceTransformations(repo::core::model::RepoScene *scene, const repo::core::model::RepoScene::GraphType &gType=repo::core::model::RepoScene::GraphType::DEFAULT)
Definition: repo_manipulator.cpp:878
Definition: repo_structs.h:25
Definition: repo_bson_user.h:69
GraphType
Definition: repo_scene.h:75
bool generateAndCommitWebViewBuffer(const std::string &databaseAd, const repo::core::model::RepoBSON *cred, repo::core::model::RepoScene *scene, repo_web_buffers_t &buffers, const modelconvertor::WebExportType &exType)
Definition: repo_manipulator.cpp:542
Definition: repo_manipulator.h:38