fix download method in db

This commit is contained in:
Ondřej Fischer 2019-11-27 14:41:05 +01:00
parent d334007f6c
commit ec2de4978f
6 changed files with 23 additions and 19 deletions

@ -1 +1 @@
Subproject commit 9623578997c33de0700131a40592a83e6cef3289 Subproject commit ee08677641fef053a8f6938f9b31e6792cbe7fff

View File

@ -44,13 +44,13 @@ int main(int argc, char *argv[])
SyncManager syncManager(parser.isSet(dryModeOption)); SyncManager syncManager(parser.isSet(dryModeOption));
// Initialize database and colnod API // Initialize database and colnod API
if (!syncManager.databaseInitialization()) { if (!syncManager.syncInit()) {
qCritical("Not possible to initialize sync application"); qCritical("Not possible to initialize sync application");
return -1; return -1;
} }
// Synchronizaiton // Synchronizaiton
if (!syncManager.startSynchronization()) { if (!syncManager.startSync()) {
qCritical("Not possible to start synchronization"); qCritical("Not possible to start synchronization");
return -1; return -1;
} }

View File

@ -36,23 +36,22 @@ bool DatabaseAPI::executeQuery(QSqlQuery &query, const QString &statement)
return true; return true;
} }
// returns data to be sychronized to colnod
// returns nullptr if there is any error
std::shared_ptr<Data> DatabaseAPI::downloadData() std::shared_ptr<Data> DatabaseAPI::downloadData()
{ {
auto updatedQuery = mDbMan->createQuery(); auto updatedQuery = mDbMan->createQuery();
auto deletedQuery = mDbMan->createQuery(); auto deletedQuery = mDbMan->createQuery();
if (!executeQuery(updatedQuery, "SELECT * FROM colnod_token WHERE last_modified > last_update AND deleted = false")) { if (!executeQuery(updatedQuery, "SELECT * FROM colnod_token WHERE last_modified > last_update AND deleted = false")) {
qWarning(database) << "ERROR during geting new/updated tokens from db."; qWarning(database) << "ERROR: Not possible to get new/updated tokens from DB";
return nullptr; return nullptr;
} }
if (!executeQuery(deletedQuery, "SELECT id FROM colnod_token WHERE last_modified > last_update AND deleted = true")) { if (!executeQuery(deletedQuery, "SELECT id FROM colnod_token WHERE last_modified > last_update AND deleted = true")) {
qWarning(database) << "ERROR during geting marked tokens for deletion from db."; qWarning(database) << "ERROR: not possible to get tokens marked for deletion from DB";
return nullptr; return nullptr;
} }
return composeData(updatedQuery, deletedQuery); return composeData(updatedQuery, deletedQuery);
// TODO: why emiting signal??
// this can return Strucutre
//emit downloadDataFinished(composeData(updatedQuery, deletedQuery));
} }
bool DatabaseAPI::processData(const std::shared_ptr<Data> &data) bool DatabaseAPI::processData(const std::shared_ptr<Data> &data)
@ -165,11 +164,12 @@ qint64 DatabaseAPI::getNow()
return query.value(0).toLongLong(); return query.value(0).toLongLong();
} }
void DatabaseAPI::initNewTokens() bool DatabaseAPI::initNewTokens()
{ {
auto query = mDbMan->createQuery(); auto query = mDbMan->createQuery();
if (!executeQuery(query, "SELECT * FROM colnod_token WHERE name IS NULL")) { if (!executeQuery(query, "SELECT * FROM colnod_token WHERE name IS NULL")) {
qWarning(database) << "ERROR during getting uninitialized tokens"; qWarning(database) << "Not possible to get uninitialized (new) tokens";
return false;
} }
QHash<QString, std::shared_ptr<Token>> tokensToInit; QHash<QString, std::shared_ptr<Token>> tokensToInit;
auto list = utils->tableFromQuery<Token>(query); auto list = utils->tableFromQuery<Token>(query);
@ -199,7 +199,10 @@ bool DatabaseAPI::uploadTokens(const QHash<QString, std::shared_ptr<Token>> &tok
int existCheck = exists(token->id(), "colnod_token");
if (existCheck == -1) {
}
if (exists(token->id(), "colnod_token")) { if (exists(token->id(), "colnod_token")) {

View File

@ -32,7 +32,7 @@ public:
void setLastUpdate(const QList<QString> ids); void setLastUpdate(const QList<QString> ids);
qint64 getNow(); qint64 getNow();
void initNewTokens(); bool initNewTokens();
// process data // process data
bool uploadTokens(const QHash<QString, std::shared_ptr<Token> > &tokens); bool uploadTokens(const QHash<QString, std::shared_ptr<Token> > &tokens);

View File

@ -10,12 +10,9 @@ SyncManager::SyncManager(bool dryMode)
} }
bool SyncManager::databaseInitialization() bool SyncManager::syncInit()
{ {
database = std::make_shared<DatabaseAPI>(&dbMan, mDryMode); database = std::make_shared<DatabaseAPI>(&dbMan, mDryMode);
// connect(database.get(), &DatabaseAPI::error, [=](){
// QCoreApplication::exit(1);
// });
// Open database // Open database
if (!database->open()) { if (!database->open()) {
@ -30,6 +27,10 @@ bool SyncManager::databaseInitialization()
return false; return false;
} }
if (!database->initNewTokens()) {
}
// here -> nothing can fail // here -> nothing can fail
mlastSync.set_timestamp(database->getLastSync()); mlastSync.set_timestamp(database->getLastSync());
colnod = std::make_shared<ColnodAPI>(&reqMan, mlastSync.timestamp(), mDryMode); colnod = std::make_shared<ColnodAPI>(&reqMan, mlastSync.timestamp(), mDryMode);
@ -37,7 +38,7 @@ bool SyncManager::databaseInitialization()
} }
bool SyncManager::startSynchronization() bool SyncManager::startSync()
{ {
// I have to current time from database // I have to current time from database
qint64 syncBegin = database->getNow(); qint64 syncBegin = database->getNow();
@ -50,7 +51,7 @@ bool SyncManager::startSynchronization()
qInfo(syncmanager) << "SYNCHRONIZATION BEGIN"; qInfo(syncmanager) << "SYNCHRONIZATION BEGIN";
// TODO: check error // TODO: check error
database->initNewTokens();
// GETTING DATA FROM DATABASE // GETTING DATA FROM DATABASE

View File

@ -11,8 +11,8 @@ class SyncManager : public QObject
public: public:
explicit SyncManager(bool dryMode); explicit SyncManager(bool dryMode);
bool databaseInitialization(); bool syncInit();
bool startSynchronization(); bool startSync();
private: private:
bool downloadData(); bool downloadData();