Deleted `CommonBirbankScript` and its associated derived classes (`GetLastDaysHistoryBirbankScript`, `LoginAndCheckAccountsBirbankScript`, `PayByCardBirbankScript`). Removed dependencies on these scripts, including XML parsing, account handling, and transaction workflows related to the Birbank app.
66 lines
2.3 KiB
C++
66 lines
2.3 KiB
C++
#include "GeneralLogDAO.h"
|
|
|
|
#include <QSqlQuery>
|
|
#include <QSqlError>
|
|
|
|
#include "DatabaseManager.h"
|
|
#include "time/DateUtils.h"
|
|
|
|
bool GeneralLogDAO::insert(const QString &level, const QString &source, const QString &message) {
|
|
QSqlQuery q(DatabaseManager::instance().database());
|
|
q.prepare(R"(
|
|
INSERT INTO general_logs (level, source, message, timestamp)
|
|
VALUES (:level, :source, :message, :timestamp)
|
|
)");
|
|
q.bindValue(":level", level);
|
|
q.bindValue(":source", source);
|
|
q.bindValue(":message", message);
|
|
q.bindValue(":timestamp", DateUtils::toUtcString(QDateTime::currentDateTimeUtc()));
|
|
return q.exec();
|
|
}
|
|
|
|
static QString buildWhereClause(const QStringList &levels) {
|
|
if (levels.isEmpty()) return {};
|
|
QStringList placeholders;
|
|
for (int i = 0; i < levels.size(); ++i)
|
|
placeholders << QString(":lvl%1").arg(i);
|
|
return " WHERE level IN (" + placeholders.join(',') + ")";
|
|
}
|
|
|
|
static void bindLevels(QSqlQuery &q, const QStringList &levels) {
|
|
for (int i = 0; i < levels.size(); ++i)
|
|
q.bindValue(QString(":lvl%1").arg(i), levels[i]);
|
|
}
|
|
|
|
QList<GeneralLogEntry> GeneralLogDAO::getLogs(int page, int pageSize, const QStringList &levels) {
|
|
QList<GeneralLogEntry> result;
|
|
QSqlQuery q(DatabaseManager::instance().database());
|
|
q.prepare(
|
|
"SELECT id, level, source, message, timestamp FROM general_logs"
|
|
+ buildWhereClause(levels)
|
|
+ " ORDER BY id DESC LIMIT :limit OFFSET :offset"
|
|
);
|
|
bindLevels(q, levels);
|
|
q.bindValue(":limit", pageSize);
|
|
q.bindValue(":offset", page * pageSize);
|
|
if (!q.exec()) return result;
|
|
while (q.next()) {
|
|
GeneralLogEntry e;
|
|
e.id = q.value("id").toInt();
|
|
e.level = q.value("level").toString();
|
|
e.source = q.value("source").toString();
|
|
e.message = q.value("message").toString();
|
|
e.timestamp = DateUtils::fromUtcString(q.value("timestamp").toString());
|
|
result.append(e);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
int GeneralLogDAO::getTotalCount(const QStringList &levels) {
|
|
QSqlQuery q(DatabaseManager::instance().database());
|
|
q.prepare("SELECT COUNT(*) FROM general_logs" + buildWhereClause(levels));
|
|
bindLevels(q, levels);
|
|
if (!q.exec() || !q.next()) return 0;
|
|
return q.value(0).toInt();
|
|
}
|