11#include <QSqlDatabase>
14#include <QMutexLocker>
22 QMutex DBLock::LockedMutex_;
35 !Database_.commit () :
36 !Database_.rollback ())
41 LockedBases_.remove (Database_.connectionName ());
49 const auto&
conn = Database_.connectionName ();
50 if (LockedBases_.contains (
conn))
55 if (!Database_.transaction ())
58 throw std::runtime_error (
"Could not start transaction");
91 throw std::runtime_error (
"Query execution failed.");
DBLock(const DBLock &)=delete
static UTIL_DB_API void Execute(QSqlQuery &query)
Tries to execute the given query.
UTIL_DB_API void Init()
Initializes the transaction.
UTIL_DB_API ~DBLock()
Destructor.
UTIL_DB_API void Good()
Notifies the lock about successful higher-level operations.
static UTIL_DB_API void DumpError(const QSqlError &error)
Dumps the error to the qWarning() stream.
Container< T > Filter(const Container< T > &c, F f)