From 92b78c38048cd71c0a3eacf0e0a2efe8699c48a7 Mon Sep 17 00:00:00 2001 From: slava Date: Tue, 22 Apr 2025 10:18:42 +0700 Subject: [PATCH] Add description field to accounts table and related logic Added a new `description` column to the `accounts` table in the database schema. Updated the model, DAO methods, and queries to handle the `description` field for both inserting and retrieving account data. This change ensures that account entries can now include descriptive information. --- database/app_data.db | Bin 2621440 -> 2621440 bytes database/dao/AccountDAO.cpp | 8 +++++--- migrations.sql | 1 + models/db/AccountInfo.h | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/database/app_data.db b/database/app_data.db index d89002df63c46cbd64a269fab17b70f364f7b8ef..7b2a33b86c6e838753b92d66fb5b416cdebd749d 100644 GIT binary patch delta 663 zcmZwDJxtp`7zW@wo5VkHatYL=ftmnqX;GmVJCMM{P__y&Ko?ltBtw4$R8Ur|(o%IY zC@VwNsRKj6AedN?U_FZ+sS6|O5C%40M=FX+PI{!%>AUy7`&{=Ybz!qJ#R(ByLg*yy z5JL2=0o&l@}u358lzu2qxNH~nfH^WJY_m9J$33^zqG**Wl`n93tv`pD0VVCS2xo50$?zJT}DjL)& z78gG+tSm>@Yu@*oM?nA)S|9>ZkU$0nREU8FaYz7zB&47f+Ta1`&<<&M2pQ;rPIv?c XbU_xnp$B^5F+72%(05q#o@qv(c84uYHLjWCMZ&IaB%4&xQPA$A;vZoq18ZBSA&XZEk;E;tDe#UVI3ctAQlyqx6(!5tUCO-1h$!Uu$KTkt>#Dc-KE8-22RWofid zs5B(fFl%bxYFR!|KIp4##(M5471xAiK00HfxS0`4yH@n0RX3U~+wXYxTGKr}YPend zf2-#^l2kGb?y}=Mhi%tsG){WQes@$QdQrcWw$t_Pp4W7IH`-=a^seROq15JiLgRh; zJ{=47U-Pjh>`}rJ!ams`)@yGp8ia+cr|>C*j{Yu^@Hz=O;2{M9q(KA;C}cne1ys-= s3k-6gLmmoHgfSS05=_7(l%WDsV8Aq(P=y(og*ljq1z3De!X?%F0~Cvz2mk;8 diff --git a/database/dao/AccountDAO.cpp b/database/dao/AccountDAO.cpp index 593051d..4b1dee1 100644 --- a/database/dao/AccountDAO.cpp +++ b/database/dao/AccountDAO.cpp @@ -9,8 +9,8 @@ bool AccountDAO::upsertAccount(const AccountInfo &info) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare(R"( - INSERT INTO accounts (device_id, app_name, card_name, amount, update_time, status) - VALUES (:device_id, :app_name, :card_name, :amount, :update_time, :status) + INSERT INTO accounts (device_id, app_name, card_name, amount, update_time, status, description) + VALUES (:device_id, :app_name, :card_name, :amount, :update_time, :status, :description) ON CONFLICT(device_id, app_name, card_name) DO UPDATE SET amount = excluded.amount, @@ -24,6 +24,7 @@ bool AccountDAO::upsertAccount(const AccountInfo &info) { query.bindValue(":amount", info.amount); query.bindValue(":update_time", info.updateTime.toString(Qt::ISODate)); query.bindValue(":status", info.status); + query.bindValue(":description", info.description); if (!query.exec()) { qWarning() << "Ошибка при вставке/обновлении account:" << query.lastError().text(); @@ -45,7 +46,7 @@ QList AccountDAO::getAccounts(const QString &deviceId, const QStrin QSqlQuery query(DatabaseManager::instance().database()); query.prepare(R"( - SELECT id, device_id, app_name, card_name, amount, update_time, status + SELECT id, device_id, app_name, card_name, amount, update_time, status, description FROM accounts WHERE device_id = :device_id AND app_name = :app_name )"); @@ -67,6 +68,7 @@ QList AccountDAO::getAccounts(const QString &deviceId, const QStrin acc.amount = query.value("amount").toDouble(); acc.updateTime = QDateTime::fromString(query.value("update_time").toString(), Qt::ISODate); acc.status = query.value("status").toString(); + acc.description = query.value("description").toString(); accounts.append(acc); } diff --git a/migrations.sql b/migrations.sql index 609b09b..03467ed 100644 --- a/migrations.sql +++ b/migrations.sql @@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS accounts device_id TEXT, app_name TEXT, card_name TEXT, + description TEXT, amount REAL, update_time DATETIME DEFAULT CURRENT_TIMESTAMP, status TEXT, diff --git a/models/db/AccountInfo.h b/models/db/AccountInfo.h index bd06270..d7fcdf1 100644 --- a/models/db/AccountInfo.h +++ b/models/db/AccountInfo.h @@ -10,4 +10,5 @@ struct AccountInfo { double amount; QDateTime updateTime; QString status; + QString description; }; \ No newline at end of file