Heart 1.3.842.34c2ab5
Heart is base back end library for your c++ Qt projects.
sqldbwriter.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2024 QuasarApp.
3 * Distributed under the lgplv3 software license, see the accompanying
4 * Everyone is permitted to copy and distribute verbatim copies
5 * of this license document, but changing it is not allowed.
6*/
7
8#ifndef SQLDBWRITER_H
9#define SQLDBWRITER_H
10
11#include <QObject>
12#include <QSqlDatabase>
13#include <QDir>
14#include <QSqlQuery>
15#include "async.h"
16#include "heart_global.h"
17#include "config.h"
18#include "iobjectprovider.h"
19#include <QVariant>
20#include <QCoreApplication>
21#include <dbobject.h>
22
23class QSqlDatabase;
24class PlayerDBData;
25
26namespace QH {
27
36{
37 Q_OBJECT
38public:
39 SqlDBWriter(QThread *thread, QObject* ptr = nullptr);
40
49 virtual bool initDb(const QString &initDbParams = DEFAULT_DB_PATH);
50
58 virtual bool initDb(const QVariantMap &params);
59
64 virtual bool isValid() const;
65
66 bool getAllObjects(const PKG::DBObject &templateObject,
67 QList<QSharedPointer<PKG::DBObject>> &result) override;
68 bool updateObject(const QSharedPointer<PKG::DBObject> &ptr, bool wait = false) override;
69 bool deleteObject(const QSharedPointer<PKG::DBObject> &ptr, bool wait = false) override;
70 bool insertObject(const QSharedPointer<PKG::DBObject> &ptr, bool wait = false,
71 const QWeakPointer<unsigned int>& autoincrementIdResult = {}) override;
72 bool replaceObject(const QSharedPointer<PKG::DBObject> &ptr, bool wait = false) override;
73
74 void setSQLSources(const QStringList &list) override;
75 bool doQuery(const QString& query, const QVariantMap& bindValues = {}, bool wait = false, QSqlQuery *result = nullptr) const override;
76 bool doSql(const QString &sqlFile, bool wait) const override;
77
83 QString databaseLocation() const;
84
85 virtual ~SqlDBWriter() override;
86
93 virtual bool updateQuery(const QSharedPointer<QH::PKG::DBObject> &ptr) const;
94
101 virtual bool selectQuery(const QH::PKG::DBObject &requestObject,
102 QList<QSharedPointer<QH::PKG::DBObject>> &result);
103
109 virtual bool deleteQuery(const QSharedPointer<QH::PKG::DBObject> &deleteObject) const;
110
118 virtual bool insertQuery(const QSharedPointer<QH::PKG::DBObject>& insertObject,
119 const QWeakPointer<unsigned int>& autoIncrementID = {}) const;
120
127 virtual bool replaceQuery(const QSharedPointer<QH::PKG::DBObject>& insertObject) const;
128protected slots:
129
130
131protected:
132
137 bool enableFK();
138
143 bool disableFK();
144
162 virtual QVariantMap getInitParams(const QString& initFile) const;
163
180 virtual QVariantMap defaultInitPararm() const;
181
190 virtual QSqlDatabase initSqlDataBasse(const QString &driverName,
191 const QString &name);
192
198 QSqlDatabase* db();
199
204 const QSqlDatabase* db() const;
205
206private:
207
216 bool workWithQuery(QSqlQuery &q,
217 const std::function< PKG::PrepareResult (QSqlQuery &)> &prepareFunc,
218 const std::function<bool()>& cb) const;
219
220 bool exec(QSqlQuery *sq, const QString &sqlFile) const;
221
227 bool initDbPrivate(const QVariantMap &params);
228
235 bool doQueryPrivate(const QString& query,
236 const QVariantMap &bindValues,
237 QSqlQuery *result) const;
238
239 bool doSqlPrivate(const QString &sqlFile) const;
240
241 bool initSuccessful = false;
242 QVariantMap _config;
243 QStringList _SQLSources;
244
245 QSqlDatabase *_db = nullptr;
246};
247
248}
249#endif // SQLDBWRITER_H
The Async class This is bundle of async templates and async wrappers.
Definition async.h:26
The DBObject class- main class for work with data base.
Definition dbobject.h:94
The SqlDBWriter class. This class write and read objects from database (hard level)....
Definition sqldbwriter.h:36
The iObjectProvider class is base interface for work with database objects. Using on database writers...
#define DEFAULT_DB_PATH
Definition config.h:27
#define HEARTSHARED_EXPORT
PrepareResult
The PrepareResult enum is result of work prepare sql query of dbobjects.
Definition dbobject.h:24
The QH namespace - QuasarApp Heart namespace. This namespace contains all classes of the Heart librar...
Definition heart.cpp:13