colnod-connector/src/colnod/datamanager.h
2019-10-21 10:06:49 +02:00

75 lines
1.8 KiB
C++

#ifndef DATAMANAGER_H
#define DATAMANAGER_H
#include "token.h"
#include "subject.h"
#include "requestmanager.h"
#include "databasemanager.h"
#include <QJsonDocument>
#include <qjsonarray.h>
class DataManager : public QObject
{
Q_OBJECT
public:
DataManager();
void getAndSetLastSync();
void fillFullTokensColnod(QString jsonResponse);
void fillTokensColnod(QString jsonResponse);
void fillSubjectsColnod(QString jsonResponse);
void fillSubjectsToDeleteColnod(QString jsonResponse);
void fillTokensToDeleteColnod(QString jsonResponse);
void fillTokensDB();
void fillSubjectsDB();
void fillSubjectsToDeleteDB();
void fillTokensToDeleteDB();
void pushSubjectsToDB();
void pushTokensToDB();
void deleteSubjectsFromDB();
void deleteTokensFromDB();
void updateLastSync();
bool haveData();
bool haveChangedData();
bool haveProcessData();
void emptyDatabase();
void clear();
void loadTokensToAdd();
void loadTokensToDelete();
QHash<QString, QPointer<Token>>* getTokens() {return &tokensColnod;}
QList<QString>* getTokensToDelete() {return &tokensToDeleteColnod;}
const uint64_t &getLastSync() {return lastSync;}
private:
DatabaseManager *db = nullptr;
uint64_t lastSync;
QHash<QString, QPointer<Subject>> subjectsColnod;
QHash<QString, QPointer<Token>> tokensColnod;
QHash<QString, QPointer<Token>> fullTokensColnod;
QHash<QString, QPointer<Subject>> subjectsDB; // in future
QHash<QString, QPointer<Token>> tokensDB;
QList<QString> subjectsToDeleteColnod;
QList<QString> tokensToDeleteColnod;
QList<QString> subjectsToDeleteDB;
QList<QString> tokensToDeleteDB;
};
#endif // DATAMANAGER_H