#include "CDPropertyTemplateTable.h" namespace { CDPropertyTemplate defaultEntry{}; }; void CDPropertyTemplateTable::LoadValuesFromDatabase() { // First, get the size of the table size_t size = 0; auto tableSize = CDClientDatabase::ExecuteQuery("SELECT COUNT(*) FROM PropertyTemplate;"); while (!tableSize.eof()) { size = tableSize.getIntField(0, 0); tableSize.nextRow(); } tableSize.finalize(); auto& entries = GetEntriesMutable(); entries.reserve(size); auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM PropertyTemplate;"); while (!tableData.eof()) { auto entry = CDPropertyTemplate{ static_cast(tableData.getIntField("id", -1)), static_cast(tableData.getIntField("mapID", -1)), static_cast(tableData.getIntField("vendorMapID", -1)), tableData.getStringField("spawnName", "") }; entries.push_back(entry); tableData.nextRow(); } tableData.finalize(); } CDPropertyTemplate CDPropertyTemplateTable::GetByMapID(uint32_t mapID) { for (const auto& entry : GetEntries()) { if (entry.mapID == mapID) return entry; } return defaultEntry; }