Heart 1.3.842.34c2ab5
Heart is base back end library for your c++ Qt projects.
sqlitedbcache.cpp
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#ifdef HEART_DB_CACHE
9
10#include "asyncsqldbwriter.h"
11#include "sqlitedbcache.h"
12#include <QThread>
13
14namespace QH {
15
16// Private implementation.
20class SQLiteDBCachePrivate: public AsyncSqlDBWriter {
21
22public:
23 SQLiteDBCachePrivate():
24 AsyncSqlDBWriter() {
25 thread()->setObjectName("DBCache");
26 }
27
28 // SqlDBWriter interface
29protected:
30 QSqlDatabase initSqlDataBasse(const QString &driverName,
31 const QString &name) override;
32
33 bool initDb(const QVariantMap &params) override;
34
35 friend class SQLiteDBCache;
36};
37
38QSqlDatabase SQLiteDBCachePrivate::initSqlDataBasse(const QString &driverName,
39 const QString &name) {
40
41 return QSqlDatabase::addDatabase(driverName,
42 name + "::memory:");
43
44}
45
46bool SQLiteDBCachePrivate::initDb(const QVariantMap &params) {
47
48 if (params.value("DBDriver").toString() != "QSQLITE") {
49 QuasarAppUtils::Params::log(" the SQLiteDBCache class support only the QSQLITE driver.",
50 QuasarAppUtils::Error);
51 return false;
52 }
53
54 return SqlDBWriter::initDb(params);
55}
56
57// Main class members.
58SQLiteDBCache::SQLiteDBCache() {
59 _private = new SQLiteDBCachePrivate();
60}
61
62SQLiteDBCache::~SQLiteDBCache() {
63 delete _private;
64}
65
66bool SQLiteDBCache::init(const QVariantMap &params) {
67
68 if (!ISqlDBCache::init(params)) {
69 return false;
70 }
71
72 return _private->initDb(params);
73}
74
75void SQLiteDBCache::deleteFromCache(const QSharedPointer<PKG::DBObject> &delObj) {
76 _private->deleteObject(delObj, true);
77}
78
79bool SQLiteDBCache::insertToCache(const QSharedPointer<PKG::DBObject> &obj) {
80 return _private->insertObject(obj, true);
81}
82
83bool SQLiteDBCache::updateCache(const QSharedPointer<PKG::DBObject> &obj) {
84 return _private->updateObject(obj, true);
85}
86
87QList<QSharedPointer<QH::PKG::DBObject>>
88SQLiteDBCache::getFromCache(const PKG::DBObject *obj) {
89
90 QList<QSharedPointer<QH::PKG::DBObject>> list;
91 if (!_private->getAllObjects(*obj, list)) {
92 return QList<QSharedPointer<QH::PKG::DBObject>>{};
93 };
94
95 return list;
96}
97
98}
99
100#endif
virtual bool initDb(const QString &initDbParams=DEFAULT_DB_PATH)
initDb This method is wraper of the initDb(const QVariantMap &params) method. This implementation rea...
The QH namespace - QuasarApp Heart namespace. This namespace contains all classes of the Heart librar...
Definition heart.cpp:13