[Card DB] Split out database loading and querying from main class (#6175)

* Simplify add card.

Took 25 minutes

Took 8 minutes

# Commit time for manual adjustment:
# Took 16 minutes

Took 7 seconds

* Refactor out db loading from card db.

Took 39 minutes

Took 9 minutes

Took 2 minutes


Took 17 seconds

* Refactor out db queries from card db.

Took 42 minutes

* Lint.

Took 3 minutes

* I guess.

Took 7 minutes

* Tests.

Took 15 minutes

* I don't understand this.

Took 9 minutes

* fix linker errors

* Rename to querier and promote to QObject

Took 39 minutes

* Lint.

Took 3 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
Co-authored-by: ebbit1q <ebbit1q@gmail.com>
This commit is contained in:
BruebachL 2025-09-27 00:27:15 +02:00 committed by GitHub
parent 754dd904d2
commit d31b044529
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 719 additions and 572 deletions

View file

@ -21,6 +21,8 @@ add_executable(
../../cockatrice/src/card/card_info.cpp
../../cockatrice/src/card/exact_card.cpp
../../cockatrice/src/database/card_database.cpp
../../cockatrice/src/database/card_database_loader.cpp
../../cockatrice/src/database/card_database_querier.cpp
../../cockatrice/src/database/parser/card_database_parser.cpp
../../cockatrice/src/database/parser/cockatrice_xml_3.cpp
../../cockatrice/src/database/parser/cockatrice_xml_4.cpp
@ -35,6 +37,8 @@ add_executable(
../../cockatrice/src/card/card_info.cpp
../../cockatrice/src/card/exact_card.cpp
../../cockatrice/src/database/card_database.cpp
../../cockatrice/src/database/card_database_loader.cpp
../../cockatrice/src/database/card_database_querier.cpp
../../cockatrice/src/database/card_database_manager.cpp
../../cockatrice/src/database/parser/card_database_parser.cpp
../../cockatrice/src/database/parser/cockatrice_xml_3.cpp

View file

@ -13,21 +13,21 @@ TEST(CardDatabaseTest, LoadXml)
// ensure the card database is empty at start
ASSERT_EQ(0, db->getCardList().size()) << "Cards not empty at start";
ASSERT_EQ(0, db->getSetList().size()) << "Sets not empty at start";
ASSERT_EQ(0, db->getAllMainCardTypes().size()) << "Types not empty at start";
ASSERT_EQ(0, db->query()->getAllMainCardTypes().size()) << "Types not empty at start";
ASSERT_EQ(NotLoaded, db->getLoadStatus()) << "Incorrect status at start";
// load dummy cards and test result
db->loadCardDatabases();
ASSERT_EQ(9, db->getCardList().size()) << "Wrong card count after load";
ASSERT_EQ(5, db->getSetList().size()) << "Wrong sets count after load";
ASSERT_EQ(3, db->getAllMainCardTypes().size()) << "Wrong types count after load";
ASSERT_EQ(3, db->query()->getAllMainCardTypes().size()) << "Wrong types count after load";
ASSERT_EQ(Ok, db->getLoadStatus()) << "Wrong status after load";
// ensure the card database is empty after clear()
db->clear();
ASSERT_EQ(0, db->getCardList().size()) << "Cards not empty after clear";
ASSERT_EQ(0, db->getSetList().size()) << "Sets not empty after clear";
ASSERT_EQ(0, db->getAllMainCardTypes().size()) << "Types not empty after clear";
ASSERT_EQ(0, db->query()->getAllMainCardTypes().size()) << "Types not empty after clear";
ASSERT_EQ(NotLoaded, db->getLoadStatus()) << "Incorrect status after clear";
}
} // namespace

View file

@ -18,10 +18,10 @@ class CardQuery : public ::testing::Test
protected:
void SetUp() override
{
cat = CardDatabaseManager::getInstance()->getCardBySimpleName("Cat");
notDeadAfterAll = CardDatabaseManager::getInstance()->getCardBySimpleName("Not Dead");
truth = CardDatabaseManager::getInstance()->getCardBySimpleName("Truth");
doctor = CardDatabaseManager::getInstance()->getCardBySimpleName("Doctor");
cat = CardDatabaseManager::query()->getCardBySimpleName("Cat");
notDeadAfterAll = CardDatabaseManager::query()->getCardBySimpleName("Not Dead");
truth = CardDatabaseManager::query()->getCardBySimpleName("Truth");
doctor = CardDatabaseManager::query()->getCardBySimpleName("Doctor");
}
// void TearDown() override {}