mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 17:20:47 +02:00
176 lines
4.1 KiB
C++
176 lines
4.1 KiB
C++
#include "colnodapi.h"
|
|
|
|
ColnodAPI::ColnodAPI()
|
|
{
|
|
reqMan = new RequestManager();
|
|
dataMan = new DataManager();
|
|
}
|
|
|
|
|
|
// PUBLIC FUNCTIONS
|
|
void ColnodAPI::downloadData()
|
|
{
|
|
Response* resp0 = reqMan->getSubjects();
|
|
connect(resp0, &Response::ready, [=](){
|
|
dataMan->localSaveSubjects(resp0->getJson());
|
|
areDataReady();
|
|
resp0->deleteLater();
|
|
});
|
|
|
|
Response* resp1 = reqMan->getTokens();
|
|
connect(resp1, &Response::ready, [=](){
|
|
dataMan->localSaveTokens(resp1->getJson());
|
|
areDataReady();
|
|
resp1->deleteLater();
|
|
});
|
|
|
|
/*
|
|
QNetworkReply* reply2 = reqMan->getTokens();
|
|
connect(reply2, &QNetworkReply::finished, [=](){
|
|
data->saveTokens(reply2->readAll());
|
|
});
|
|
*/
|
|
}
|
|
|
|
void ColnodAPI::downloadChangedDataFromColnod()
|
|
{
|
|
downloadUpdatedData();
|
|
downloadDeletedData();
|
|
}
|
|
|
|
void ColnodAPI::downloadUpdatedData()
|
|
{
|
|
uint64_t lastUpdate = dataMan->getLastUpdate();
|
|
qDebug() << lastUpdate;
|
|
Response* resp0 = reqMan->getSubjectsUpdated(lastUpdate);
|
|
connect(resp0, &Response::ready, [=](){
|
|
dataMan->localSaveSubjects(resp0->getJson());
|
|
areChangedDataReady();
|
|
resp0->deleteLater();
|
|
});
|
|
|
|
Response* resp1 = reqMan->getTokensUpdated(lastUpdate);
|
|
connect(resp1, &Response::ready, [=](){
|
|
dataMan->localSaveTokens(resp1->getJson());
|
|
areChangedDataReady();
|
|
resp1->deleteLater();
|
|
});
|
|
}
|
|
|
|
void ColnodAPI::downloadDeletedData()
|
|
{
|
|
uint64_t lastUpdate = dataMan->getLastUpdate();
|
|
Response* resp2 = reqMan->getSubjectsDeleted(lastUpdate);
|
|
connect(resp2, &Response::ready, [=](){
|
|
dataMan->localSaveSubjectsToDelete(resp2->getJson());
|
|
areChangedDataReady();
|
|
resp2->deleteLater();
|
|
});
|
|
|
|
Response* resp3 = reqMan->getTokensDeleted(lastUpdate);
|
|
connect(resp3, &Response::ready, [=](){
|
|
dataMan->localSaveTokensToDelete(resp3->getJson());
|
|
areChangedDataReady();
|
|
resp3->deleteLater();
|
|
});
|
|
|
|
}
|
|
|
|
void ColnodAPI::syncDataFromColnod()
|
|
{
|
|
dataMan->pushTokensToDB();
|
|
dataMan->pushSubjectsToDB();
|
|
dataMan->updateLastSync();
|
|
dataMan->clear();
|
|
}
|
|
|
|
void ColnodAPI::syncChangedDataFromColnod()
|
|
{
|
|
syncUpdatedDataFromColnod();
|
|
syncDeletedDataFromColnod();
|
|
dataMan->updateLastSync();
|
|
dataMan->clear();
|
|
}
|
|
|
|
void ColnodAPI::syncUpdatedDataFromColnod()
|
|
{
|
|
dataMan->pushSubjectsToDB();
|
|
dataMan->pushTokensToDB();
|
|
}
|
|
|
|
|
|
void ColnodAPI::syncDeletedDataFromColnod()
|
|
{
|
|
dataMan->deleteSubjectsFromDB();
|
|
dataMan->deleteTokensFromDB();
|
|
}
|
|
|
|
|
|
|
|
|
|
void ColnodAPI::syncDataToColnod()
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
|
|
void ColnodAPI::syncChangedDataToColnod()
|
|
{
|
|
// TODO
|
|
dataMan->loadTokensToAdd();
|
|
dataMan->loadTokensToDelete();
|
|
processDataToColnod();
|
|
dataMan->clear();
|
|
|
|
}
|
|
|
|
void ColnodAPI::processDataToColnod()
|
|
{
|
|
QList<QString>* tokensToDelete = dataMan->getTokensToDelete();
|
|
if ((*tokensToDelete)[0] != "empty")
|
|
{
|
|
Response* resp0 = reqMan->deleteTokens(dataMan->getTokensToDelete());
|
|
connect(resp0, &Response::ready, [=](){
|
|
areProcessDataReady();
|
|
resp0->deleteLater();
|
|
});
|
|
}
|
|
QList<QPointer<Token>>* tokens = dataMan->getTokens();
|
|
if ((*tokens)[0]->getName() != "empty")
|
|
{
|
|
Response* resp1 = reqMan->setTokens(dataMan->getTokens());
|
|
connect(resp1, &Response::ready, [=](){
|
|
areProcessDataReady();
|
|
resp1->deleteLater();
|
|
});
|
|
}
|
|
connect(this, &ColnodAPI::dataLoaded, this, &ColnodAPI::syncChangedDataFromColnod);
|
|
}
|
|
|
|
void ColnodAPI::prepareDatabase()
|
|
{
|
|
dataMan->emptyDatabase();
|
|
}
|
|
|
|
// PRIVATE FUNCTIONS
|
|
void ColnodAPI::areDataReady()
|
|
{
|
|
if (dataMan->haveData())
|
|
emit dataDownloaded();
|
|
}
|
|
|
|
void ColnodAPI::areChangedDataReady()
|
|
{
|
|
if (dataMan->haveChangedData())
|
|
emit dataDownloaded();
|
|
}
|
|
|
|
|
|
void ColnodAPI::areProcessDataReady()
|
|
{
|
|
if (dataMan->haveProcessData())
|
|
{
|
|
emit dataLoaded();
|
|
}
|
|
}
|