#include "BankDAO.h" #include #include #include #include "DatabaseManager.h" QList BankDAO::getAll() { QList 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 &banks) { QSqlDatabase db = DatabaseManager::instance().database(); if (!db.transaction()) { qWarning() << "[BankDAO] replaceAll: cannot begin transaction:" << db.lastError().text(); return; } QSqlQuery query(db); if (!query.exec("DELETE FROM banks")) { qWarning() << "[BankDAO] replaceAll: DELETE failed:" << query.lastError().text(); db.rollback(); return; } if (!query.prepare(R"( INSERT INTO banks (alias, name, nspk_name) VALUES (:alias, :name, :nspk_name) )")) { qWarning() << "[BankDAO] replaceAll: prepare INSERT failed:" << query.lastError().text(); db.rollback(); return; } 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() << "[BankDAO] replaceAll: INSERT failed for alias" << bank.alias << ":" << query.lastError().text() << "— rolling back"; db.rollback(); return; } } if (!db.commit()) { qWarning() << "[BankDAO] replaceAll: commit failed:" << db.lastError().text(); db.rollback(); } }