forked from ondra/colnod-connector
added staff to handle initialization error
This commit is contained in:
parent
811345c301
commit
b914b1c11d
@ -16,6 +16,12 @@ int main(int argc, char *argv[])
|
||||
parser.addOption(dryModeOption);
|
||||
parser.process(app);
|
||||
SyncManager api(parser.isSet(dryModeOption));
|
||||
if (!api.isValid())
|
||||
return 1;
|
||||
QObject::connect(&api, &SyncManager::error, [](){
|
||||
qDebug() << "error";
|
||||
QCoreApplication::exit(1);
|
||||
});
|
||||
api.loadDataFromDB();
|
||||
api.loadDataFromColnod();
|
||||
QObject::connect(&api, &SyncManager::dataDownloaded, [&](){
|
||||
@ -26,9 +32,5 @@ int main(int argc, char *argv[])
|
||||
api.syncDataFromColnodToDB();
|
||||
api.syncDataFromDBToColnod();
|
||||
});
|
||||
QObject::connect(&api, &SyncManager::error, [](){
|
||||
qDebug() << "error";
|
||||
QCoreApplication::exit();
|
||||
});
|
||||
return QCoreApplication::exec();
|
||||
}
|
||||
|
||||
@ -10,9 +10,13 @@ DatabaseManager::DatabaseManager(const QString& host, const QString& dbName, con
|
||||
db.setPassword(password);
|
||||
if (!db.open())
|
||||
{
|
||||
log("Opening error" + db.lastError().text());
|
||||
opened = false;
|
||||
Logger::log("Opening error" + db.lastError().text());
|
||||
emit error();
|
||||
}
|
||||
else{
|
||||
opened = true;
|
||||
}
|
||||
}
|
||||
|
||||
// add or update subject to db
|
||||
@ -139,7 +143,7 @@ bool DatabaseManager::executeQuery(QSqlQuery &query, const QString &statement)
|
||||
if (!dryMode || getLastQuery(query).startsWith("SELECT")){
|
||||
if (!query.exec()){
|
||||
QString msg = QString("Source: Database Manager, Error: %1").arg(query.lastError().text());
|
||||
log(QString(msg));
|
||||
Logger::logToDb(QString(msg));
|
||||
emit error();
|
||||
}
|
||||
}
|
||||
@ -151,7 +155,7 @@ bool DatabaseManager::executeQuery(QSqlQuery &query, const QString &statement)
|
||||
if (!dryMode || statement.startsWith("SELECT")){
|
||||
if (!query.exec(statement)){
|
||||
QString msg = QString("Source: Database Manager, Error: %1").arg(query.lastError().text());
|
||||
log(QString(msg));
|
||||
Logger::logToDb(QString(msg));
|
||||
emit error();
|
||||
}
|
||||
}
|
||||
@ -300,3 +304,8 @@ bool DatabaseManager::checkDeletedToken(const QString &id)
|
||||
query.next();
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
|
||||
bool DatabaseManager::isOpen()
|
||||
{
|
||||
return opened;
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
#include "subject.h"
|
||||
#include "token.h"
|
||||
#include <QDateTime>
|
||||
//#include "logger.h"
|
||||
#include "logger.h"
|
||||
|
||||
|
||||
class DatabaseManager : public QObject
|
||||
@ -41,6 +41,8 @@ public:
|
||||
QString getSubjectNameById(const QString &id);
|
||||
bool checkDeletedToken(const QString &id);
|
||||
|
||||
bool isOpen();
|
||||
|
||||
|
||||
private:
|
||||
bool checkIfExists(const QString& id, const QString& table);
|
||||
@ -53,4 +55,5 @@ signals:
|
||||
private:
|
||||
QSqlDatabase db;
|
||||
bool dryMode = false;
|
||||
bool opened = false;
|
||||
};
|
||||
|
||||
@ -5,9 +5,15 @@ DataManager::DataManager(const bool &dryMode)
|
||||
{
|
||||
db = std::make_shared<DatabaseManager>("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode);
|
||||
//db = std::make_shared<DatabaseManager>("localhost", "deloitte", "postgres", "34rjkciea12");
|
||||
if (db->isOpen()){
|
||||
Logger::setDBMan(db);
|
||||
nextLastSync = db->getNow();
|
||||
lastSync = db->getLastSync();
|
||||
}
|
||||
else {
|
||||
emit error();
|
||||
QCoreApplication::quit();
|
||||
}
|
||||
connect(db.get(), &DatabaseManager::error, this, &DataManager::error);
|
||||
}
|
||||
|
||||
@ -77,6 +83,7 @@ void DataManager::fillSubjectsToUpdateColnod(const QString& response)
|
||||
// load working sets with updated/deleted tokens from DB
|
||||
void DataManager::fillTokensToChangeDB()
|
||||
{
|
||||
if (db->isOpen()){
|
||||
QSqlQuery query = db->getUpdatedTokens();
|
||||
while (query.next())
|
||||
{
|
||||
@ -92,6 +99,8 @@ void DataManager::fillTokensToChangeDB()
|
||||
qDebug() << "DB:" << tokensToUpdateFromDBToColnod.size() << "tokens to update";
|
||||
qDebug() << "DB:" << tokensFromDBToDeleteFromColnod.size() << "tokens to delete";
|
||||
}
|
||||
else emit error();
|
||||
}
|
||||
|
||||
void DataManager::fillSubjectsToUpdateDB()
|
||||
{
|
||||
@ -278,6 +287,7 @@ void DataManager::clear()
|
||||
// on the very end of sync update last sync time to begin time of this sync
|
||||
void DataManager::updateLastSync()
|
||||
{
|
||||
if (db->isOpen())
|
||||
db->updateLastSync(nextLastSync);
|
||||
}
|
||||
|
||||
|
||||
@ -50,6 +50,8 @@ public:
|
||||
const quint64 &getLastSync() {return lastSync;}
|
||||
const quint64 &getCurrentSync() {return nextLastSync;}
|
||||
|
||||
bool isDBOpened() {return db->isOpen();}
|
||||
|
||||
public slots:
|
||||
void clear();
|
||||
void setLastUpdate();
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "logger.h"
|
||||
#include "databasemanager.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
@ -24,7 +25,7 @@ void Logger::log(const QString& msg)
|
||||
|
||||
void Logger::logToDb(const QString &msg)
|
||||
{
|
||||
Q_ASSERT(Logger::dbMan);
|
||||
if (dbMan)
|
||||
Logger::dbMan->log(msg);
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,9 @@
|
||||
#include <QString>
|
||||
#include <QDebug>
|
||||
#include <QSqlDatabase>
|
||||
#include "databasemanager.h"
|
||||
#include <memory>
|
||||
|
||||
class DatabaseManager;
|
||||
|
||||
|
||||
class Logger
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
#include "syncmanager.h"
|
||||
|
||||
SyncManager::SyncManager(bool dryMode)
|
||||
:dryMode(dryMode)
|
||||
{
|
||||
reqMan = std::make_unique<RequestManager>();
|
||||
dataMan = std::make_unique<DataManager>(dryMode);
|
||||
this->dryMode = dryMode;
|
||||
|
||||
connect(reqMan.get(), &RequestManager::error, this, &SyncManager::error);
|
||||
connect(dataMan.get(), &DataManager::error, this, &SyncManager::error);
|
||||
}
|
||||
@ -125,8 +124,10 @@ void SyncManager::syncDataFromDBToColnod()
|
||||
if (!dataMan->getTokensToDeleteDB().isEmpty()){
|
||||
syncDeletedDataFromDBToColnod();
|
||||
}
|
||||
else
|
||||
else{
|
||||
deleteFinished = true;
|
||||
areDataUpdatedToColnod();
|
||||
}
|
||||
}
|
||||
|
||||
// add or update tokens to Colnod
|
||||
@ -184,6 +185,11 @@ void SyncManager::prepareDatabase()
|
||||
dataMan->emptyDatabase();
|
||||
}
|
||||
|
||||
bool SyncManager::isValid()
|
||||
{
|
||||
return dataMan->isDBOpened();
|
||||
}
|
||||
|
||||
// emit signal when all data is downloaded from Colnod
|
||||
void SyncManager::areChangedDataReady()
|
||||
{
|
||||
|
||||
@ -17,6 +17,8 @@ public:
|
||||
|
||||
void prepareDatabase();
|
||||
|
||||
bool isValid();
|
||||
|
||||
public slots:
|
||||
void loadDataFromColnod();
|
||||
void loadDataFromDB();
|
||||
|
||||
@ -37,11 +37,6 @@ private slots:
|
||||
void deleteTokens();
|
||||
void subjectJSONParser();
|
||||
void tokenJSONParser();
|
||||
//void connectToDB();
|
||||
//void debugConnection();
|
||||
void saveDataToDB();
|
||||
void getUuid();
|
||||
|
||||
|
||||
private:
|
||||
std::shared_ptr<Token> getTestToken();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user