113 lines
3.5 KiB
C++
113 lines
3.5 KiB
C++
#include "sresultsender.h"
|
|
#include "sutilfunction.h"
|
|
#include <QSqlDatabase>
|
|
#include <QSettings>
|
|
#include <QSqlError>
|
|
#include <QSqlQuery>
|
|
#include <QString>
|
|
#include <QVariant>
|
|
#include <QDebug>
|
|
#include <iostream>
|
|
namespace
|
|
{
|
|
const QString SEPERATOR = "!@#";
|
|
}
|
|
class DBContainer
|
|
{
|
|
public:
|
|
DBContainer(QSqlDatabase& _db):m_db(_db)
|
|
{
|
|
|
|
}
|
|
~DBContainer()
|
|
{
|
|
m_db.close();
|
|
}
|
|
private:
|
|
QSqlDatabase &m_db;
|
|
};
|
|
|
|
|
|
namespace
|
|
{
|
|
const QString DBNAME = "effectprocess";
|
|
}
|
|
|
|
SResultSender::SResultSender(QObject* parent):QObject(parent)
|
|
{
|
|
init();
|
|
}
|
|
|
|
void SResultSender::init()
|
|
{
|
|
databaseSetting(DBNAME);
|
|
}
|
|
|
|
bool SResultSender::send(const State_s1_effect& _result)
|
|
{
|
|
QSqlDatabase db = QSqlDatabase::database(DBNAME);
|
|
|
|
if (!db.open())
|
|
{
|
|
emit signalError(E_ERROR_CODE::DB_OPEN_ERROR, db.lastError().text());
|
|
return false;
|
|
}
|
|
|
|
DBContainer container(db);
|
|
/*
|
|
QString strQuery = "delete from stats_s1_effect where event_num = " + QString::number(_result.event_num);
|
|
|
|
QSqlQuery query(db);
|
|
|
|
if (!query.exec(strQuery))
|
|
{
|
|
emit signalError(E_ERROR_CODE::DB_QUERY_ERROR, query.lastError().text() + "\n" + query.lastQuery());
|
|
return false;
|
|
}
|
|
*/
|
|
/*
|
|
strQuery = "insert into " + _table_name + " ("
|
|
"event_num,replybuzz,replycount,likecount,interactioncount,engagementcount) "
|
|
"values ";
|
|
strQuery += QString::number(_result.event_num) + ",";
|
|
strQuery += "'" + _result.replybuzz + "',";
|
|
strQuery += QString::number(_result.replycount) + ",";
|
|
strQuery += QString::number(_result.likecount) + ",";
|
|
strQuery += QString::number(_result.interactioncount) + ",";
|
|
strQuery += QString::number(_result.engagementcount) + ")";
|
|
|
|
strQuery += " on duplicate key update replybuzz = '" + _result.replybuzz + "', ";
|
|
strQuery += "likecount = " + QString::number(_result.likecount) + ",";
|
|
strQuery += "replycount = " + QString::number(_result.replycount) + ",";
|
|
strQuery += "interactioncount = " + QString::number(_result.interactioncount) + ",";
|
|
strQuery += "engagementcount = " + QString::number(_result.engagementcount);
|
|
*/
|
|
|
|
|
|
QString strQuery =
|
|
"insert into stats_s1_effect ("
|
|
"event_num,replybuzz,replycount,likecount,interactioncount,engagementcount,lastupdate_filter,status) "
|
|
"values "
|
|
"(:event_num,:replybuzz,:replycount,:likecount,:interactioncount,:engagementcount,:lastupdate_filter,'OK') "
|
|
"on duplicate key update replybuzz = :replybuzz, replycount = :replycount,"
|
|
"likecount = :likecount, interactioncount = :interactioncount,"
|
|
"engagementcount = :engagementcount, lastupdate_filter = :lastupdate_filter, status = 'OK'";
|
|
QSqlQuery query(db);
|
|
query.prepare(strQuery);
|
|
query.bindValue(":event_num", _result.event_num);
|
|
query.bindValue(":replybuzz", _result.replybuzz);
|
|
query.bindValue(":replycount", _result.replycount);
|
|
query.bindValue(":likecount", _result.likecount);
|
|
query.bindValue(":interactioncount", _result.interactioncount);
|
|
query.bindValue(":engagementcount", _result.engagementcount);
|
|
query.bindValue(":lastupdate_filter", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
|
|
|
if (!query.exec())
|
|
{
|
|
emit signalError(E_ERROR_CODE::DB_QUERY_ERROR, query.lastError().text() + "\n" + query.lastQuery());
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|