[Repositories] Add more precise types to repository generator (#2391)

* Make utils/scripts/generators/repository-generator.pl aware of more
datatypes

This adds support for unsigned and more integer types. It also avoids
using parsing functions that require casting (still needed in some
cases)

Having the data types in the Repository structs better map to the types
in the database will allow us to avoid casting when we pull data out of
them. And as a benefit, assume something is wrong if we do :)

Hopefully clean up some warnings due to casting too.

Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
Michael Cook (mackal)
2022-08-31 01:04:27 -04:00
committed by GitHub
parent fcf01f6d87
commit 6f7fa98996
183 changed files with 7849 additions and 7818 deletions
@@ -19,107 +19,107 @@
class BaseCharacterDataRepository {
public:
struct CharacterData {
int id;
int account_id;
uint32_t id;
int32_t account_id;
std::string name;
std::string last_name;
std::string title;
std::string suffix;
int zone_id;
int zone_instance;
uint32_t zone_id;
uint32_t zone_instance;
float y;
float x;
float z;
float heading;
int gender;
int race;
int class_;
int level;
int deity;
int birthday;
int last_login;
int time_played;
int level2;
int anon;
int gm;
int face;
int hair_color;
int hair_style;
int beard;
int beard_color;
int eye_color_1;
int eye_color_2;
int drakkin_heritage;
int drakkin_tattoo;
int drakkin_details;
int ability_time_seconds;
int ability_number;
int ability_time_minutes;
int ability_time_hours;
int exp;
int aa_points_spent;
int aa_exp;
int aa_points;
int group_leadership_exp;
int raid_leadership_exp;
int group_leadership_points;
int raid_leadership_points;
int points;
int cur_hp;
int mana;
int endurance;
int intoxication;
int str;
int sta;
int cha;
int dex;
int int_;
int agi;
int wis;
int zone_change_count;
int toxicity;
int hunger_level;
int thirst_level;
int ability_up;
int ldon_points_guk;
int ldon_points_mir;
int ldon_points_mmc;
int ldon_points_ruj;
int ldon_points_tak;
int ldon_points_available;
int tribute_time_remaining;
int career_tribute_points;
int tribute_points;
int tribute_active;
int pvp_status;
int pvp_kills;
int pvp_deaths;
int pvp_current_points;
int pvp_career_points;
int pvp_best_kill_streak;
int pvp_worst_death_streak;
int pvp_current_kill_streak;
int pvp2;
int pvp_type;
int show_helm;
int group_auto_consent;
int raid_auto_consent;
int guild_auto_consent;
int leadership_exp_on;
int RestTimer;
int air_remaining;
int autosplit_enabled;
int lfp;
int lfg;
uint8_t gender;
uint16_t race;
uint8_t class_;
uint32_t level;
uint32_t deity;
uint32_t birthday;
uint32_t last_login;
uint32_t time_played;
uint8_t level2;
uint8_t anon;
uint8_t gm;
uint32_t face;
uint8_t hair_color;
uint8_t hair_style;
uint8_t beard;
uint8_t beard_color;
uint8_t eye_color_1;
uint8_t eye_color_2;
uint32_t drakkin_heritage;
uint32_t drakkin_tattoo;
uint32_t drakkin_details;
uint8_t ability_time_seconds;
uint8_t ability_number;
uint8_t ability_time_minutes;
uint8_t ability_time_hours;
uint32_t exp;
uint32_t aa_points_spent;
uint32_t aa_exp;
uint32_t aa_points;
uint32_t group_leadership_exp;
uint32_t raid_leadership_exp;
uint32_t group_leadership_points;
uint32_t raid_leadership_points;
uint32_t points;
uint32_t cur_hp;
uint32_t mana;
uint32_t endurance;
uint32_t intoxication;
uint32_t str;
uint32_t sta;
uint32_t cha;
uint32_t dex;
uint32_t int_;
uint32_t agi;
uint32_t wis;
uint32_t zone_change_count;
uint32_t toxicity;
uint32_t hunger_level;
uint32_t thirst_level;
uint32_t ability_up;
uint32_t ldon_points_guk;
uint32_t ldon_points_mir;
uint32_t ldon_points_mmc;
uint32_t ldon_points_ruj;
uint32_t ldon_points_tak;
uint32_t ldon_points_available;
uint32_t tribute_time_remaining;
uint32_t career_tribute_points;
uint32_t tribute_points;
uint32_t tribute_active;
uint8_t pvp_status;
uint32_t pvp_kills;
uint32_t pvp_deaths;
uint32_t pvp_current_points;
uint32_t pvp_career_points;
uint32_t pvp_best_kill_streak;
uint32_t pvp_worst_death_streak;
uint32_t pvp_current_kill_streak;
uint32_t pvp2;
uint32_t pvp_type;
uint32_t show_helm;
uint8_t group_auto_consent;
uint8_t raid_auto_consent;
uint8_t guild_auto_consent;
uint8_t leadership_exp_on;
uint32_t RestTimer;
uint32_t air_remaining;
uint32_t autosplit_enabled;
uint8_t lfp;
uint8_t lfg;
std::string mailkey;
int xtargets;
int firstlogon;
int e_aa_effects;
int e_percent_to_aa;
int e_expended_aa_spent;
int aa_points_spent_old;
int aa_points_old;
int e_last_invsnapshot;
uint8_t xtargets;
int8_t firstlogon;
uint32_t e_aa_effects;
uint32_t e_percent_to_aa;
uint32_t e_expended_aa_spent;
uint32_t aa_points_spent_old;
uint32_t aa_points_old;
uint32_t e_last_invsnapshot;
time_t deleted_at;
};
@@ -518,107 +518,107 @@ public:
if (results.RowCount() == 1) {
CharacterData e{};
e.id = atoi(row[0]);
e.account_id = atoi(row[1]);
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.account_id = static_cast<int32_t>(atoi(row[1]));
e.name = row[2] ? row[2] : "";
e.last_name = row[3] ? row[3] : "";
e.title = row[4] ? row[4] : "";
e.suffix = row[5] ? row[5] : "";
e.zone_id = atoi(row[6]);
e.zone_instance = atoi(row[7]);
e.y = static_cast<float>(atof(row[8]));
e.x = static_cast<float>(atof(row[9]));
e.z = static_cast<float>(atof(row[10]));
e.heading = static_cast<float>(atof(row[11]));
e.gender = atoi(row[12]);
e.race = atoi(row[13]);
e.class_ = atoi(row[14]);
e.level = atoi(row[15]);
e.deity = atoi(row[16]);
e.birthday = atoi(row[17]);
e.last_login = atoi(row[18]);
e.time_played = atoi(row[19]);
e.level2 = atoi(row[20]);
e.anon = atoi(row[21]);
e.gm = atoi(row[22]);
e.face = atoi(row[23]);
e.hair_color = atoi(row[24]);
e.hair_style = atoi(row[25]);
e.beard = atoi(row[26]);
e.beard_color = atoi(row[27]);
e.eye_color_1 = atoi(row[28]);
e.eye_color_2 = atoi(row[29]);
e.drakkin_heritage = atoi(row[30]);
e.drakkin_tattoo = atoi(row[31]);
e.drakkin_details = atoi(row[32]);
e.ability_time_seconds = atoi(row[33]);
e.ability_number = atoi(row[34]);
e.ability_time_minutes = atoi(row[35]);
e.ability_time_hours = atoi(row[36]);
e.exp = atoi(row[37]);
e.aa_points_spent = atoi(row[38]);
e.aa_exp = atoi(row[39]);
e.aa_points = atoi(row[40]);
e.group_leadership_exp = atoi(row[41]);
e.raid_leadership_exp = atoi(row[42]);
e.group_leadership_points = atoi(row[43]);
e.raid_leadership_points = atoi(row[44]);
e.points = atoi(row[45]);
e.cur_hp = atoi(row[46]);
e.mana = atoi(row[47]);
e.endurance = atoi(row[48]);
e.intoxication = atoi(row[49]);
e.str = atoi(row[50]);
e.sta = atoi(row[51]);
e.cha = atoi(row[52]);
e.dex = atoi(row[53]);
e.int_ = atoi(row[54]);
e.agi = atoi(row[55]);
e.wis = atoi(row[56]);
e.zone_change_count = atoi(row[57]);
e.toxicity = atoi(row[58]);
e.hunger_level = atoi(row[59]);
e.thirst_level = atoi(row[60]);
e.ability_up = atoi(row[61]);
e.ldon_points_guk = atoi(row[62]);
e.ldon_points_mir = atoi(row[63]);
e.ldon_points_mmc = atoi(row[64]);
e.ldon_points_ruj = atoi(row[65]);
e.ldon_points_tak = atoi(row[66]);
e.ldon_points_available = atoi(row[67]);
e.tribute_time_remaining = atoi(row[68]);
e.career_tribute_points = atoi(row[69]);
e.tribute_points = atoi(row[70]);
e.tribute_active = atoi(row[71]);
e.pvp_status = atoi(row[72]);
e.pvp_kills = atoi(row[73]);
e.pvp_deaths = atoi(row[74]);
e.pvp_current_points = atoi(row[75]);
e.pvp_career_points = atoi(row[76]);
e.pvp_best_kill_streak = atoi(row[77]);
e.pvp_worst_death_streak = atoi(row[78]);
e.pvp_current_kill_streak = atoi(row[79]);
e.pvp2 = atoi(row[80]);
e.pvp_type = atoi(row[81]);
e.show_helm = atoi(row[82]);
e.group_auto_consent = atoi(row[83]);
e.raid_auto_consent = atoi(row[84]);
e.guild_auto_consent = atoi(row[85]);
e.leadership_exp_on = atoi(row[86]);
e.RestTimer = atoi(row[87]);
e.air_remaining = atoi(row[88]);
e.autosplit_enabled = atoi(row[89]);
e.lfp = atoi(row[90]);
e.lfg = atoi(row[91]);
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.y = strtof(row[8], nullptr);
e.x = strtof(row[9], nullptr);
e.z = strtof(row[10], nullptr);
e.heading = strtof(row[11], nullptr);
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
e.aa_exp = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
e.aa_points = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.cur_hp = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
e.mana = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
e.endurance = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
e.intoxication = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
e.str = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.sta = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
e.cha = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
e.dex = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
e.int_ = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
e.agi = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
e.wis = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
e.zone_change_count = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
e.toxicity = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
e.hunger_level = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
e.thirst_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
e.ability_up = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
e.tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
e.tribute_active = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
e.pvp_status = static_cast<uint8_t>(strtoul(row[72], nullptr, 10));
e.pvp_kills = static_cast<uint32_t>(strtoul(row[73], nullptr, 10));
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
e.pvp2 = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
e.pvp_type = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
e.show_helm = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[83], nullptr, 10));
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
e.RestTimer = static_cast<uint32_t>(strtoul(row[87], nullptr, 10));
e.air_remaining = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
e.lfp = static_cast<uint8_t>(strtoul(row[90], nullptr, 10));
e.lfg = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
e.mailkey = row[92] ? row[92] : "";
e.xtargets = atoi(row[93]);
e.firstlogon = atoi(row[94]);
e.e_aa_effects = atoi(row[95]);
e.e_percent_to_aa = atoi(row[96]);
e.e_expended_aa_spent = atoi(row[97]);
e.aa_points_spent_old = atoi(row[98]);
e.aa_points_old = atoi(row[99]);
e.e_last_invsnapshot = atoi(row[100]);
e.xtargets = static_cast<uint8_t>(strtoul(row[93], nullptr, 10));
e.firstlogon = static_cast<int8_t>(atoi(row[94]));
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[95], nullptr, 10));
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
e.aa_points_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
e.deleted_at = strtoll(row[101] ? row[101] : "-1", nullptr, 10);
return e;
@@ -1041,107 +1041,107 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
CharacterData e{};
e.id = atoi(row[0]);
e.account_id = atoi(row[1]);
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.account_id = static_cast<int32_t>(atoi(row[1]));
e.name = row[2] ? row[2] : "";
e.last_name = row[3] ? row[3] : "";
e.title = row[4] ? row[4] : "";
e.suffix = row[5] ? row[5] : "";
e.zone_id = atoi(row[6]);
e.zone_instance = atoi(row[7]);
e.y = static_cast<float>(atof(row[8]));
e.x = static_cast<float>(atof(row[9]));
e.z = static_cast<float>(atof(row[10]));
e.heading = static_cast<float>(atof(row[11]));
e.gender = atoi(row[12]);
e.race = atoi(row[13]);
e.class_ = atoi(row[14]);
e.level = atoi(row[15]);
e.deity = atoi(row[16]);
e.birthday = atoi(row[17]);
e.last_login = atoi(row[18]);
e.time_played = atoi(row[19]);
e.level2 = atoi(row[20]);
e.anon = atoi(row[21]);
e.gm = atoi(row[22]);
e.face = atoi(row[23]);
e.hair_color = atoi(row[24]);
e.hair_style = atoi(row[25]);
e.beard = atoi(row[26]);
e.beard_color = atoi(row[27]);
e.eye_color_1 = atoi(row[28]);
e.eye_color_2 = atoi(row[29]);
e.drakkin_heritage = atoi(row[30]);
e.drakkin_tattoo = atoi(row[31]);
e.drakkin_details = atoi(row[32]);
e.ability_time_seconds = atoi(row[33]);
e.ability_number = atoi(row[34]);
e.ability_time_minutes = atoi(row[35]);
e.ability_time_hours = atoi(row[36]);
e.exp = atoi(row[37]);
e.aa_points_spent = atoi(row[38]);
e.aa_exp = atoi(row[39]);
e.aa_points = atoi(row[40]);
e.group_leadership_exp = atoi(row[41]);
e.raid_leadership_exp = atoi(row[42]);
e.group_leadership_points = atoi(row[43]);
e.raid_leadership_points = atoi(row[44]);
e.points = atoi(row[45]);
e.cur_hp = atoi(row[46]);
e.mana = atoi(row[47]);
e.endurance = atoi(row[48]);
e.intoxication = atoi(row[49]);
e.str = atoi(row[50]);
e.sta = atoi(row[51]);
e.cha = atoi(row[52]);
e.dex = atoi(row[53]);
e.int_ = atoi(row[54]);
e.agi = atoi(row[55]);
e.wis = atoi(row[56]);
e.zone_change_count = atoi(row[57]);
e.toxicity = atoi(row[58]);
e.hunger_level = atoi(row[59]);
e.thirst_level = atoi(row[60]);
e.ability_up = atoi(row[61]);
e.ldon_points_guk = atoi(row[62]);
e.ldon_points_mir = atoi(row[63]);
e.ldon_points_mmc = atoi(row[64]);
e.ldon_points_ruj = atoi(row[65]);
e.ldon_points_tak = atoi(row[66]);
e.ldon_points_available = atoi(row[67]);
e.tribute_time_remaining = atoi(row[68]);
e.career_tribute_points = atoi(row[69]);
e.tribute_points = atoi(row[70]);
e.tribute_active = atoi(row[71]);
e.pvp_status = atoi(row[72]);
e.pvp_kills = atoi(row[73]);
e.pvp_deaths = atoi(row[74]);
e.pvp_current_points = atoi(row[75]);
e.pvp_career_points = atoi(row[76]);
e.pvp_best_kill_streak = atoi(row[77]);
e.pvp_worst_death_streak = atoi(row[78]);
e.pvp_current_kill_streak = atoi(row[79]);
e.pvp2 = atoi(row[80]);
e.pvp_type = atoi(row[81]);
e.show_helm = atoi(row[82]);
e.group_auto_consent = atoi(row[83]);
e.raid_auto_consent = atoi(row[84]);
e.guild_auto_consent = atoi(row[85]);
e.leadership_exp_on = atoi(row[86]);
e.RestTimer = atoi(row[87]);
e.air_remaining = atoi(row[88]);
e.autosplit_enabled = atoi(row[89]);
e.lfp = atoi(row[90]);
e.lfg = atoi(row[91]);
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.y = strtof(row[8], nullptr);
e.x = strtof(row[9], nullptr);
e.z = strtof(row[10], nullptr);
e.heading = strtof(row[11], nullptr);
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
e.aa_exp = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
e.aa_points = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.cur_hp = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
e.mana = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
e.endurance = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
e.intoxication = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
e.str = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.sta = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
e.cha = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
e.dex = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
e.int_ = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
e.agi = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
e.wis = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
e.zone_change_count = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
e.toxicity = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
e.hunger_level = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
e.thirst_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
e.ability_up = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
e.tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
e.tribute_active = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
e.pvp_status = static_cast<uint8_t>(strtoul(row[72], nullptr, 10));
e.pvp_kills = static_cast<uint32_t>(strtoul(row[73], nullptr, 10));
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
e.pvp2 = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
e.pvp_type = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
e.show_helm = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[83], nullptr, 10));
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
e.RestTimer = static_cast<uint32_t>(strtoul(row[87], nullptr, 10));
e.air_remaining = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
e.lfp = static_cast<uint8_t>(strtoul(row[90], nullptr, 10));
e.lfg = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
e.mailkey = row[92] ? row[92] : "";
e.xtargets = atoi(row[93]);
e.firstlogon = atoi(row[94]);
e.e_aa_effects = atoi(row[95]);
e.e_percent_to_aa = atoi(row[96]);
e.e_expended_aa_spent = atoi(row[97]);
e.aa_points_spent_old = atoi(row[98]);
e.aa_points_old = atoi(row[99]);
e.e_last_invsnapshot = atoi(row[100]);
e.xtargets = static_cast<uint8_t>(strtoul(row[93], nullptr, 10));
e.firstlogon = static_cast<int8_t>(atoi(row[94]));
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[95], nullptr, 10));
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
e.aa_points_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
e.deleted_at = strtoll(row[101] ? row[101] : "-1", nullptr, 10);
all_entries.push_back(e);
@@ -1167,107 +1167,107 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
CharacterData e{};
e.id = atoi(row[0]);
e.account_id = atoi(row[1]);
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.account_id = static_cast<int32_t>(atoi(row[1]));
e.name = row[2] ? row[2] : "";
e.last_name = row[3] ? row[3] : "";
e.title = row[4] ? row[4] : "";
e.suffix = row[5] ? row[5] : "";
e.zone_id = atoi(row[6]);
e.zone_instance = atoi(row[7]);
e.y = static_cast<float>(atof(row[8]));
e.x = static_cast<float>(atof(row[9]));
e.z = static_cast<float>(atof(row[10]));
e.heading = static_cast<float>(atof(row[11]));
e.gender = atoi(row[12]);
e.race = atoi(row[13]);
e.class_ = atoi(row[14]);
e.level = atoi(row[15]);
e.deity = atoi(row[16]);
e.birthday = atoi(row[17]);
e.last_login = atoi(row[18]);
e.time_played = atoi(row[19]);
e.level2 = atoi(row[20]);
e.anon = atoi(row[21]);
e.gm = atoi(row[22]);
e.face = atoi(row[23]);
e.hair_color = atoi(row[24]);
e.hair_style = atoi(row[25]);
e.beard = atoi(row[26]);
e.beard_color = atoi(row[27]);
e.eye_color_1 = atoi(row[28]);
e.eye_color_2 = atoi(row[29]);
e.drakkin_heritage = atoi(row[30]);
e.drakkin_tattoo = atoi(row[31]);
e.drakkin_details = atoi(row[32]);
e.ability_time_seconds = atoi(row[33]);
e.ability_number = atoi(row[34]);
e.ability_time_minutes = atoi(row[35]);
e.ability_time_hours = atoi(row[36]);
e.exp = atoi(row[37]);
e.aa_points_spent = atoi(row[38]);
e.aa_exp = atoi(row[39]);
e.aa_points = atoi(row[40]);
e.group_leadership_exp = atoi(row[41]);
e.raid_leadership_exp = atoi(row[42]);
e.group_leadership_points = atoi(row[43]);
e.raid_leadership_points = atoi(row[44]);
e.points = atoi(row[45]);
e.cur_hp = atoi(row[46]);
e.mana = atoi(row[47]);
e.endurance = atoi(row[48]);
e.intoxication = atoi(row[49]);
e.str = atoi(row[50]);
e.sta = atoi(row[51]);
e.cha = atoi(row[52]);
e.dex = atoi(row[53]);
e.int_ = atoi(row[54]);
e.agi = atoi(row[55]);
e.wis = atoi(row[56]);
e.zone_change_count = atoi(row[57]);
e.toxicity = atoi(row[58]);
e.hunger_level = atoi(row[59]);
e.thirst_level = atoi(row[60]);
e.ability_up = atoi(row[61]);
e.ldon_points_guk = atoi(row[62]);
e.ldon_points_mir = atoi(row[63]);
e.ldon_points_mmc = atoi(row[64]);
e.ldon_points_ruj = atoi(row[65]);
e.ldon_points_tak = atoi(row[66]);
e.ldon_points_available = atoi(row[67]);
e.tribute_time_remaining = atoi(row[68]);
e.career_tribute_points = atoi(row[69]);
e.tribute_points = atoi(row[70]);
e.tribute_active = atoi(row[71]);
e.pvp_status = atoi(row[72]);
e.pvp_kills = atoi(row[73]);
e.pvp_deaths = atoi(row[74]);
e.pvp_current_points = atoi(row[75]);
e.pvp_career_points = atoi(row[76]);
e.pvp_best_kill_streak = atoi(row[77]);
e.pvp_worst_death_streak = atoi(row[78]);
e.pvp_current_kill_streak = atoi(row[79]);
e.pvp2 = atoi(row[80]);
e.pvp_type = atoi(row[81]);
e.show_helm = atoi(row[82]);
e.group_auto_consent = atoi(row[83]);
e.raid_auto_consent = atoi(row[84]);
e.guild_auto_consent = atoi(row[85]);
e.leadership_exp_on = atoi(row[86]);
e.RestTimer = atoi(row[87]);
e.air_remaining = atoi(row[88]);
e.autosplit_enabled = atoi(row[89]);
e.lfp = atoi(row[90]);
e.lfg = atoi(row[91]);
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.y = strtof(row[8], nullptr);
e.x = strtof(row[9], nullptr);
e.z = strtof(row[10], nullptr);
e.heading = strtof(row[11], nullptr);
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
e.aa_exp = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
e.aa_points = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.cur_hp = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
e.mana = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
e.endurance = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
e.intoxication = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
e.str = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.sta = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
e.cha = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
e.dex = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
e.int_ = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
e.agi = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
e.wis = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
e.zone_change_count = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
e.toxicity = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
e.hunger_level = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
e.thirst_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
e.ability_up = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
e.tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
e.tribute_active = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
e.pvp_status = static_cast<uint8_t>(strtoul(row[72], nullptr, 10));
e.pvp_kills = static_cast<uint32_t>(strtoul(row[73], nullptr, 10));
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
e.pvp2 = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
e.pvp_type = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
e.show_helm = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[83], nullptr, 10));
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
e.RestTimer = static_cast<uint32_t>(strtoul(row[87], nullptr, 10));
e.air_remaining = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
e.lfp = static_cast<uint8_t>(strtoul(row[90], nullptr, 10));
e.lfg = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
e.mailkey = row[92] ? row[92] : "";
e.xtargets = atoi(row[93]);
e.firstlogon = atoi(row[94]);
e.e_aa_effects = atoi(row[95]);
e.e_percent_to_aa = atoi(row[96]);
e.e_expended_aa_spent = atoi(row[97]);
e.aa_points_spent_old = atoi(row[98]);
e.aa_points_old = atoi(row[99]);
e.e_last_invsnapshot = atoi(row[100]);
e.xtargets = static_cast<uint8_t>(strtoul(row[93], nullptr, 10));
e.firstlogon = static_cast<int8_t>(atoi(row[94]));
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[95], nullptr, 10));
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
e.aa_points_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
e.deleted_at = strtoll(row[101] ? row[101] : "-1", nullptr, 10);
all_entries.push_back(e);