ImagingTools Core SDK
CDatabaseConnectorComp.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
5// ACF includes
6#include <ilog/TLoggerCompWrap.h>
7
8// ImtCore includes
9#include <imtdb/IDatabaseEngine.h>
10#include <imtdb/IDatabaseConnector.h>
11
12
13namespace imtdb
14{
15
16
17// PostgresDatabaseConnector
18class CDatabaseConnectorComp:
19 public ilog::CLoggerComponentBase,
20 virtual public imtdb::IDatabaseConnector
21{
22public:
23 typedef ilog::CLoggerComponentBase BaseClass;
24
25 I_BEGIN_COMPONENT(CDatabaseConnectorComp)
26 I_REGISTER_INTERFACE(imtdb::IDatabaseConnector);
27 I_ASSIGN(m_databaseEngineCompPtr, "DatabaseEngine", "Database engine", true, "DatabaseEngine");
28 I_ASSIGN(m_databaseLoginSettingsCompPtr, "RemoteDatabaseLoginSettings", "Remote database login settings", true, "RemoteDatabaseLoginSettings");
29 I_ASSIGN(m_serverNameAttrPtr, "ServerName", "Server name", false, "ServerName");
30 I_ASSIGN(m_schemaNameAttrPtr, "SchemaName", "Schema name", false, "public");
31 I_ASSIGN_MULTI_0(m_tableNamesAttrPtr, "TableNames", "Table names which we want to import (if count = 0, then we import all the tables)", false);
32 I_END_COMPONENT
33
34protected:
35 // reimplemented (imtdb::IDatabaseConnector)
36 virtual bool ConnectToDatabase(const IDatabaseLoginSettings& loginSettings) const override;
37 virtual bool DisconnectFromDatabase(const QString& connectionName) const override;
38
39 // reimplemented (icomp::CComponentBase)
40 virtual void OnComponentCreated() override;
41 virtual void OnComponentDestroyed() override;
42
43protected:
44 I_REF(imtdb::IDatabaseEngine, m_databaseEngineCompPtr);
45 I_REF(imtdb::IDatabaseLoginSettings, m_databaseLoginSettingsCompPtr);
46 I_ATTR(QString, m_serverNameAttrPtr);
47 I_ATTR(QString, m_schemaNameAttrPtr);
48 I_MULTIATTR(QString, m_tableNamesAttrPtr);
49};
50
51
52} // namespace imtdb
53
Manages database connection lifecycle for remote database servers.
Core database engine interface for low-level SQL execution and transaction management.
Configuration interface for database connection credentials and parameters.
Database Abstraction Layer (ORM Framework) for ImtCore applications.