cutelyst 3.9.1
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
29class CUTELYST_PLUGIN_UTILS_SQL_EXPORT Transaction
30{
31public:
35 explicit Transaction(const QString &databaseName = QString());
36 Transaction(const QSqlDatabase &database);
38
39 bool transaction() const;
40 bool commit();
41 bool rollback();
42
43private:
44 QSqlDatabase m_db;
45 bool m_transactionRunning;
46};
47
53CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToHashObject(QSqlQuery &query);
54
60CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToHashList(QSqlQuery &query);
61
67CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantMap queryToMapObject(QSqlQuery &query);
68
73CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToJsonObject(QSqlQuery &query);
74
81CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToMapList(QSqlQuery &query);
82
86CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonObjectArray(QSqlQuery &query);
87
92CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToList(QSqlQuery &query);
93
98CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonArray(QSqlQuery &query);
99
105CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToIndexedHash(QSqlQuery &query,
106 const QString &key);
107
113CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToIndexedJsonObject(QSqlQuery &query,
114 const QString &key);
115
121CUTELYST_PLUGIN_UTILS_SQL_EXPORT void bindParamsToQuery(QSqlQuery &query,
122 const Cutelyst::ParamsMultiMap &params,
123 bool htmlEscaped = true);
124
141CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQuery(const QString &query,
143 bool forwardOnly = false);
144
148CUTELYST_PLUGIN_UTILS_SQL_EXPORT QString databaseNameThread(const QString &dbName = QString());
149
153CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlDatabase databaseThread(const QString &dbName = QString());
154
172CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQueryThread(const QString &query,
173 const QString &dbName = QString(),
174 bool forwardOnly = false);
175} // namespace Sql
176
177} // namespace Cutelyst
178
179#define CPreparedSqlQueryForDatabase(str, db) \
180 ([]() -> QSqlQuery { \
181 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, db); \
182 return query_temp; \
183 }()) /**/
184
185#define CPreparedSqlQuery(str) \
186 ([]() -> QSqlQuery { \
187 static QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str); \
188 return query_temp; \
189 }()) /**/
190
191#define CPreparedSqlQueryThread(str) \
192 ([]() -> QSqlQuery { \
193 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQueryThread(str); \
194 return query_temp; \
195 }()) /**/
196
197#define CPreparedSqlQueryThreadForDB(str, db) \
198 ([]() -> QSqlQuery { \
199 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQueryThread(str, db); \
200 return query_temp; \
201 }()) /**/
202
203#define CPreparedSqlQueryForDatabaseFO(str, db) \
204 ([]() -> QSqlQuery { \
205 static thread_local QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, db, true); \
206 return query_temp; \
207 }()) /**/
208
209#define CPreparedSqlQueryFO(str) \
210 ([]() -> QSqlQuery { \
211 static QSqlQuery query_temp = Cutelyst::Sql::preparedQuery(str, QSqlDatabase(), true); \
212 return query_temp; \
213 }()) /**/
214
215#define CPreparedSqlQueryThreadFO(str) \
216 ([]() -> QSqlQuery { \
217 static thread_local QSqlQuery query_temp = \
218 Cutelyst::Sql::preparedQueryThread(str, QString(), true); \
219 return query_temp; \
220 }()) /**/
221
222#define CPreparedSqlQueryThreadForDBFO(str, db) \
223 ([]() -> QSqlQuery { \
224 static thread_local QSqlQuery query_temp = \
225 Cutelyst::Sql::preparedQueryThread(str, db, true); \
226 return query_temp; \
227 }()) /**/
228
229#endif // CSQL_H
Transaction(const QString &databaseName=QString())
Definition sql.cpp:273
The Cutelyst namespace holds all public Cutelyst API.
Definition Mainpage.dox:8
QMultiMap< QString, QString > ParamsMultiMap