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 
14 namespace Cutelyst {
15 
16 namespace Sql {
17 
29 class CUTELYST_PLUGIN_UTILS_SQL_EXPORT Transaction
30 {
31 public:
35  explicit Transaction(const QString &databaseName = QString());
36  Transaction(const QSqlDatabase &database);
37  ~Transaction();
38 
39  bool transaction() const;
40  bool commit();
41  bool rollback();
42 
43 private:
44  QSqlDatabase m_db;
45  bool m_transactionRunning;
46 };
47 
53 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToHashObject(QSqlQuery &query);
54 
60 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToHashList(QSqlQuery &query);
61 
67 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantMap queryToMapObject(QSqlQuery &query);
68 
73 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToJsonObject(QSqlQuery &query);
74 
81 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToMapList(QSqlQuery &query);
82 
86 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonObjectArray(QSqlQuery &query);
87 
92 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantList queryToList(QSqlQuery &query);
93 
98 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonArray queryToJsonArray(QSqlQuery &query);
99 
105 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QVariantHash queryToIndexedHash(QSqlQuery &query,
106  const QString &key);
107 
113 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QJsonObject queryToIndexedJsonObject(QSqlQuery &query,
114  const QString &key);
115 
121 CUTELYST_PLUGIN_UTILS_SQL_EXPORT void bindParamsToQuery(QSqlQuery &query,
122  const Cutelyst::ParamsMultiMap &params,
123  bool htmlEscaped = true);
124 
141 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlQuery preparedQuery(const QString &query,
142  QSqlDatabase db = QSqlDatabase(),
143  bool forwardOnly = false);
144 
148 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QString databaseNameThread(const QString &dbName = QString());
149 
153 CUTELYST_PLUGIN_UTILS_SQL_EXPORT QSqlDatabase databaseThread(const QString &dbName = QString());
154 
172 CUTELYST_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
The Transaction class - This is a helper class to create scoped transactions.
Definition: sql.h:29
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:7