#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(0, -1);
		entry->animationName = tableData.getStringField(1, "");
		entry->iconFilename = tableData.getStringField(2, "");
		entry->channel = tableData.getIntField(3, -1);
		entry->locked = tableData.getIntField(5, -1) != 0;
		entry->localize = tableData.getIntField(6, -1) != 0;
		entry->locState = tableData.getIntField(7, -1);
		entry->gateVersion = tableData.getIntField(8, -1);

		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();
}

//! Returns the table's name
std::string CDEmoteTableTable::GetName(void) const {
	return "Emotes";
}

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

	return nullptr;
}