#include "CDEmoteTable.h"

//! Constructor
CDEmoteTableTable::CDEmoteTableTable(void) {
	auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM Emotes");
	while (!tableData.eof()) {
		CDEmoteTable* entry = new CDEmoteTable();
		entry->ID = tableData.getIntField("id", -1);
		entry->animationName = tableData.getStringField("animationName", "");
		entry->iconFilename = tableData.getStringField("iconFilename", "");
		entry->channel = tableData.getIntField("channel", -1);
		entry->locked = tableData.getIntField("locked", -1) != 0;
		entry->localize = tableData.getIntField("localize", -1) != 0;
		entry->locState = tableData.getIntField("locStatus", -1);
		entry->gateVersion = tableData.getStringField("gate_version", "");

		entries.insert(std::make_pair(entry->ID, entry));
		tableData.nextRow();
	}

	tableData.finalize();
}

//! Destructor
CDEmoteTableTable::~CDEmoteTableTable(void) {
	for (auto e : entries) {
		if (e.second) delete e.second;
	}

	entries.clear();
}

CDEmoteTable* CDEmoteTableTable::GetEmote(int id) {
	for (auto e : entries) {
		if (e.first == id) return e.second;
	}

	return nullptr;
}