1
0
forked from BRT/arc
arc/database/dao/BankDAO.cpp
slava 8eedd07ffd Add database migration, DAO enhancements, and OCR-based transaction handling updates
Implemented database migration for adding new fields (`json`, `sent_to_server`) in `events` table. Updated DAO methods to support the new fields and introduced `markSentToServer`. Enhanced Ozon transaction workflows with OCR-based extraction, event error handling improvements, and result reporting. Refactored `EventHandler` for streamlined task processing and stale event cleanup.
2026-03-08 14:20:12 +07:00

69 lines
1.9 KiB
C++

#include "BankDAO.h"
#include <QSqlQuery>
#include <QSqlError>
#include <QVariant>
#include "DatabaseManager.h"
QList<BankInfo> BankDAO::getAll() {
QList<BankInfo> list;
QSqlQuery query(DatabaseManager::instance().database());
query.prepare("SELECT * FROM banks ORDER BY alias");
if (!query.exec()) {
qWarning() << "Ошибка при получении banks:" << query.lastError().text();
return list;
}
while (query.next()) {
BankInfo bank;
bank.id = query.value("id").toInt();
bank.alias = query.value("alias").toString();
bank.name = query.value("name").toString();
bank.nspkName = query.value("nspk_name").toString();
list.append(bank);
}
return list;
}
BankInfo BankDAO::findByAlias(const QString &alias) {
QSqlQuery query(DatabaseManager::instance().database());
query.prepare("SELECT * FROM banks WHERE alias = :alias LIMIT 1");
query.bindValue(":alias", alias);
if (!query.exec() || !query.next()) return {};
BankInfo bank;
bank.id = query.value("id").toInt();
bank.alias = query.value("alias").toString();
bank.name = query.value("name").toString();
bank.nspkName = query.value("nspk_name").toString();
return bank;
}
void BankDAO::replaceAll(const QList<BankInfo> &banks) {
QSqlDatabase db = DatabaseManager::instance().database();
QSqlQuery query(db);
db.transaction();
query.exec("DELETE FROM banks");
query.prepare(R"(
INSERT INTO banks (alias, name, nspk_name)
VALUES (:alias, :name, :nspk_name)
)");
for (const BankInfo &bank : banks) {
query.bindValue(":alias", bank.alias);
query.bindValue(":name", bank.name);
query.bindValue(":nspk_name", bank.nspkName);
if (!query.exec()) {
qWarning() << "Ошибка при вставке bank:" << query.lastError().text();
}
}
db.commit();
}