ImagingTools Core SDK
IMongoDatabaseObjectDelegate.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4// mongocxx includes
5#include <bsoncxx/json.hpp>
6#include <bsoncxx/document/view_or_value.hpp>
7
8// ImtCore includes
9#include <imtbase/IMetaInfoCreator.h>
10#include <imtdb/IDatabaseObjectDelegate.h>
11
12
13namespace imtmongo
14{
15
16
20class IMongoDatabaseObjectDelegate: virtual public istd::IPolymorphic
21{
22public:
26 virtual const iprm::IOptionsList* GetObjectTypeInfos() const = 0;
27
31 virtual QByteArray GetObjectTypeId(const QByteArray& objectId) const = 0;
32
36 virtual bsoncxx::document::view_or_value GetCountQuery(const iprm::IParamsSet* paramsPtr = nullptr) const = 0;
37
45 virtual bsoncxx::document::view_or_value GetSelectionQuery(
46 const QByteArray& objectId = QByteArray(),
47 int offset = 0,
48 int count = -1,
49 const iprm::IParamsSet* paramsPtr = nullptr) const = 0;
50
54 virtual bsoncxx::document::view_or_value CreateNewObjectQuery(
55 const QByteArray& typeId,
56 const QByteArray& proposedObjectId,
57 const QString& objectName,
58 const QString& objectDescription,
59 const istd::IChangeable* valuePtr) const = 0;
60
64 virtual bsoncxx::document::view_or_value CreateDeleteObjectQuery(
65 const QByteArray& objectId) const = 0;
66
70 virtual bsoncxx::document::view_or_value CreateUpdateObjectQuery(
71 const QByteArray& objectId,
72 const istd::IChangeable& object,
73 bool useExternDelegate = true) const = 0;
74
75
76 virtual bsoncxx::document::view_or_value CreateResetQuery(const imtbase::IObjectCollection& collection) const = 0;
77
81 virtual bsoncxx::document::view_or_value CreateDataMetaInfoQuery(
82 const imtbase::IObjectCollection& collection,
83 const QByteArray& objectId,
84 const idoc::IDocumentMetaInfo* dataMetaInfoPtr) const = 0;
85
89 virtual bsoncxx::document::view_or_value CreateCollectionItemMetaInfoQuery(
90 const imtbase::IObjectCollection& collection,
91 const QByteArray& objectId,
92 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr) const = 0;
93
97 virtual QByteArray GetObjectIdFromRecord(const bsoncxx::document::view& doc) const = 0;
98
103 const bsoncxx::document::view& doc,
104 idoc::MetaInfoPtr& objectMetaInfoPtr,
105 idoc::MetaInfoPtr& collectionItemMetaInfoPtr) const = 0;
106
110 virtual istd::IChangeable* CreateObjectFromRecord(const bsoncxx::document::view& doc) const = 0;
111
115 virtual QVariant GetElementInfoFromRecord(const bsoncxx::document::view& doc, const QString& infoId) const = 0;
116
117
118 virtual QByteArray GetObjectIdFromMongoId(QByteArray mid) const = 0;
119
120 virtual QString GetTableName() const = 0;
121
122};
123
124
125} // namespace imtmongo
126
127
virtual bsoncxx::document::view_or_value GetSelectionQuery(const QByteArray &objectId=QByteArray(), int offset=0, int count=-1, const iprm::IParamsSet *paramsPtr=nullptr) const =0
virtual QVariant GetElementInfoFromRecord(const bsoncxx::document::view &doc, const QString &infoId) const =0
virtual bsoncxx::document::view_or_value CreateDeleteObjectQuery(const QByteArray &objectId) const =0
virtual bsoncxx::document::view_or_value CreateCollectionItemMetaInfoQuery(const imtbase::IObjectCollection &collection, const QByteArray &objectId, const idoc::IDocumentMetaInfo *collectionItemMetaInfoPtr) const =0
virtual const iprm::IOptionsList * GetObjectTypeInfos() const =0
virtual QByteArray GetObjectIdFromRecord(const bsoncxx::document::view &doc) const =0
virtual bsoncxx::document::view_or_value CreateNewObjectQuery(const QByteArray &typeId, const QByteArray &proposedObjectId, const QString &objectName, const QString &objectDescription, const istd::IChangeable *valuePtr) const =0
virtual QByteArray GetObjectTypeId(const QByteArray &objectId) const =0
virtual bool CreateObjectInfoFromRecord(const bsoncxx::document::view &doc, idoc::MetaInfoPtr &objectMetaInfoPtr, idoc::MetaInfoPtr &collectionItemMetaInfoPtr) const =0
virtual istd::IChangeable * CreateObjectFromRecord(const bsoncxx::document::view &doc) const =0
virtual bsoncxx::document::view_or_value CreateUpdateObjectQuery(const QByteArray &objectId, const istd::IChangeable &object, bool useExternDelegate=true) const =0
virtual bsoncxx::document::view_or_value GetCountQuery(const iprm::IParamsSet *paramsPtr=nullptr) const =0
virtual bsoncxx::document::view_or_value CreateDataMetaInfoQuery(const imtbase::IObjectCollection &collection, const QByteArray &objectId, const idoc::IDocumentMetaInfo *dataMetaInfoPtr) const =0