diff --git a/dDatabase/Tables/CDRebuildComponentTable.cpp b/dDatabase/Tables/CDRebuildComponentTable.cpp index 4a05e413..8f10d5b4 100644 --- a/dDatabase/Tables/CDRebuildComponentTable.cpp +++ b/dDatabase/Tables/CDRebuildComponentTable.cpp @@ -1,19 +1,8 @@ #include "CDRebuildComponentTable.h" void CDRebuildComponentTable::LoadValuesFromDatabase() { - // First, get the size of the table - unsigned int size = 0; - auto tableSize = CDClientDatabase::ExecuteQuery("SELECT COUNT(*) FROM RebuildComponent"); - while (!tableSize.eof()) { - size = tableSize.getIntField(0, 0); - - tableSize.nextRow(); - } - - this->entries.reserve(size); - // Now get the data - auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent order by id"); + auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent"); while (!tableData.eof()) { CDRebuildComponent entry; uint32_t id = tableData.getIntField("id", -1); @@ -27,14 +16,12 @@ void CDRebuildComponentTable::LoadValuesFromDatabase() { entry.post_imagination_cost = tableData.getIntField("post_imagination_cost", -1); entry.time_before_smash = tableData.getFloatField("time_before_smash", -1.0f); - this->entries.push_back(std::make_pair(id, entry)); + this->entries.insert_or_assign(id, entry); tableData.nextRow(); } } const std::optional CDRebuildComponentTable::Get(uint32_t componentId) { - auto result = std::lower_bound(this->entries.begin(), this->entries.end(), componentId, [](const auto& entry, const auto& componentId) { - return entry.first < componentId; - }); - return result == this->entries.end() ? std::nullopt : std::make_optional(result->second); + auto it = this->entries.find(componentId); + return it != this->entries.end() ? std::make_optional(it->second) : std::nullopt; } diff --git a/dDatabase/Tables/CDRebuildComponentTable.h b/dDatabase/Tables/CDRebuildComponentTable.h index 8a40f646..c77d5c60 100644 --- a/dDatabase/Tables/CDRebuildComponentTable.h +++ b/dDatabase/Tables/CDRebuildComponentTable.h @@ -17,7 +17,7 @@ struct CDRebuildComponent { class CDRebuildComponentTable : public CDTable { private: - std::vector> entries; + std::unordered_map entries; public: void LoadValuesFromDatabase();