ImagingTools Core SDK
CSqlDatabaseTransactionManagerComp.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 <icomp/CComponentBase.h>
7
8// ImtCore includes
9#include <imtbase/ITransactionManager.h>
10#include <imtdb/ISqlDatabaseObjectCollection.h>
11#include <imtdb/IDatabaseEngine.h>
12
13
14namespace imtdb
15{
16
17
18class CSqlDatabaseTransactionManagerComp: public icomp::CComponentBase, virtual public imtbase::ITransactionManager
19{
20public:
21 typedef icomp::CComponentBase BaseClass;
22
23 I_BEGIN_COMPONENT(CSqlDatabaseTransactionManagerComp);
24 I_REGISTER_INTERFACE(imtbase::ITransactionManager);
25 I_ASSIGN_MULTI_0(m_collectionCompPtr, "SqlDatabaseObjectCollection", "Sql database collections to disable their own transaction mechanism", false);
26 I_ASSIGN(m_databaseEngineCompPtr, "DatabaseEngine", "Database engine", false, "DatabaseEngine");
27 I_END_COMPONENT;
28
29 // reimplemented (imtbase::ITransactionManager)
30 virtual bool StartTransaction() override;
31 virtual bool CancelTransaction() override;
32 virtual bool EndTransaction() override;
33
34private:
35 bool IsCollectionsInOneDatabase() const;
36
37private:
38 I_MULTIREF(imtdb::ISqlDatabaseObjectCollection, m_collectionCompPtr);
39 I_REF(imtdb::IDatabaseEngine, m_databaseEngineCompPtr);
40};
41
42
43} // namespace imtdb
44
45
Core database engine interface for low-level SQL execution and transaction management.
SQL-specific extension of IObjectCollection for database-backed object collections.
Database Abstraction Layer (ORM Framework) for ImtCore applications.