Heart 1.4.918.d927d9c
Heart is base back end library for your c++ Qt projects.
Loading...
Searching...
No Matches
sqldbwriter.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2025 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
35class HEARTSHARED_EXPORT SqlDBWriter : public Async, public iObjectProvider
36{
37 Q_OBJECT
38public:
39 SqlDBWriter(QThread *thread);
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
Async(QThread *thread)
Async This is default constructor of the async object.
Definition async.cpp:38
The DBObject class- main class for work with data base.
Definition dbobject.h:94
bool disableFK()
disableFK This method disable foreign key for the sqlite database.
bool deleteObject(const QSharedPointer< PKG::DBObject > &ptr, bool wait=false) override
deleteObject This method execute a delete method of obj and remove current object from database.
virtual bool updateQuery(const QSharedPointer< QH::PKG::DBObject > &ptr) const
updateQuery This method execute update query of object. For more Information see DBObject::prepareUpd...
SqlDBWriter(QThread *thread)
QString databaseLocation() const
databaseLocation This method return location of database. If it is sqlite then return path to db file...
bool updateObject(const QSharedPointer< PKG::DBObject > &ptr, bool wait=false) override
updateObject This method execute a update method of the saveObject and save all changes into database...
bool doSql(const QString &sqlFile, bool wait) const override
doSql This method execute a query in this database.
QSqlDatabase * db()
db This method return db connection. If SqlDBWriter in not inited then return nullptr....
bool enableFK()
enableFK This method enable foreign key for the sqlite database.
virtual bool replaceQuery(const QSharedPointer< QH::PKG::DBObject > &insertObject) const
replaceQuery This method prepare the replce object query.
virtual QSqlDatabase initSqlDataBasse(const QString &driverName, const QString &name)
initSqlDataBasse This method create ad database connection. Without configuration....
bool doQuery(const QString &query, const QVariantMap &bindValues={}, bool wait=false, QSqlQuery *result=nullptr) const override
doQuery This method execute a query in this database.
bool replaceObject(const QSharedPointer< PKG::DBObject > &ptr, bool wait=false) override
replaceObject This method execute a replace method of the saveObject and insert or save if not exists...
virtual bool selectQuery(const QH::PKG::DBObject &requestObject, QList< QSharedPointer< QH::PKG::DBObject > > &result)
selectQuery generate select query to database from parameters.
void setSQLSources(const QStringList &list) override
setSQLSources This method set sql sources for deployed database.
virtual bool isValid() const
isValid This method return true if database is successful inited and working correctly.
virtual bool deleteQuery(const QSharedPointer< QH::PKG::DBObject > &deleteObject) const
deleteQuery This method prepare the delete object query.
virtual bool initDb(const QString &initDbParams=DEFAULT_DB_PATH)
initDb This method is wraper of the initDb(const QVariantMap &params) method. This implementation rea...
virtual QVariantMap getInitParams(const QString &initFile) const
getInitPararm This method read parameters of database.
bool getAllObjects(const PKG::DBObject &templateObject, QList< QSharedPointer< PKG::DBObject > > &result) override
getAllObjects This method execute a select method of the templateObject and return list of all select...
virtual bool insertQuery(const QSharedPointer< QH::PKG::DBObject > &insertObject, const QWeakPointer< unsigned int > &autoIncrementID={}) const
insertQuery This method prepare the insert object query.
virtual QVariantMap defaultInitPararm() const
defaultInitPararm This method return default parameters of the database.
bool insertObject(const QSharedPointer< PKG::DBObject > &ptr, bool wait=false, const QWeakPointer< unsigned int > &autoincrementIdResult={}) override
insertObject This method execute a insert method of the saveObject and insert it into database.
The iObjectProvider class is base interface for work with database objects. Using on database writers...
#define DEFAULT_DB_PATH
Definition config.h:27
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