Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDatabaseTransactionLock.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISDATABASETRANSACTIONLOCK_H
8#define KISDATABASETRANSACTIONLOCK_H
9
10#include <QSqlDatabase>
11
12#include <kritaresources_export.h>
13
14#include <KisAdaptedLock.h>
15
16
17namespace detail
18{
19struct KRITARESOURCES_EXPORT KisDatabaseTransactionLockAdapter {
20
21 KisDatabaseTransactionLockAdapter(QSqlDatabase database);
22
23 void lock();
24 void unlock();
25 void commit();
26
27private:
28 QSqlDatabase m_database;
29 bool m_transactionStarted{false};
30};
31} // namespace detail
32
33
77class KRITARESOURCES_EXPORT KisDatabaseTransactionLock
78 : public KisAdaptedLock<detail::KisDatabaseTransactionLockAdapter>
79{
80public:
82 using BaseClass::BaseClass;
83 using BaseClass::commit;
84
85 inline void rollback() {
86 unlock();
87 }
88};
89
90
91#endif /* KISDATABASETRANSACTIONLOCK_H */