QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCSqlHelper.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QString>
4#include <QtSql/QSqlDatabase>
5#include <QtSql/QSqlQuery>
6
7#include <atomic>
8#include <optional>
9
11namespace QGCSqlHelper {
12
13// ── LIKE wildcard escaping ─────────────────────────────────────────────
16[[nodiscard]] QString escapeLikePattern(const QString& text);
17
18// ── Bound-parameter placeholders ───────────────────────────────────────
21[[nodiscard]] QString placeholders(int n);
22
23// ── SQLite PRAGMA helpers ──────────────────────────────────────────────
26void applySqlitePragmas(QSqlDatabase& db);
27
30[[nodiscard]] std::optional<int> userVersion(QSqlDatabase& db);
31[[nodiscard]] bool setUserVersion(QSqlDatabase& db, int v);
32
33// ── Scoped connection RAII ─────────────────────────────────────────────
41{
42public:
47 explicit ScopedConnection(const QString& dbPath, bool readOnly = false,
48 const QString& prefix = QStringLiteral("QGCSql"));
50
55
56 [[nodiscard]] bool isValid() const { return _valid; }
57 [[nodiscard]] QSqlDatabase database() const;
58
59private:
60 QString _connName;
61 bool _valid = false;
62
63 static std::atomic<int> s_connId;
64};
65
66// ── Transaction RAII ───────────────────────────────────────────────────
74{
75public:
76 explicit Transaction(QSqlDatabase db);
78
79 Transaction(const Transaction&) = delete;
83
84 [[nodiscard]] bool ok() const { return _active; }
85 bool commit();
86
87private:
88 QSqlDatabase _db;
89 bool _active = false;
90 bool _committed = false;
91};
92
93} // namespace QGCSqlHelper
RAII wrapper around QSqlDatabase::addDatabase / removeDatabase.
ScopedConnection(ScopedConnection &&)=delete
ScopedConnection & operator=(ScopedConnection &&)=delete
ScopedConnection & operator=(const ScopedConnection &)=delete
ScopedConnection(const ScopedConnection &)=delete
QSqlDatabase database() const
RAII wrapper around QSqlDatabase::transaction()/commit()/rollback().
Transaction & operator=(Transaction &&)=delete
Transaction(Transaction &&)=delete
Transaction & operator=(const Transaction &)=delete
Transaction(const Transaction &)=delete
Lightweight SQL utilities shared across QGC components.
bool setUserVersion(QSqlDatabase &db, int v)
QString escapeLikePattern(const QString &text)
void applySqlitePragmas(QSqlDatabase &db)
QString placeholders(int n)
std::optional< int > userVersion(QSqlDatabase &db)