2019-12-16 09:18:06 +01:00

73 lines
1.9 KiB
C++

#pragma once
#include <utility>
#include "token.h"
#include "subject.h"
// constants for output design
constexpr auto equals = "==================================================================";
constexpr auto underscore = "__________________________________________________________________";
constexpr auto dash = "------------------------------------------------------------------";
constexpr auto tab = "\t";
class Message
{
public:
static QString massageTemplate(const QString& action, const QString& item, const QString& source, const QString& itemInfo)
{
return action + " " + item + " in " + source + ", " + item + ": '" + itemInfo + "'";
}
};
class Data
{
friend class ColnodAPI;
friend class DatabaseAPI;
public:
Data() = default;
/**
* @brief Fill data with tokens from JSON
* @param data Response data in JSON format
* @return True if success otherwise False
*/
bool loadTokensFromJson(const QByteArray &data);
/**
* @brief Fill data with subjects from JSON
* @param data Response data in JSON format
* @return True if success otherwise False
*/
bool loadSubjectsFormJson(const QByteArray &data);
QHash<QString, std::shared_ptr<Token>> updatedTokens;
QList<QString> deletedTokens;
QHash<QString, std::shared_ptr<Subject>> updatedSubjects;
QList<QString> deletedSubjects;
/**
* @brief Helper function for check if all endpoints calls are processed
* @return Returns acctual amout of processed endpoints
*/
int incrementCounter();
private:
int counter = 0;
};
struct PreparedData
{
public:
PreparedData() = default;
PreparedData(const std::shared_ptr<Data> &database, const std::shared_ptr<Data> &colnod)
:databaseData(database), colnodData(colnod)
{
}
// TODO: make unique_ptr ( neeed because of ColnodAPI )
std::shared_ptr<Data> databaseData;
std::shared_ptr<Data> colnodData;
};