colnod-connector/src/colnod/databaseapi.h
2019-12-09 15:34:29 +01:00

66 lines
1.8 KiB
C++

#pragma once
#include <QSql>
#include "data.h"
#include "serversdk/databasemanager.h"
#include "serversdk/databasetable.h"
#include "serversdk/databaseutils.h"
#include "serversdk/logger.h"
#include <QCoreApplication>
Q_DECLARE_LOGGING_CATEGORY(database)
class DatabaseAPI : public QObject
{
Q_OBJECT
public:
explicit DatabaseAPI(serversdk::DatabaseManager *dbMan, bool dryMode);
bool open(const QString& host = "192.168.1.94",
const QString& name = "deloitte",
const QString& user = "postgres",
const QString& password = "34rjkciea12");
bool executeQuery(QSqlQuery &query, const QString &statement = QString());
std::shared_ptr<Data> downloadData();
bool processData(const std::shared_ptr<Data> &data);
qint64 getLastSync();
void setLastSync(qint64 timestamp);
void reupdateDeleted(const QList<QString>& ids);
qint64 getNow();
// process data
bool uploadTokens(const QHash<QString, std::shared_ptr<Token> > &tokens, const QSet<QString> &filters = {});
bool uploadSubjects(const QHash<QString, std::shared_ptr<Subject> > &subjects);
bool deleteItems(const QList<QString> &ids, const QString &tableName);
std::shared_ptr<Token> getToken(const QString &id);
bool isValid();
qint16 getNumOfTokensOfSubject(const QString &id);
QString getSubjectNameByTokenId(const QString &tokenId);
private:
int exists(const QString &id, const QString &tableName);
std::shared_ptr<Data> composeData(const QSqlQuery &updatedQuery, QSqlQuery &deletedQuery);
signals:
void downloadDataFinished(std::shared_ptr<Data> = std::shared_ptr<Data>());
void error();
private:
bool mValid = true;
bool mDryMode;
serversdk::DatabaseManager *mDbMan = nullptr;
std::unique_ptr<serversdk::DatabaseUtils> utils;
};