Files
beerlog/services/dumpservice.cpp

63 lines
1.3 KiB
C++

#include "dumpservice.h"
#include <QFile>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QStandardPaths>
void DumpService::setEntityName(const QString &name)
{
m_entityName = name;
}
void DumpService::dump(const QVariant &data) const
{
QFile stash(dumpFileName());
if (stash.open(QIODevice::WriteOnly)) {
stash.write(QJsonDocument::fromVariant(data).toJson(QJsonDocument::Compact));
stash.close();
} else {
qWarning() << stash.errorString();
}
}
QVariantList DumpService::loadList() const
{
QJsonDocument dump = readFile();
return dump.array().toVariantList();
}
QVariantMap DumpService::loadMap() const
{
QJsonDocument dump = readFile();
return dump.object().toVariantMap();
}
void DumpService::clear() const
{
QFile::remove(dumpFileName());
}
QString DumpService::dumpFileName() const
{
Q_ASSERT(!m_entityName.isEmpty());
return QString("%1/%2.dump").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation), m_entityName);
}
QJsonDocument DumpService::readFile() const
{
QJsonDocument res;
QFile dump(dumpFileName());
if (dump.open(QIODevice::ReadOnly)) {
res = QJsonDocument::fromJson(dump.readAll());
dump.close();
} else {
qWarning() << dump.errorString();
}
return res;
}