6#include <ilog/TLoggerCompWrap.h>
7#include <iprm/IOptionsList.h>
10#include <imtbase/ICollectionFilter.h>
11#include <imtmongo/IMongoDatabaseObjectDelegate.h>
12#include <imtmongo/IMongoDatabaseEngine.h>
19class CMongoDatabaseObjectDelegateCompBase:
20 public ilog::CLoggerComponentBase,
24 typedef ilog::CLoggerComponentBase BaseClass;
26 I_BEGIN_BASE_COMPONENT(CMongoDatabaseObjectDelegateCompBase)
28 I_ASSIGN(m_typesCompPtr,
"ObjectTypes",
"List of object types supported by the related database collection",
false,
"ObjectTypes");
29 I_ASSIGN(m_databaseEngineCompPtr,
"DatabaseEngine",
"Database engine for SQL queries",
true,
"DatabaseEngine");
30 I_ASSIGN(m_tableNameAttrPtr,
"TableName",
"Name of the object table",
true,
"");
31 I_ASSIGN(m_objectIdColumnAttrPtr,
"ObjectIdColumn",
"Name of the column containing ID of the object",
true,
"Id");
32 I_ASSIGN(m_objectTypeIdColumnAttrPtr,
"ObjectTypeIdColumn",
"Name of the column containing type-ID of the object",
true,
"TypeId");
33 I_ASSIGN(m_separatorObjectIdAttrPtr,
"SeparatorObjectId",
"Separator of the object ID",
false,
"SeparatorObjectId");
37 virtual const iprm::IOptionsList* GetObjectTypeInfos()
const override;
39 virtual QByteArray GetObjectTypeId(
const QByteArray& objectId)
const override;
41 virtual bsoncxx::document::view_or_value GetCountQuery(
const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
43 virtual bsoncxx::document::view_or_value GetSelectionQuery(
44 const QByteArray& objectId = QByteArray(),
47 const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
49 virtual bsoncxx::document::view_or_value CreateNewObjectQuery(
50 const QByteArray& typeId,
51 const QByteArray& proposedObjectId,
52 const QString& objectName,
53 const QString& objectDescription,
54 const istd::IChangeable* valuePtr)
const = 0;
56 virtual bsoncxx::document::view_or_value CreateDeleteObjectQuery(
57 const QByteArray& objectId)
const = 0;
59 virtual bsoncxx::document::view_or_value CreateUpdateObjectQuery(
60 const QByteArray& objectId,
61 const istd::IChangeable&
object,
62 bool useExternDelegate =
true)
const = 0;
66 virtual bsoncxx::document::view_or_value CreateDataMetaInfoQuery(
68 const QByteArray& objectId,
69 const idoc::IDocumentMetaInfo* dataMetaInfoPtr)
const override;
71 virtual bsoncxx::document::view_or_value CreateCollectionItemMetaInfoQuery(
73 const QByteArray& objectId,
74 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr)
const override;
76 virtual QByteArray GetObjectIdFromRecord(
const bsoncxx::document::view& doc)
const override;
78 virtual bool CreateObjectInfoFromRecord(
79 const bsoncxx::document::view& doc,
80 idoc::MetaInfoPtr& objectMetaInfoPtr,
81 idoc::MetaInfoPtr& collectionItemMetaInfoPtr)
const override;
83 virtual istd::IChangeableUniquePtr CreateObjectFromRecord(
const bsoncxx::document::view& doc)
const override;
84 virtual QVariant GetElementInfoFromRecord(
const bsoncxx::document::view& doc,
const QString& infoId)
const override;
86 virtual QByteArray GetObjectIdFromMongoId(QByteArray mid)
const override;
88 virtual QString GetTableName()
const override;
91 virtual QString GetBaseSelectionQuery()
const;
92 virtual idoc::IDocumentMetaInfo* CreateCollectionItemMetaInfo(
const QByteArray& typeId)
const;
93 virtual idoc::MetaInfoPtr CreateObjectMetaInfo(
const QByteArray& typeId)
const;
94 virtual bool CreatePaginationQuery(
int offset,
int count, QByteArray& paginationQuery)
const;
95 virtual bool CreateFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const;
96 virtual bool CreateObjectFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const;
102 I_REF(iprm::IOptionsList, m_typesCompPtr);
103 I_ATTR(QByteArray, m_tableNameAttrPtr);
104 I_ATTR(QByteArray, m_separatorObjectIdAttrPtr);
105 I_ATTR(QByteArray, m_objectIdColumnAttrPtr);
106 I_ATTR(QByteArray, m_objectTypeIdColumnAttrPtr);