cutelyst 4.3.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
sql.h
1/*
2 * SPDX-FileCopyrightText: (C) 2015-2022 Daniel Nicoletti <dantti12@gmail.com>
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5#ifndef CSQL_H
6#define CSQL_H
7
8#include <Cutelyst/cutelyst_global.h>
9#include <Cutelyst/paramsmultimap.h>
10
11#include <QtCore/QVariant>
12#include <QtSql/QSqlDatabase>
13
14namespace Cutelyst {
15
16namespace Sql {
17
31class CUTELYST_PLUGIN_UTILS_SQL_EXPORT Transaction
32{
33public:
38 explicit Transaction(const QString &databaseName = QString());
39
44 Transaction(const QSqlDatabase &database);
45
51
55 bool transaction() const;
56
60 bool commit();
61
65 bool rollback();
66
67private:
68 QSqlDatabase m_db;
69 bool m_transactionRunning;
70};
71
78CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToHashObject(QSqlQuery &query);
79
86CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToHashList(QSqlQuery &query);
87
94CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantMap queryToMapObject(QSqlQuery &query);
95
101CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToJsonObject(QSqlQuery &query);
102
110CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToMapList(QSqlQuery &query);
111
116CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonObjectArray(QSqlQuery &query);
117
123CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToList(QSqlQuery &query);
124
130CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonArray(QSqlQuery &query);
131
138CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToIndexedHash(QSqlQuery &query,
139 const QString &key);
140
147CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToIndexedJsonObject(QSqlQuery &query,
148 const QString &key);
149
156CUTELYST_PLUGIN_UTILS_SQL_EXPORT void bindParamsToQuery(QSqlQuery &query,
157 const Cutelyst::ParamsMultiMap &params,
158 bool htmlEscaped = true);
159
177CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQuery(const QString &query,
179 bool forwardOnly = false);
180
185CUTELYST_PLUGIN_UTILS_SQL_EXPORT QString databaseNameThread(const QString &dbName = QString());
186
191CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlDatabase databaseThread(const QString &dbName = QString());
192
211CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQueryThread(const QString &query,
212 const QString &dbName = QString(),
213 bool forwardOnly = false);
214} // namespace Sql
215
216} // namespace Cutelyst
217
223#define CPreparedSqlQueryForDatabase(str, db) \
224 ([]() -> QSqlQuery { \
225 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, db); \
226 return query_temp; \
227 }())
228
234#define CPreparedSqlQuery(str) \
235 ([]() -> QSqlQuery { \
236 static QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str); \
237 return query_temp; \
238 }())
239
245#define CPreparedSqlQueryThread(str) \
246 ([]() -> QSqlQuery { \
247 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQueryThread(str); \
248 return query_temp; \
249 }())
250
256#define CPreparedSqlQueryThreadForDB(str, db) \
257 ([]() -> QSqlQuery { \
258 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQueryThread(str, db); \
259 return query_temp; \
260 }())
261
268#define CPreparedSqlQueryForDatabaseFO(str, db) \
269 ([]() -> QSqlQuery { \
270 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, db, true); \
271 return query_temp; \
272 }())
273
280#define CPreparedSqlQueryFO(str) \
281 ([]() -> QSqlQuery { \
282 static QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, QSqlDatabase(), true); \
283 return query_temp; \
284 }())
285
292#define CPreparedSqlQueryThreadFO(str) \
293 ([]() -> QSqlQuery { \
294 static thread_local QSqlQuery query_temp = \
295 Cutelyst::Sql::preparedQueryThread(str, QString(), true); \
296 return query_temp; \
297 }())
298
305#define CPreparedSqlQueryThreadForDBFO(str, db) \
306 ([]() -> QSqlQuery { \
307 static thread_local QSqlQuery query_temp = \
308 Cutelyst::Sql::preparedQueryThread(str, db, true); \
309 return query_temp; \
310 }())
311
312#endif // CSQL_H
This is a helper class to create scoped transactions.
Definition sql.h:32
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToHashList(QSqlQuery &query)
Definition sql.cpp:33
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantMap queryToMapObject(QSqlQuery &query)
Definition sql.cpp:53
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToHashObject(QSqlQuery &query)
Definition sql.cpp:20
CUTELYST_PLUGIN_UTILS_SQL_EXPORT void bindParamsToQuery(QSqlQuery &query, const Cutelyst::ParamsMultiMap &params, bool htmlEscaped=true)
Definition sql.cpp:215
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonObjectArray(QSqlQuery &query)
Definition sql.cpp:99
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QString databaseNameThread(const QString &dbName=QString())
Definition sql.cpp:263
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQuery(const QString &query, QSqlDatabase db=QSqlDatabase(), bool forwardOnly=false)
Definition sql.cpp:241
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToList(QSqlQuery &query)
Definition sql.cpp:119
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToIndexedJsonObject(QSqlQuery &query, const QString &key)
Definition sql.cpp:183
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToMapList(QSqlQuery &query)
Definition sql.cpp:79
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlDatabase databaseThread(const QString &dbName=QString())
Definition sql.cpp:268
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToIndexedHash(QSqlQuery &query, const QString &key)
Definition sql.cpp:151
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonArray(QSqlQuery &query)
Definition sql.cpp:135
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQueryThread(const QString &query, const QString &dbName=QString(), bool forwardOnly=false)
Definition sql.cpp:252
CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToJsonObject(QSqlQuery &query)
Definition sql.cpp:66
The Cutelyst namespace holds all public Cutelyst API.