15#include <QRandomGenerator>
22 QSqlQuery
RunTextQuery (
const QSqlDatabase& db,
const QString& text)
24 QSqlQuery query { db };
25 if (!query.exec (text))
27 qDebug () <<
"unable to execute query";
29 throw std::runtime_error {
"unable to execute query" };
34 QString
LoadQuery (
const QString& pluginName,
const QString& filename)
36 QFile file {
":/" + pluginName +
"/resources/sql/" + filename +
".sql" };
37 if (!file.open (QIODevice::ReadOnly))
39 qWarning () << Q_FUNC_INFO
41 << file.errorString ();
42 throw std::runtime_error {
"Cannot open query file" };
45 return QString::fromUtf8 (file.readAll ());
48 void RunQuery (
const QSqlDatabase& db,
const QString& pluginName,
const QString& filename)
50 QSqlQuery query { db };
51 query.prepare (
LoadQuery (pluginName, filename));
57 return (base +
".%1_%2")
58 .arg (QRandomGenerator::global ()->generate ())
59 .arg (std::bit_cast<uintptr_t> (QThread::currentThread ()));
68 qWarning () <<
"cannot open the database";
70 throw std::runtime_error {
"cannot create database" };
static UTIL_DB_API void Execute(QSqlQuery &query)
Tries to execute the given query.
static UTIL_DB_API void DumpError(const QSqlError &error)
Dumps the error to the qWarning() stream.
QSqlQuery RunTextQuery(const QSqlDatabase &db, const QString &text)
Runs the given query text on the given db.
QString LoadQuery(const QString &pluginName, const QString &filename)
Loads the query text from the given resource file.
QString GenConnectionName(const QString &base)
Generates an unique thread-safe connection name.
void RunQuery(const QSqlDatabase &db, const QString &pluginName, const QString &filename)
Loads the query from the given resource file and runs it.
QDir GetUserDir(UserDir dir, const QString &subpath)
QSqlDatabase OpenSqliteDatabase(const SqliteDatabaseConfig &config)