forked from ondra/colnod-connector
Working on logs
This commit is contained in:
parent
a55a6f6b93
commit
ba1315d1da
@ -11,15 +11,14 @@ int main(int argc, char *argv[])
|
||||
QCoreApplication::setApplicationVersion("1.0");
|
||||
QCommandLineParser parser;
|
||||
Logger *logger = Logger::getLogger();
|
||||
parser.setApplicationDescription("Dry mode");
|
||||
parser.setApplicationDescription("Colnod sync");
|
||||
QCommandLineOption dryModeOption("dryMode", "ColnodAPI", "Read-only mode, prints changes which would normally be made");
|
||||
parser.addOption(dryModeOption);
|
||||
parser.process(app);
|
||||
auto *api = new ColnodAPI(true); // parser.isSet(dryModeOption));
|
||||
auto *api = new ColnodAPI(parser.isSet(dryModeOption));
|
||||
api->loadDataFromDB();
|
||||
api->loadDataFromColnod();
|
||||
QObject::connect(api, &ColnodAPI::dataDownloaded, [=](){
|
||||
qDebug() << "All items are loaded to data manager.";
|
||||
api->syncDataFromColnodToDB();
|
||||
api->syncDataFromDBToColnod();
|
||||
QObject::connect(api, &ColnodAPI::syncFinished, [=](){
|
||||
|
||||
@ -135,7 +135,6 @@ void ColnodAPI::syncUpdatedDataFromDBToColnod()
|
||||
areDataUpdatedToColnod();
|
||||
resp0->deleteLater();
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -144,12 +143,18 @@ void ColnodAPI::syncDeletedDataFromDBToColnod()
|
||||
{
|
||||
dataMan->filterTokensDB();
|
||||
auto tokensToDelete = dataMan->getTokensToDeleteDB();
|
||||
Response* resp1 = reqMan->deleteTokens(tokensToDelete);
|
||||
connect(resp1, &Response::ready, [=](){
|
||||
deleteFinished = true;
|
||||
areDataUpdatedToColnod();
|
||||
resp1->deleteLater();
|
||||
});
|
||||
if (dryMode){
|
||||
for (const auto &token : tokensToDelete)
|
||||
qInfo() << "Deleting token: " << token << "from Colnod";
|
||||
}
|
||||
else {
|
||||
Response* resp1 = reqMan->deleteTokens(tokensToDelete);
|
||||
connect(resp1, &Response::ready, [=](){
|
||||
deleteFinished = true;
|
||||
areDataUpdatedToColnod();
|
||||
resp1->deleteLater();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// For full sync
|
||||
|
||||
@ -154,15 +154,17 @@ QString DatabaseManager::getLastQuery(const QSqlQuery& query) const
|
||||
void DatabaseManager::executeNonPreperedQuery(const QString &statement, QSqlQuery &query) const
|
||||
{
|
||||
if (dryMode){
|
||||
QString sqlStatement = getLastQuery(query);
|
||||
qDebug() << sqlStatement;
|
||||
if (statement.contains("SELECT"))
|
||||
query.exec(statement);
|
||||
}
|
||||
else{
|
||||
query.exec(statement);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool DatabaseManager::executeQuery(QSqlQuery &query) const
|
||||
{
|
||||
if (dryMode){
|
||||
@ -172,7 +174,6 @@ bool DatabaseManager::executeQuery(QSqlQuery &query) const
|
||||
query.exec();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool res = query.exec();
|
||||
return res;
|
||||
|
||||
@ -270,11 +271,29 @@ void DatabaseManager::setLastUpdate(const QString& id, quint64 lastUpdate)
|
||||
executeQuery(query);
|
||||
}
|
||||
|
||||
void DatabaseManager::log(QString msg)
|
||||
void DatabaseManager::log(const QString &msg)
|
||||
{
|
||||
query.prepare("INSERT INTO logs (msg) VALUES (:msg)");
|
||||
query.prepare("INSERT INTO logs (log_time, msg) VALUES (NOW(), :msg)");
|
||||
query.bindValue(":msg", msg);
|
||||
query.exec();
|
||||
//executeQuery(query);
|
||||
}
|
||||
|
||||
QString DatabaseManager::getSubjectName(const QString &tokenId)
|
||||
{
|
||||
query.prepare("SELECT name FROM colnod_subject WHERE id = (SELECT subject_id FROM colnod_token WHERE id = :tokenId)");
|
||||
query.bindValue(":tokenId", tokenId);
|
||||
executeQuery(query);
|
||||
if (query.next())
|
||||
return query.value(0).toString();
|
||||
qWarning() << "Token:" << tokenId << "is not assigned to any sbject";
|
||||
return "No Subject";
|
||||
}
|
||||
|
||||
bool DatabaseManager::checkDeletedToken(const QString &id)
|
||||
{
|
||||
query.prepare("SELECT deleted FROM colnod_token WHERE id = :id");
|
||||
query.bindValue(":id", id);
|
||||
executeQuery(query);
|
||||
query.next();
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
|
||||
@ -36,7 +36,10 @@ public:
|
||||
|
||||
void setLastUpdate(const QString& id, quint64 lastUpdate);
|
||||
|
||||
void log(QString msg);
|
||||
void log(const QString &msg);
|
||||
QString getSubjectName(const QString &tokenId);
|
||||
bool checkDeletedToken(const QString &id);
|
||||
|
||||
|
||||
private:
|
||||
bool checkIfExists(const QString& id, const QString& table);
|
||||
|
||||
@ -46,11 +46,11 @@ void DataManager::fillTokensToUpdateColnod(const QString& response)
|
||||
token->setDeleted(false);
|
||||
tokensToUpdateFromColnodToDB.insert(token->idToStringWithoutBraces(), token);
|
||||
}
|
||||
qInfo() << tokensToUpdateFromColnodToDB.size() << " tokens to update from Colnod";
|
||||
qInfo() << "Colnod:" << tokensToUpdateFromColnodToDB.size() << "tokens to update";
|
||||
}
|
||||
else
|
||||
{
|
||||
qInfo() << "0 tokens to update from Colnod";
|
||||
qInfo() << "Colnod: 0 tokens to update";
|
||||
auto token = new Token("empty");
|
||||
tokensToUpdateFromColnodToDB.insert(token->getName(), token);
|
||||
}
|
||||
@ -69,11 +69,11 @@ void DataManager::fillSubjectsToUpdateColnod(const QString& response)
|
||||
subject->fromJSON(item.toObject());
|
||||
subjectsToUpdateFromColnodToDB.insert(subject->idToStringWithoutBraces(), subject);
|
||||
}
|
||||
qInfo() << subjectsToUpdateFromColnodToDB.size() << " subjects to update from Colnod";
|
||||
qInfo() << "Colnod:" << subjectsToUpdateFromColnodToDB.size() << "subjects to update";
|
||||
}
|
||||
else
|
||||
{
|
||||
qInfo() << "0 subjects to update from Colnod";
|
||||
qInfo() << "Colnod:" << "0 subjects to update";
|
||||
Subject* subject = new Subject("empty");
|
||||
subjectsToUpdateFromColnodToDB.insert(subject->getName(), subject);
|
||||
}
|
||||
@ -94,8 +94,8 @@ void DataManager::fillTokensToChangeDB()
|
||||
tokensToUpdateFromDBToColnod.insert(token->idToStringWithoutBraces(), token);
|
||||
}
|
||||
}
|
||||
qDebug() << tokensToUpdateFromDBToColnod.size() << " tokens to update from DB";
|
||||
qDebug() << tokensFromDBToDeleteFromColnod.size() << " tokens to delete from DB";
|
||||
qDebug() << "DB:" << tokensToUpdateFromDBToColnod.size() << "tokens to update";
|
||||
qDebug() << "DB:" << tokensFromDBToDeleteFromColnod.size() << "tokens to delete";
|
||||
}
|
||||
|
||||
void DataManager::fillSubjectsToUpdateDB()
|
||||
@ -106,8 +106,6 @@ void DataManager::fillSubjectsToUpdateDB()
|
||||
// load working set with subjest to delete from Colnod
|
||||
void DataManager::fillSubjectsToDeleteColnod(const QString& json)
|
||||
{
|
||||
Logger::log("hello from dataManager :)");
|
||||
Logger::logToDb("testing");
|
||||
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
||||
QJsonArray items = doc.object()["items"].toArray();
|
||||
if (!items.empty())
|
||||
@ -115,10 +113,10 @@ void DataManager::fillSubjectsToDeleteColnod(const QString& json)
|
||||
for (QJsonValueRef item : items) {
|
||||
subjectsFromColnodToDeleteFromDB.append(item.toString());
|
||||
}
|
||||
qInfo() << subjectsFromColnodToDeleteFromDB.size() << " subjects deleted in Colnod";
|
||||
qInfo() << "Colnod:" << subjectsFromColnodToDeleteFromDB.size() << "subjects to delete";
|
||||
}
|
||||
else {
|
||||
qInfo() << "0 subjects deleted in Colnod";
|
||||
qInfo() << "Colnod: 0 subjects to delete";
|
||||
subjectsFromColnodToDeleteFromDB.append("empty");
|
||||
}
|
||||
}
|
||||
@ -133,10 +131,10 @@ void DataManager::fillTokensToDeleteColnod(const QString& json)
|
||||
for (QJsonValueRef item : items) {
|
||||
tokensFromColnodToDeleteFromDB.append(item.toString());
|
||||
}
|
||||
qInfo() << tokensFromColnodToDeleteFromDB.size() << " tokens deleted in Colnod";
|
||||
qInfo() << "Colnod:" << tokensFromColnodToDeleteFromDB.size() << "tokens to delete";
|
||||
}
|
||||
else {
|
||||
qInfo() << "0 tokens deleted in Colnod";
|
||||
qInfo() << "Colnod: 0 tokens to delete";
|
||||
tokensFromColnodToDeleteFromDB.append("empty");
|
||||
}
|
||||
}
|
||||
@ -150,11 +148,12 @@ void DataManager::fillSubjectsToDeleteDB()
|
||||
void DataManager::pushSubjectsToDB()
|
||||
{
|
||||
if (subjectsToUpdateFromColnodToDB.contains("empty")) {
|
||||
qInfo() << "DB: 0 subjects added";
|
||||
qInfo() << "DB: 0 subjects updated";
|
||||
return;
|
||||
}
|
||||
int updated = 0;
|
||||
int added = 0;
|
||||
qInfo() << "Subjects in progress...";
|
||||
for (const auto& subject : subjectsToUpdateFromColnodToDB)
|
||||
{
|
||||
if (db->saveSubject(subject, "colnod_subject") > 0)
|
||||
@ -163,20 +162,21 @@ void DataManager::pushSubjectsToDB()
|
||||
updated++;
|
||||
db->saveSubjectAttributes(subject, "colnod_subject_attribute");
|
||||
}
|
||||
qInfo() << added << " subjects added to DB";
|
||||
qInfo() << updated << " subjects updated to DB";
|
||||
qInfo() << "DB:" << added << "subjects added";
|
||||
qInfo() << "DB:" << updated << "subjects updated";
|
||||
}
|
||||
|
||||
// update tokens from colnod to DB
|
||||
void DataManager::pushTokensToDB()
|
||||
{
|
||||
if (tokensToUpdateFromColnodToDB.contains("empty")){
|
||||
qInfo() << "DB: 0 tokens added";
|
||||
qInfo() << "DB: 0 tokens updated";
|
||||
return;
|
||||
}
|
||||
filterTokensColnod();
|
||||
int updated = 0;
|
||||
int added = 0;
|
||||
qInfo() << "Tokens in progress...";
|
||||
for (const auto& token : tokensToUpdateFromColnodToDB)
|
||||
{
|
||||
if (db->saveToken(token, "colnod_token") > 0)
|
||||
@ -184,8 +184,8 @@ void DataManager::pushTokensToDB()
|
||||
else
|
||||
updated++;
|
||||
}
|
||||
qInfo() << added << " tokens added to DB";
|
||||
qInfo() << updated << " tokens updated to DB";
|
||||
qInfo() << "DB:" << added << " tokens added";
|
||||
qInfo() << "DB:" << updated << " tokens updated";
|
||||
|
||||
}
|
||||
|
||||
@ -193,14 +193,14 @@ void DataManager::deleteSubjectsFromDB()
|
||||
{
|
||||
if (subjectsFromColnodToDeleteFromDB[0] == "empty")
|
||||
{
|
||||
qInfo() << "DB: 0 subjects deleted";
|
||||
return;
|
||||
}
|
||||
qInfo() << "Deleting subjects in progress...";
|
||||
for (const auto& subjectId : subjectsFromColnodToDeleteFromDB)
|
||||
{
|
||||
db->setDeleted(subjectId, "colnod_subject");
|
||||
}
|
||||
qInfo() << subjectsFromColnodToDeleteFromDB.size() << " subject deleted from DB";
|
||||
qInfo() << "DB:" << subjectsFromColnodToDeleteFromDB.size() << " subject deleted";
|
||||
}
|
||||
|
||||
// "delete" (set deleted true) tokens in DB depends on Colnod
|
||||
@ -208,15 +208,20 @@ void DataManager::setDeletedToTokensFromDB()
|
||||
{
|
||||
if (tokensFromColnodToDeleteFromDB[0] == "empty")
|
||||
{
|
||||
qDebug() << "0 tokens to be deleted";
|
||||
qDebug() << "DB: 0 tokens deleted";
|
||||
return;
|
||||
}
|
||||
qDebug() << "Deleted tokens in progress...";
|
||||
int alreadyDeleted = 0;
|
||||
for (const auto& tokenId : tokensFromColnodToDeleteFromDB)
|
||||
{
|
||||
db->setDeleted(tokenId, "colnod_token");
|
||||
if (!db->checkDeletedToken(tokenId)){
|
||||
db->setDeleted(tokenId, "colnod_token");
|
||||
Logger::logToDb(Logger::makeMsg(tokenId, "deleted", "DB"));
|
||||
}
|
||||
else
|
||||
alreadyDeleted++;
|
||||
}
|
||||
qDebug() << tokensFromColnodToDeleteFromDB.size() << "tokens deleted from DB";
|
||||
qDebug() << "DB:" << tokensFromColnodToDeleteFromDB.size() - alreadyDeleted << "tokens deleted";
|
||||
}
|
||||
|
||||
// do I have loaded all data
|
||||
@ -284,7 +289,7 @@ void DataManager::filterTokensColnod()
|
||||
}
|
||||
}
|
||||
|
||||
// sync last update in colnod and DB
|
||||
// sync last update from colnod to DB
|
||||
void DataManager::setLastUpdate()
|
||||
{
|
||||
for (const auto &token : tokensToUpdateFromColnodToDB){
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
#include "logger.h"
|
||||
|
||||
DatabaseManager *Logger::dbMan = nullptr;
|
||||
Logger *Logger::logger = nullptr;
|
||||
|
||||
Logger::Logger()
|
||||
{
|
||||
dbMan = nullptr;
|
||||
@ -19,7 +22,8 @@ void Logger::log(const QString& msg)
|
||||
|
||||
void Logger::logToDb(const QString &msg)
|
||||
{
|
||||
dbMan->log(msg);
|
||||
Q_ASSERT(Logger::dbMan);
|
||||
Logger::dbMan->log(msg);
|
||||
}
|
||||
|
||||
void Logger::setDBMan(DatabaseManager *dbMan)
|
||||
@ -27,7 +31,12 @@ void Logger::setDBMan(DatabaseManager *dbMan)
|
||||
Logger::dbMan = dbMan;
|
||||
}
|
||||
|
||||
QString Logger::makeMsg(const QString &tokenId, const QString &action, const QString &source)
|
||||
{
|
||||
QString msg = QString("Token: %1 of subject: %2 %3. Source: %4").arg(tokenId,dbMan->getSubjectName(tokenId), action, source);
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Logger *Logger::logger = nullptr;
|
||||
DatabaseManager *Logger::dbMan = nullptr;
|
||||
|
||||
|
||||
@ -20,9 +20,11 @@ public:
|
||||
static void log(const QString& msg);
|
||||
static void logToDb(const QString& msg);
|
||||
static void setDBMan(DatabaseManager* dbMan);
|
||||
static QString makeMsg(const QString& tokenId, const QString& action, const QString& source);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@ Response* RequestManager::login()
|
||||
reply->deleteLater();
|
||||
return;
|
||||
}
|
||||
qDebug() << "Logged in successfully.";
|
||||
//qDebug() << "Logged in successfully.";
|
||||
loginStatus = true;
|
||||
emit successLogin();
|
||||
reply->deleteLater();
|
||||
|
||||
@ -11,6 +11,7 @@ void ComplexTest::initTestCase()
|
||||
// QCOMPARE(deleteTokensRespSpy.count(), 0);
|
||||
// deleteTokensRespSpy.wait(timeout);
|
||||
// QTest::qWait(2500);
|
||||
// Logger *logger = Logger::getLogger();
|
||||
start = QDateTime::currentMSecsSinceEpoch()-2000;
|
||||
api = new ColnodAPI();
|
||||
qDebug() << start;
|
||||
@ -129,7 +130,6 @@ void ComplexTest::fullSync()
|
||||
|
||||
void ComplexTest::syncLastUpdated()
|
||||
{
|
||||
Logger *logger = Logger::getLogger();
|
||||
Logger::log("ahoj");
|
||||
api->loadDataFromColnod();
|
||||
QSignalSpy spy(api, &ColnodAPI::dataDownloaded);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user