From 6b45d3b71dc1e09a16a3bc66cc54ced1c9de8d43 Mon Sep 17 00:00:00 2001 From: Maciej Gibowicz Date: Mon, 24 Feb 2025 11:26:01 +0100 Subject: [PATCH] [BH-2097] Adding and deleting a single custom quote When deleting quotes, if the database is already empty, we switch to predefined quotes. --- .../services/db/agents/QuotesAgent.cpp | 29 ++++++++++++------- .../services/db/agents/QuotesAgent.hpp | 1 + 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/products/BellHybrid/services/db/agents/QuotesAgent.cpp b/products/BellHybrid/services/db/agents/QuotesAgent.cpp index aef3256101f37656b6e52b1cbb961631b581fafd..e8d16cf10f5d6ff264cd6b06e0a08e82dc597459 100644 --- a/products/BellHybrid/services/db/agents/QuotesAgent.cpp +++ b/products/BellHybrid/services/db/agents/QuotesAgent.cpp @@ -42,6 +42,15 @@ namespace Quotes return nullptr; } + auto QuotesAgent::isCustomQuotesDatabaseEmpty() -> bool + { + const auto result = quotesDB->query(Queries::getCustomQuotesCount); + if (result == nullptr || result->getRowCount() == 0) { + return true; + } + return ((*result)[0].getUInt32() == 0); + } + auto QuotesAgent::handleReadRandomizedQuote(std::shared_ptr query) -> std::unique_ptr { const auto request = std::dynamic_pointer_cast(query); @@ -121,6 +130,10 @@ namespace Quotes const auto executeResult = quotesDB->execute(Queries::deleteCustomQuote, request->quoteId); if (executeResult && quotesGroup == customGroup) { + if (isCustomQuotesDatabaseEmpty()) { + // if the list of custom quotes is empty, we change the group to a predefined one + settings->setValue(settings::Quotes::selectedGroup, predefinedGroup, settings::SettingsScope::Global); + } shuffleQuoteModel.updateList(ListUpdateMode::Forced); } @@ -135,17 +148,11 @@ namespace Quotes if (request == nullptr) { return std::make_unique(false); } - if (request->group == customGroup) { - const auto result = quotesDB->query(Queries::getCustomQuotesCount); - if (result == nullptr || result->getRowCount() == 0) { - return std::make_unique(false); - } - if ((*result)[0].getUInt32() == 0) { - // if the list of custom quotes is empty, we change the group to a predefined one - settings->setValue(settings::Quotes::selectedGroup, predefinedGroup, settings::SettingsScope::Global); - shuffleQuoteModel.updateList(ListUpdateMode::Forced); - return std::make_unique(true); - } + if (request->group == customGroup && isCustomQuotesDatabaseEmpty()) { + // if the list of custom quotes is empty, we change the group to a predefined one + settings->setValue(settings::Quotes::selectedGroup, predefinedGroup, settings::SettingsScope::Global); + shuffleQuoteModel.updateList(ListUpdateMode::Forced); + return std::make_unique(true); } settings->setValue(settings::Quotes::selectedGroup, request->group, settings::SettingsScope::Global); diff --git a/products/BellHybrid/services/db/agents/QuotesAgent.hpp b/products/BellHybrid/services/db/agents/QuotesAgent.hpp index 073c1d3f93b820793443789bc88831f8456775f8..729ea76400cf9fd528ffd46835b5e246ea416f08 100644 --- a/products/BellHybrid/services/db/agents/QuotesAgent.hpp +++ b/products/BellHybrid/services/db/agents/QuotesAgent.hpp @@ -30,6 +30,7 @@ namespace Quotes Database *quotesDB; ShuffleQuoteModel shuffleQuoteModel; + auto isCustomQuotesDatabaseEmpty() -> bool; auto handleAddNewEntry(std::shared_ptr query) -> std::unique_ptr; auto handleEditEntry(std::shared_ptr query) -> std::unique_ptr; auto handleDeleteEntry(std::shared_ptr query) -> std::unique_ptr;