[Repository] Add null integer column support, instance_list notes migration, regenerate repositories (#3969)

This commit is contained in:
Chris Miles 2024-01-12 22:23:55 -06:00 committed by GitHub
parent 1238a6ca68
commit 818f833d04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
189 changed files with 17218 additions and 3604 deletions

View File

@ -5175,6 +5175,17 @@ ALTER TABLE `task_activities`
)", )",
.content_schema_update = true .content_schema_update = true
}, },
ManifestEntry{
.version = 9251,
.description = "2023_01_12_instance_list_notes.sql",
.check = "SHOW COLUMNS FROM `instance_list` LIKE 'notes'",
.condition = "empty",
.match = "",
.sql = R"(
ALTER TABLE `instance_list`
ADD COLUMN `notes` varchar(50) NOT NULL DEFAULT '' AFTER `never_expires`;
)",
},
// -- template; copy/paste this when you need to create a new entry // -- template; copy/paste this when you need to create a new entry
// ManifestEntry{ // ManifestEntry{

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_AA_ABILITY_REPOSITORY_H #ifndef EQEMU_BASE_AA_ABILITY_REPOSITORY_H
@ -33,6 +33,7 @@ public:
int32_t first_rank_id; int32_t first_rank_id;
uint8_t enabled; uint8_t enabled;
int8_t reset_on_death; int8_t reset_on_death;
int8_t auto_grant_enabled;
}; };
static std::string PrimaryKey() static std::string PrimaryKey()
@ -57,6 +58,7 @@ public:
"first_rank_id", "first_rank_id",
"enabled", "enabled",
"reset_on_death", "reset_on_death",
"auto_grant_enabled",
}; };
} }
@ -77,6 +79,7 @@ public:
"first_rank_id", "first_rank_id",
"enabled", "enabled",
"reset_on_death", "reset_on_death",
"auto_grant_enabled",
}; };
} }
@ -131,6 +134,7 @@ public:
e.first_rank_id = -1; e.first_rank_id = -1;
e.enabled = 1; e.enabled = 1;
e.reset_on_death = 0; e.reset_on_death = 0;
e.auto_grant_enabled = 0;
return e; return e;
} }
@ -156,8 +160,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
aa_ability_id aa_ability_id
) )
); );
@ -166,7 +171,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AaAbility e{}; AaAbility e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.category = static_cast<int32_t>(atoi(row[2])); e.category = static_cast<int32_t>(atoi(row[2]));
e.classes = static_cast<int32_t>(atoi(row[3])); e.classes = static_cast<int32_t>(atoi(row[3]));
@ -178,8 +183,9 @@ public:
e.charges = static_cast<int32_t>(atoi(row[9])); e.charges = static_cast<int32_t>(atoi(row[9]));
e.grant_only = static_cast<int8_t>(atoi(row[10])); e.grant_only = static_cast<int8_t>(atoi(row[10]));
e.first_rank_id = static_cast<int32_t>(atoi(row[11])); e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
e.reset_on_death = static_cast<int8_t>(atoi(row[13])); e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
e.auto_grant_enabled = static_cast<int8_t>(atoi(row[14]));
return e; return e;
} }
@ -227,6 +233,7 @@ public:
v.push_back(columns[11] + " = " + std::to_string(e.first_rank_id)); v.push_back(columns[11] + " = " + std::to_string(e.first_rank_id));
v.push_back(columns[12] + " = " + std::to_string(e.enabled)); v.push_back(columns[12] + " = " + std::to_string(e.enabled));
v.push_back(columns[13] + " = " + std::to_string(e.reset_on_death)); v.push_back(columns[13] + " = " + std::to_string(e.reset_on_death));
v.push_back(columns[14] + " = " + std::to_string(e.auto_grant_enabled));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -262,6 +269,7 @@ public:
v.push_back(std::to_string(e.first_rank_id)); v.push_back(std::to_string(e.first_rank_id));
v.push_back(std::to_string(e.enabled)); v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.reset_on_death)); v.push_back(std::to_string(e.reset_on_death));
v.push_back(std::to_string(e.auto_grant_enabled));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -305,6 +313,7 @@ public:
v.push_back(std::to_string(e.first_rank_id)); v.push_back(std::to_string(e.first_rank_id));
v.push_back(std::to_string(e.enabled)); v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.reset_on_death)); v.push_back(std::to_string(e.reset_on_death));
v.push_back(std::to_string(e.auto_grant_enabled));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")"); insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
} }
@ -338,7 +347,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaAbility e{}; AaAbility e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.category = static_cast<int32_t>(atoi(row[2])); e.category = static_cast<int32_t>(atoi(row[2]));
e.classes = static_cast<int32_t>(atoi(row[3])); e.classes = static_cast<int32_t>(atoi(row[3]));
@ -350,8 +359,9 @@ public:
e.charges = static_cast<int32_t>(atoi(row[9])); e.charges = static_cast<int32_t>(atoi(row[9]));
e.grant_only = static_cast<int8_t>(atoi(row[10])); e.grant_only = static_cast<int8_t>(atoi(row[10]));
e.first_rank_id = static_cast<int32_t>(atoi(row[11])); e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
e.reset_on_death = static_cast<int8_t>(atoi(row[13])); e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
e.auto_grant_enabled = static_cast<int8_t>(atoi(row[14]));
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -376,7 +386,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaAbility e{}; AaAbility e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.category = static_cast<int32_t>(atoi(row[2])); e.category = static_cast<int32_t>(atoi(row[2]));
e.classes = static_cast<int32_t>(atoi(row[3])); e.classes = static_cast<int32_t>(atoi(row[3]));
@ -388,8 +398,9 @@ public:
e.charges = static_cast<int32_t>(atoi(row[9])); e.charges = static_cast<int32_t>(atoi(row[9]));
e.grant_only = static_cast<int8_t>(atoi(row[10])); e.grant_only = static_cast<int8_t>(atoi(row[10]));
e.first_rank_id = static_cast<int32_t>(atoi(row[11])); e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
e.reset_on_death = static_cast<int8_t>(atoi(row[13])); e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
e.auto_grant_enabled = static_cast<int8_t>(atoi(row[14]));
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -448,6 +459,90 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AaAbility &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.category));
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.races));
v.push_back(std::to_string(e.drakkin_heritage));
v.push_back(std::to_string(e.deities));
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.charges));
v.push_back(std::to_string(e.grant_only));
v.push_back(std::to_string(e.first_rank_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.reset_on_death));
v.push_back(std::to_string(e.auto_grant_enabled));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AaAbility> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.category));
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.races));
v.push_back(std::to_string(e.drakkin_heritage));
v.push_back(std::to_string(e.deities));
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.charges));
v.push_back(std::to_string(e.grant_only));
v.push_back(std::to_string(e.first_rank_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.reset_on_death));
v.push_back(std::to_string(e.auto_grant_enabled));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_AA_ABILITY_REPOSITORY_H #endif //EQEMU_BASE_AA_ABILITY_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_AA_RANK_EFFECTS_REPOSITORY_H #ifndef EQEMU_BASE_AA_RANK_EFFECTS_REPOSITORY_H
@ -120,8 +120,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
aa_rank_effects_id aa_rank_effects_id
) )
); );
@ -130,8 +131,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AaRankEffects e{}; AaRankEffects e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
e.effect_id = static_cast<int32_t>(atoi(row[2])); e.effect_id = static_cast<int32_t>(atoi(row[2]));
e.base1 = static_cast<int32_t>(atoi(row[3])); e.base1 = static_cast<int32_t>(atoi(row[3]));
e.base2 = static_cast<int32_t>(atoi(row[4])); e.base2 = static_cast<int32_t>(atoi(row[4]));
@ -266,8 +267,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRankEffects e{}; AaRankEffects e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
e.effect_id = static_cast<int32_t>(atoi(row[2])); e.effect_id = static_cast<int32_t>(atoi(row[2]));
e.base1 = static_cast<int32_t>(atoi(row[3])); e.base1 = static_cast<int32_t>(atoi(row[3]));
e.base2 = static_cast<int32_t>(atoi(row[4])); e.base2 = static_cast<int32_t>(atoi(row[4]));
@ -295,8 +296,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRankEffects e{}; AaRankEffects e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
e.effect_id = static_cast<int32_t>(atoi(row[2])); e.effect_id = static_cast<int32_t>(atoi(row[2]));
e.base1 = static_cast<int32_t>(atoi(row[3])); e.base1 = static_cast<int32_t>(atoi(row[3]));
e.base2 = static_cast<int32_t>(atoi(row[4])); e.base2 = static_cast<int32_t>(atoi(row[4]));
@ -358,6 +359,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AaRankEffects &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.rank_id));
v.push_back(std::to_string(e.slot));
v.push_back(std::to_string(e.effect_id));
v.push_back(std::to_string(e.base1));
v.push_back(std::to_string(e.base2));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AaRankEffects> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.rank_id));
v.push_back(std::to_string(e.slot));
v.push_back(std::to_string(e.effect_id));
v.push_back(std::to_string(e.base1));
v.push_back(std::to_string(e.base2));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_AA_RANK_EFFECTS_REPOSITORY_H #endif //EQEMU_BASE_AA_RANK_EFFECTS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_AA_RANK_PREREQS_REPOSITORY_H #ifndef EQEMU_BASE_AA_RANK_PREREQS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
aa_rank_prereqs_id aa_rank_prereqs_id
) )
); );
@ -122,7 +123,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AaRankPrereqs e{}; AaRankPrereqs e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<int32_t>(atoi(row[1])); e.aa_id = static_cast<int32_t>(atoi(row[1]));
e.points = static_cast<int32_t>(atoi(row[2])); e.points = static_cast<int32_t>(atoi(row[2]));
@ -250,7 +251,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRankPrereqs e{}; AaRankPrereqs e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<int32_t>(atoi(row[1])); e.aa_id = static_cast<int32_t>(atoi(row[1]));
e.points = static_cast<int32_t>(atoi(row[2])); e.points = static_cast<int32_t>(atoi(row[2]));
@ -277,7 +278,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRankPrereqs e{}; AaRankPrereqs e{};
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<int32_t>(atoi(row[1])); e.aa_id = static_cast<int32_t>(atoi(row[1]));
e.points = static_cast<int32_t>(atoi(row[2])); e.points = static_cast<int32_t>(atoi(row[2]));
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AaRankPrereqs &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.rank_id));
v.push_back(std::to_string(e.aa_id));
v.push_back(std::to_string(e.points));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AaRankPrereqs> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.rank_id));
v.push_back(std::to_string(e.aa_id));
v.push_back(std::to_string(e.points));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_AA_RANK_PREREQS_REPOSITORY_H #endif //EQEMU_BASE_AA_RANK_PREREQS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_AA_RANKS_REPOSITORY_H #ifndef EQEMU_BASE_AA_RANKS_REPOSITORY_H
@ -152,8 +152,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
aa_ranks_id aa_ranks_id
) )
); );
@ -162,7 +163,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AaRanks e{}; AaRanks e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1])); e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2])); e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
e.title_sid = static_cast<int32_t>(atoi(row[3])); e.title_sid = static_cast<int32_t>(atoi(row[3]));
@ -330,7 +331,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRanks e{}; AaRanks e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1])); e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2])); e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
e.title_sid = static_cast<int32_t>(atoi(row[3])); e.title_sid = static_cast<int32_t>(atoi(row[3]));
@ -367,7 +368,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AaRanks e{}; AaRanks e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1])); e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2])); e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
e.title_sid = static_cast<int32_t>(atoi(row[3])); e.title_sid = static_cast<int32_t>(atoi(row[3]));
@ -438,6 +439,86 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AaRanks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.upper_hotkey_sid));
v.push_back(std::to_string(e.lower_hotkey_sid));
v.push_back(std::to_string(e.title_sid));
v.push_back(std::to_string(e.desc_sid));
v.push_back(std::to_string(e.cost));
v.push_back(std::to_string(e.level_req));
v.push_back(std::to_string(e.spell));
v.push_back(std::to_string(e.spell_type));
v.push_back(std::to_string(e.recast_time));
v.push_back(std::to_string(e.expansion));
v.push_back(std::to_string(e.prev_id));
v.push_back(std::to_string(e.next_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AaRanks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.upper_hotkey_sid));
v.push_back(std::to_string(e.lower_hotkey_sid));
v.push_back(std::to_string(e.title_sid));
v.push_back(std::to_string(e.desc_sid));
v.push_back(std::to_string(e.cost));
v.push_back(std::to_string(e.level_req));
v.push_back(std::to_string(e.spell));
v.push_back(std::to_string(e.spell_type));
v.push_back(std::to_string(e.recast_time));
v.push_back(std::to_string(e.expansion));
v.push_back(std::to_string(e.prev_id));
v.push_back(std::to_string(e.next_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_AA_RANKS_REPOSITORY_H #endif //EQEMU_BASE_AA_RANKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ACCOUNT_FLAGS_REPOSITORY_H #ifndef EQEMU_BASE_ACCOUNT_FLAGS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
account_flags_id account_flags_id
) )
); );
@ -122,7 +123,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AccountFlags e{}; AccountFlags e{};
e.p_accid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.p_accid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.p_flag = row[1] ? row[1] : ""; e.p_flag = row[1] ? row[1] : "";
e.p_value = row[2] ? row[2] : ""; e.p_value = row[2] ? row[2] : "";
@ -250,7 +251,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AccountFlags e{}; AccountFlags e{};
e.p_accid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.p_accid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.p_flag = row[1] ? row[1] : ""; e.p_flag = row[1] ? row[1] : "";
e.p_value = row[2] ? row[2] : ""; e.p_value = row[2] ? row[2] : "";
@ -277,7 +278,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AccountFlags e{}; AccountFlags e{};
e.p_accid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.p_accid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.p_flag = row[1] ? row[1] : ""; e.p_flag = row[1] ? row[1] : "";
e.p_value = row[2] ? row[2] : ""; e.p_value = row[2] ? row[2] : "";
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AccountFlags &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.p_accid));
v.push_back("'" + Strings::Escape(e.p_flag) + "'");
v.push_back("'" + Strings::Escape(e.p_value) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AccountFlags> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.p_accid));
v.push_back("'" + Strings::Escape(e.p_flag) + "'");
v.push_back("'" + Strings::Escape(e.p_value) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ACCOUNT_FLAGS_REPOSITORY_H #endif //EQEMU_BASE_ACCOUNT_FLAGS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ACCOUNT_IP_REPOSITORY_H #ifndef EQEMU_BASE_ACCOUNT_IP_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
account_ip_id account_ip_id
) )
); );
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AccountIp &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.accid));
v.push_back("'" + Strings::Escape(e.ip) + "'");
v.push_back(std::to_string(e.count));
v.push_back("'" + Strings::Escape(e.lastused) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AccountIp> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.accid));
v.push_back("'" + Strings::Escape(e.ip) + "'");
v.push_back(std::to_string(e.count));
v.push_back("'" + Strings::Escape(e.lastused) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ACCOUNT_IP_REPOSITORY_H #endif //EQEMU_BASE_ACCOUNT_IP_REPOSITORY_H

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseAccountRepository { class BaseAccountRepository {
public: public:
struct Account { struct Account {
@ -211,22 +210,22 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.sharedplat = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.sharedplat = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.password = row[4] ? row[4] : ""; e.password = row[4] ? row[4] : "";
e.status = static_cast<int32_t>(atoi(row[5])); e.status = static_cast<int32_t>(atoi(row[5]));
e.ls_id = row[6] ? row[6] : ""; e.ls_id = row[6] ? row[6] : "";
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.invulnerable = static_cast<int8_t>(atoi(row[9])); e.invulnerable = static_cast<int8_t>(atoi(row[9]));
e.flymode = static_cast<int8_t>(atoi(row[10])); e.flymode = static_cast<int8_t>(atoi(row[10]));
e.ignore_tells = static_cast<int8_t>(atoi(row[11])); e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.minilogin_ip = row[14] ? row[14] : ""; e.minilogin_ip = row[14] ? row[14] : "";
e.hideme = static_cast<int8_t>(atoi(row[15])); e.hideme = static_cast<int8_t>(atoi(row[15]));
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10)); e.rulesflag = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10); e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10);
e.time_creation = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.time_creation = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.ban_reason = row[19] ? row[19] : ""; e.ban_reason = row[19] ? row[19] : "";
e.suspend_reason = row[20] ? row[20] : ""; e.suspend_reason = row[20] ? row[20] : "";
e.crc_eqgame = row[21] ? row[21] : ""; e.crc_eqgame = row[21] ? row[21] : "";
@ -422,22 +421,22 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.sharedplat = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.sharedplat = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.password = row[4] ? row[4] : ""; e.password = row[4] ? row[4] : "";
e.status = static_cast<int32_t>(atoi(row[5])); e.status = static_cast<int32_t>(atoi(row[5]));
e.ls_id = row[6] ? row[6] : ""; e.ls_id = row[6] ? row[6] : "";
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.invulnerable = static_cast<int8_t>(atoi(row[9])); e.invulnerable = static_cast<int8_t>(atoi(row[9]));
e.flymode = static_cast<int8_t>(atoi(row[10])); e.flymode = static_cast<int8_t>(atoi(row[10]));
e.ignore_tells = static_cast<int8_t>(atoi(row[11])); e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.minilogin_ip = row[14] ? row[14] : ""; e.minilogin_ip = row[14] ? row[14] : "";
e.hideme = static_cast<int8_t>(atoi(row[15])); e.hideme = static_cast<int8_t>(atoi(row[15]));
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10)); e.rulesflag = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10); e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10);
e.time_creation = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.time_creation = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.ban_reason = row[19] ? row[19] : ""; e.ban_reason = row[19] ? row[19] : "";
e.suspend_reason = row[20] ? row[20] : ""; e.suspend_reason = row[20] ? row[20] : "";
e.crc_eqgame = row[21] ? row[21] : ""; e.crc_eqgame = row[21] ? row[21] : "";
@ -470,22 +469,22 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.name = row[1] ? row[1] : ""; e.name = row[1] ? row[1] : "";
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.sharedplat = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.sharedplat = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.password = row[4] ? row[4] : ""; e.password = row[4] ? row[4] : "";
e.status = static_cast<int32_t>(atoi(row[5])); e.status = static_cast<int32_t>(atoi(row[5]));
e.ls_id = row[6] ? row[6] : ""; e.ls_id = row[6] ? row[6] : "";
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.invulnerable = static_cast<int8_t>(atoi(row[9])); e.invulnerable = static_cast<int8_t>(atoi(row[9]));
e.flymode = static_cast<int8_t>(atoi(row[10])); e.flymode = static_cast<int8_t>(atoi(row[10]));
e.ignore_tells = static_cast<int8_t>(atoi(row[11])); e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.minilogin_ip = row[14] ? row[14] : ""; e.minilogin_ip = row[14] ? row[14] : "";
e.hideme = static_cast<int8_t>(atoi(row[15])); e.hideme = static_cast<int8_t>(atoi(row[15]));
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10)); e.rulesflag = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10); e.suspendeduntil = strtoll(row[17] ? row[17] : "-1", nullptr, 10);
e.time_creation = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.time_creation = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.ban_reason = row[19] ? row[19] : ""; e.ban_reason = row[19] ? row[19] : "";
e.suspend_reason = row[20] ? row[20] : ""; e.suspend_reason = row[20] ? row[20] : "";
e.crc_eqgame = row[21] ? row[21] : ""; e.crc_eqgame = row[21] ? row[21] : "";

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ACCOUNT_REWARDS_REPOSITORY_H #ifndef EQEMU_BASE_ACCOUNT_REWARDS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
account_rewards_id account_rewards_id
) )
); );
@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AccountRewards e{}; AccountRewards e{};
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -250,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AccountRewards e{}; AccountRewards e{};
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -277,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AccountRewards e{}; AccountRewards e{};
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AccountRewards &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.account_id));
v.push_back(std::to_string(e.reward_id));
v.push_back(std::to_string(e.amount));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AccountRewards> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.account_id));
v.push_back(std::to_string(e.reward_id));
v.push_back(std::to_string(e.amount));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ACCOUNT_REWARDS_REPOSITORY_H #endif //EQEMU_BASE_ACCOUNT_REWARDS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_DETAILS_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_DETAILS_REPOSITORY_H
@ -136,8 +136,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_details_id adventure_details_id
) )
); );
@ -146,15 +147,15 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureDetails e{}; AdventureDetails e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[2])); e.instance_id = static_cast<int32_t>(atoi(row[2]));
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
return e; return e;
} }
@ -297,15 +298,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureDetails e{}; AdventureDetails e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[2])); e.instance_id = static_cast<int32_t>(atoi(row[2]));
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -330,15 +331,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureDetails e{}; AdventureDetails e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[2])); e.instance_id = static_cast<int32_t>(atoi(row[2]));
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -397,6 +398,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureDetails &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.adventure_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.count));
v.push_back(std::to_string(e.assassinate_count));
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.time_created));
v.push_back(std::to_string(e.time_zoned));
v.push_back(std::to_string(e.time_completed));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureDetails> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.adventure_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.count));
v.push_back(std::to_string(e.assassinate_count));
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.time_created));
v.push_back(std::to_string(e.time_zoned));
v.push_back(std::to_string(e.time_completed));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_DETAILS_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_DETAILS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_MEMBERS_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_MEMBERS_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_members_id adventure_members_id
) )
); );
@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureMembers e{}; AdventureMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
return e; return e;
} }
@ -242,8 +243,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureMembers e{}; AdventureMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -268,8 +269,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureMembers e{}; AdventureMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_MEMBERS_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_MEMBERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_STATS_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_STATS_REPOSITORY_H
@ -144,8 +144,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_stats_id adventure_stats_id
) )
); );
@ -154,17 +155,17 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureStats e{}; AdventureStats e{};
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
return e; return e;
} }
@ -314,17 +315,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureStats e{}; AdventureStats e{};
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -349,17 +350,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureStats e{}; AdventureStats e{};
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -418,6 +419,82 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureStats &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.player_id));
v.push_back(std::to_string(e.guk_wins));
v.push_back(std::to_string(e.mir_wins));
v.push_back(std::to_string(e.mmc_wins));
v.push_back(std::to_string(e.ruj_wins));
v.push_back(std::to_string(e.tak_wins));
v.push_back(std::to_string(e.guk_losses));
v.push_back(std::to_string(e.mir_losses));
v.push_back(std::to_string(e.mmc_losses));
v.push_back(std::to_string(e.ruj_losses));
v.push_back(std::to_string(e.tak_losses));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureStats> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.player_id));
v.push_back(std::to_string(e.guk_wins));
v.push_back(std::to_string(e.mir_wins));
v.push_back(std::to_string(e.mmc_wins));
v.push_back(std::to_string(e.ruj_wins));
v.push_back(std::to_string(e.tak_wins));
v.push_back(std::to_string(e.guk_losses));
v.push_back(std::to_string(e.mir_losses));
v.push_back(std::to_string(e.mmc_losses));
v.push_back(std::to_string(e.ruj_losses));
v.push_back(std::to_string(e.tak_losses));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_STATS_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_STATS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_FLAVOR_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_FLAVOR_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_template_entry_flavor_id adventure_template_entry_flavor_id
) )
); );
@ -118,7 +119,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureTemplateEntryFlavor e{}; AdventureTemplateEntryFlavor e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.text = row[1] ? row[1] : ""; e.text = row[1] ? row[1] : "";
return e; return e;
@ -242,7 +243,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplateEntryFlavor e{}; AdventureTemplateEntryFlavor e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.text = row[1] ? row[1] : ""; e.text = row[1] ? row[1] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -268,7 +269,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplateEntryFlavor e{}; AdventureTemplateEntryFlavor e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.text = row[1] ? row[1] : ""; e.text = row[1] ? row[1] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureTemplateEntryFlavor &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.text) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureTemplateEntryFlavor> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.text) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_FLAVOR_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_FLAVOR_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_template_entry_id adventure_template_entry_id
) )
); );
@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureTemplateEntry e{}; AdventureTemplateEntry e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
return e; return e;
} }
@ -242,8 +243,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplateEntry e{}; AdventureTemplateEntry e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -268,8 +269,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplateEntry e{}; AdventureTemplateEntry e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureTemplateEntry &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.template_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureTemplateEntry> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.template_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_TEMPLATE_ENTRY_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_REPOSITORY_H #ifndef EQEMU_BASE_ADVENTURE_TEMPLATE_REPOSITORY_H
@ -232,8 +232,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
adventure_template_id adventure_template_id
) )
); );
@ -242,38 +243,38 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
AdventureTemplate e{}; AdventureTemplate e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.zone_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10)); e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10)); e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
e.assa_x = strtof(row[10], nullptr); e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
e.assa_y = strtof(row[11], nullptr); e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
e.assa_z = strtof(row[12], nullptr); e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
e.assa_h = strtof(row[13], nullptr); e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
e.text = row[14] ? row[14] : ""; e.text = row[14] ? row[14] : "";
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10)); e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10)); e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10)); e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10)); e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
e.zone_in_x = strtof(row[21], nullptr); e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
e.zone_in_y = strtof(row[22], nullptr); e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23])); e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
e.dest_x = strtof(row[24], nullptr); e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
e.dest_y = strtof(row[25], nullptr); e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
e.dest_z = strtof(row[26], nullptr); e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
e.dest_h = strtof(row[27], nullptr); e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.graveyard_x = strtof(row[29], nullptr); e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
e.graveyard_y = strtof(row[30], nullptr); e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
e.graveyard_z = strtof(row[31], nullptr); e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
return e; return e;
} }
@ -489,38 +490,38 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplate e{}; AdventureTemplate e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.zone_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10)); e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10)); e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
e.assa_x = strtof(row[10], nullptr); e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
e.assa_y = strtof(row[11], nullptr); e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
e.assa_z = strtof(row[12], nullptr); e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
e.assa_h = strtof(row[13], nullptr); e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
e.text = row[14] ? row[14] : ""; e.text = row[14] ? row[14] : "";
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10)); e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10)); e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10)); e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10)); e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
e.zone_in_x = strtof(row[21], nullptr); e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
e.zone_in_y = strtof(row[22], nullptr); e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23])); e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
e.dest_x = strtof(row[24], nullptr); e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
e.dest_y = strtof(row[25], nullptr); e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
e.dest_z = strtof(row[26], nullptr); e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
e.dest_h = strtof(row[27], nullptr); e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.graveyard_x = strtof(row[29], nullptr); e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
e.graveyard_y = strtof(row[30], nullptr); e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
e.graveyard_z = strtof(row[31], nullptr); e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -545,38 +546,38 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
AdventureTemplate e{}; AdventureTemplate e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.zone_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10)); e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10)); e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
e.assa_x = strtof(row[10], nullptr); e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
e.assa_y = strtof(row[11], nullptr); e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
e.assa_z = strtof(row[12], nullptr); e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
e.assa_h = strtof(row[13], nullptr); e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
e.text = row[14] ? row[14] : ""; e.text = row[14] ? row[14] : "";
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10)); e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10)); e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10)); e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10)); e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
e.zone_in_x = strtof(row[21], nullptr); e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
e.zone_in_y = strtof(row[22], nullptr); e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23])); e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
e.dest_x = strtof(row[24], nullptr); e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
e.dest_y = strtof(row[25], nullptr); e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
e.dest_z = strtof(row[26], nullptr); e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
e.dest_h = strtof(row[27], nullptr); e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.graveyard_x = strtof(row[29], nullptr); e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
e.graveyard_y = strtof(row[30], nullptr); e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
e.graveyard_z = strtof(row[31], nullptr); e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -635,6 +636,126 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AdventureTemplate &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.zone_version));
v.push_back(std::to_string(e.is_hard));
v.push_back(std::to_string(e.is_raid));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.type_data));
v.push_back(std::to_string(e.type_count));
v.push_back(std::to_string(e.assa_x));
v.push_back(std::to_string(e.assa_y));
v.push_back(std::to_string(e.assa_z));
v.push_back(std::to_string(e.assa_h));
v.push_back("'" + Strings::Escape(e.text) + "'");
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.zone_in_time));
v.push_back(std::to_string(e.win_points));
v.push_back(std::to_string(e.lose_points));
v.push_back(std::to_string(e.theme));
v.push_back(std::to_string(e.zone_in_zone_id));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_object_id));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_h));
v.push_back(std::to_string(e.graveyard_zone_id));
v.push_back(std::to_string(e.graveyard_x));
v.push_back(std::to_string(e.graveyard_y));
v.push_back(std::to_string(e.graveyard_z));
v.push_back(std::to_string(e.graveyard_radius));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AdventureTemplate> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.zone_version));
v.push_back(std::to_string(e.is_hard));
v.push_back(std::to_string(e.is_raid));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.type_data));
v.push_back(std::to_string(e.type_count));
v.push_back(std::to_string(e.assa_x));
v.push_back(std::to_string(e.assa_y));
v.push_back(std::to_string(e.assa_z));
v.push_back(std::to_string(e.assa_h));
v.push_back("'" + Strings::Escape(e.text) + "'");
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.zone_in_time));
v.push_back(std::to_string(e.win_points));
v.push_back(std::to_string(e.lose_points));
v.push_back(std::to_string(e.theme));
v.push_back(std::to_string(e.zone_in_zone_id));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_object_id));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_h));
v.push_back(std::to_string(e.graveyard_zone_id));
v.push_back(std::to_string(e.graveyard_x));
v.push_back(std::to_string(e.graveyard_y));
v.push_back(std::to_string(e.graveyard_z));
v.push_back(std::to_string(e.graveyard_radius));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ADVENTURE_TEMPLATE_REPOSITORY_H #endif //EQEMU_BASE_ADVENTURE_TEMPLATE_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_ALTERNATE_CURRENCY_REPOSITORY_H #ifndef EQEMU_BASE_ALTERNATE_CURRENCY_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
alternate_currency_id alternate_currency_id
) )
); );
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const AlternateCurrency &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.item_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<AlternateCurrency> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.item_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_ALTERNATE_CURRENCY_REPOSITORY_H #endif //EQEMU_BASE_ALTERNATE_CURRENCY_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_AURAS_REPOSITORY_H #ifndef EQEMU_BASE_AURAS_REPOSITORY_H
@ -144,8 +144,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
auras_id auras_id
) )
); );
@ -418,6 +419,82 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Auras &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.npc_type));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.distance));
v.push_back(std::to_string(e.aura_type));
v.push_back(std::to_string(e.spawn_type));
v.push_back(std::to_string(e.movement));
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.icon));
v.push_back(std::to_string(e.cast_time));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Auras> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.npc_type));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.distance));
v.push_back(std::to_string(e.aura_type));
v.push_back(std::to_string(e.spawn_type));
v.push_back(std::to_string(e.movement));
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.icon));
v.push_back(std::to_string(e.cast_time));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_AURAS_REPOSITORY_H #endif //EQEMU_BASE_AURAS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BASE_DATA_REPOSITORY_H #ifndef EQEMU_BASE_BASE_DATA_REPOSITORY_H
@ -140,8 +140,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
base_data_id base_data_id
) )
); );
@ -150,16 +151,16 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
BaseData e{}; BaseData e{};
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.hp = strtod(row[2], nullptr); e.hp = row[2] ? strtod(row[2], nullptr) : 0;
e.mana = strtod(row[3], nullptr); e.mana = row[3] ? strtod(row[3], nullptr) : 0;
e.end = strtod(row[4], nullptr); e.end = row[4] ? strtod(row[4], nullptr) : 0;
e.unk1 = strtod(row[5], nullptr); e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
e.unk2 = strtod(row[6], nullptr); e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
e.hp_fac = strtod(row[7], nullptr); e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
e.mana_fac = strtod(row[8], nullptr); e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
e.end_fac = strtod(row[9], nullptr); e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
return e; return e;
} }
@ -306,16 +307,16 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
BaseData e{}; BaseData e{};
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.hp = strtod(row[2], nullptr); e.hp = row[2] ? strtod(row[2], nullptr) : 0;
e.mana = strtod(row[3], nullptr); e.mana = row[3] ? strtod(row[3], nullptr) : 0;
e.end = strtod(row[4], nullptr); e.end = row[4] ? strtod(row[4], nullptr) : 0;
e.unk1 = strtod(row[5], nullptr); e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
e.unk2 = strtod(row[6], nullptr); e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
e.hp_fac = strtod(row[7], nullptr); e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
e.mana_fac = strtod(row[8], nullptr); e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
e.end_fac = strtod(row[9], nullptr); e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -340,16 +341,16 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
BaseData e{}; BaseData e{};
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.hp = strtod(row[2], nullptr); e.hp = row[2] ? strtod(row[2], nullptr) : 0;
e.mana = strtod(row[3], nullptr); e.mana = row[3] ? strtod(row[3], nullptr) : 0;
e.end = strtod(row[4], nullptr); e.end = row[4] ? strtod(row[4], nullptr) : 0;
e.unk1 = strtod(row[5], nullptr); e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
e.unk2 = strtod(row[6], nullptr); e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
e.hp_fac = strtod(row[7], nullptr); e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
e.mana_fac = strtod(row[8], nullptr); e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
e.end_fac = strtod(row[9], nullptr); e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -408,6 +409,80 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const BaseData &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.end));
v.push_back(std::to_string(e.unk1));
v.push_back(std::to_string(e.unk2));
v.push_back(std::to_string(e.hp_fac));
v.push_back(std::to_string(e.mana_fac));
v.push_back(std::to_string(e.end_fac));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<BaseData> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.end));
v.push_back(std::to_string(e.unk1));
v.push_back(std::to_string(e.unk2));
v.push_back(std::to_string(e.hp_fac));
v.push_back(std::to_string(e.mana_fac));
v.push_back(std::to_string(e.end_fac));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BASE_DATA_REPOSITORY_H #endif //EQEMU_BASE_BASE_DATA_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BLOCKED_SPELLS_REPOSITORY_H #ifndef EQEMU_BASE_BLOCKED_SPELLS_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseBlockedSpellsRepository { class BaseBlockedSpellsRepository {
public: public:
struct BlockedSpells { struct BlockedSpells {
@ -177,15 +176,15 @@ public:
BlockedSpells e{}; BlockedSpells e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[2])); e.type = static_cast<int8_t>(atoi(row[2]));
e.zoneid = static_cast<int32_t>(atoi(row[3])); e.zoneid = static_cast<int32_t>(atoi(row[3]));
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.x_diff = strtof(row[7], nullptr); e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
e.y_diff = strtof(row[8], nullptr); e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
e.z_diff = strtof(row[9], nullptr); e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
e.message = row[10] ? row[10] : ""; e.message = row[10] ? row[10] : "";
e.description = row[11] ? row[11] : ""; e.description = row[11] ? row[11] : "";
e.min_expansion = static_cast<int8_t>(atoi(row[12])); e.min_expansion = static_cast<int8_t>(atoi(row[12]));
@ -356,15 +355,15 @@ public:
BlockedSpells e{}; BlockedSpells e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[2])); e.type = static_cast<int8_t>(atoi(row[2]));
e.zoneid = static_cast<int32_t>(atoi(row[3])); e.zoneid = static_cast<int32_t>(atoi(row[3]));
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.x_diff = strtof(row[7], nullptr); e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
e.y_diff = strtof(row[8], nullptr); e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
e.z_diff = strtof(row[9], nullptr); e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
e.message = row[10] ? row[10] : ""; e.message = row[10] ? row[10] : "";
e.description = row[11] ? row[11] : ""; e.description = row[11] ? row[11] : "";
e.min_expansion = static_cast<int8_t>(atoi(row[12])); e.min_expansion = static_cast<int8_t>(atoi(row[12]));
@ -396,15 +395,15 @@ public:
BlockedSpells e{}; BlockedSpells e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[2])); e.type = static_cast<int8_t>(atoi(row[2]));
e.zoneid = static_cast<int32_t>(atoi(row[3])); e.zoneid = static_cast<int32_t>(atoi(row[3]));
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.x_diff = strtof(row[7], nullptr); e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
e.y_diff = strtof(row[8], nullptr); e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
e.z_diff = strtof(row[9], nullptr); e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
e.message = row[10] ? row[10] : ""; e.message = row[10] ? row[10] : "";
e.description = row[11] ? row[11] : ""; e.description = row[11] ? row[11] : "";
e.min_expansion = static_cast<int8_t>(atoi(row[12])); e.min_expansion = static_cast<int8_t>(atoi(row[12]));
@ -469,6 +468,92 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const BlockedSpells &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.x_diff));
v.push_back(std::to_string(e.y_diff));
v.push_back(std::to_string(e.z_diff));
v.push_back("'" + Strings::Escape(e.message) + "'");
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<BlockedSpells> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.x_diff));
v.push_back(std::to_string(e.y_diff));
v.push_back(std::to_string(e.z_diff));
v.push_back("'" + Strings::Escape(e.message) + "'");
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BLOCKED_SPELLS_REPOSITORY_H #endif //EQEMU_BASE_BLOCKED_SPELLS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BOOKS_REPOSITORY_H #ifndef EQEMU_BASE_BOOKS_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
books_id books_id
) )
); );
@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Books &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.txtfile) + "'");
v.push_back(std::to_string(e.language));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Books> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.txtfile) + "'");
v.push_back(std::to_string(e.language));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BOOKS_REPOSITORY_H #endif //EQEMU_BASE_BOOKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BUG_REPORTS_REPOSITORY_H #ifndef EQEMU_BASE_BUG_REPORTS_REPOSITORY_H
@ -228,8 +228,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
bug_reports_id bug_reports_id
) )
); );
@ -238,26 +239,26 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
BugReports e{}; BugReports e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.client_version_name = row[3] ? row[3] : ""; e.client_version_name = row[3] ? row[3] : "";
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.character_name = row[6] ? row[6] : ""; e.character_name = row[6] ? row[6] : "";
e.reporter_spoof = static_cast<int8_t>(atoi(row[7])); e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.category_name = row[9] ? row[9] : ""; e.category_name = row[9] ? row[9] : "";
e.reporter_name = row[10] ? row[10] : ""; e.reporter_name = row[10] ? row[10] : "";
e.ui_path = row[11] ? row[11] : ""; e.ui_path = row[11] ? row[11] : "";
e.pos_x = strtof(row[12], nullptr); e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
e.pos_y = strtof(row[13], nullptr); e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
e.pos_z = strtof(row[14], nullptr); e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.target_name = row[18] ? row[18] : ""; e.target_name = row[18] ? row[18] : "";
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e._can_duplicate = static_cast<int8_t>(atoi(row[20])); e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
e._crash_bug = static_cast<int8_t>(atoi(row[21])); e._crash_bug = static_cast<int8_t>(atoi(row[21]));
e._target_info = static_cast<int8_t>(atoi(row[22])); e._target_info = static_cast<int8_t>(atoi(row[22]));
@ -266,7 +267,7 @@ public:
e.bug_report = row[25] ? row[25] : ""; e.bug_report = row[25] ? row[25] : "";
e.system_info = row[26] ? row[26] : ""; e.system_info = row[26] ? row[26] : "";
e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10); e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10);
e.bug_status = static_cast<uint8_t>(strtoul(row[28], nullptr, 10)); e.bug_status = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10); e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10);
e.last_reviewer = row[30] ? row[30] : ""; e.last_reviewer = row[30] ? row[30] : "";
e.reviewer_notes = row[31] ? row[31] : ""; e.reviewer_notes = row[31] ? row[31] : "";
@ -481,26 +482,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
BugReports e{}; BugReports e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.client_version_name = row[3] ? row[3] : ""; e.client_version_name = row[3] ? row[3] : "";
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.character_name = row[6] ? row[6] : ""; e.character_name = row[6] ? row[6] : "";
e.reporter_spoof = static_cast<int8_t>(atoi(row[7])); e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.category_name = row[9] ? row[9] : ""; e.category_name = row[9] ? row[9] : "";
e.reporter_name = row[10] ? row[10] : ""; e.reporter_name = row[10] ? row[10] : "";
e.ui_path = row[11] ? row[11] : ""; e.ui_path = row[11] ? row[11] : "";
e.pos_x = strtof(row[12], nullptr); e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
e.pos_y = strtof(row[13], nullptr); e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
e.pos_z = strtof(row[14], nullptr); e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.target_name = row[18] ? row[18] : ""; e.target_name = row[18] ? row[18] : "";
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e._can_duplicate = static_cast<int8_t>(atoi(row[20])); e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
e._crash_bug = static_cast<int8_t>(atoi(row[21])); e._crash_bug = static_cast<int8_t>(atoi(row[21]));
e._target_info = static_cast<int8_t>(atoi(row[22])); e._target_info = static_cast<int8_t>(atoi(row[22]));
@ -509,7 +510,7 @@ public:
e.bug_report = row[25] ? row[25] : ""; e.bug_report = row[25] ? row[25] : "";
e.system_info = row[26] ? row[26] : ""; e.system_info = row[26] ? row[26] : "";
e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10); e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10);
e.bug_status = static_cast<uint8_t>(strtoul(row[28], nullptr, 10)); e.bug_status = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10); e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10);
e.last_reviewer = row[30] ? row[30] : ""; e.last_reviewer = row[30] ? row[30] : "";
e.reviewer_notes = row[31] ? row[31] : ""; e.reviewer_notes = row[31] ? row[31] : "";
@ -537,26 +538,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
BugReports e{}; BugReports e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.client_version_name = row[3] ? row[3] : ""; e.client_version_name = row[3] ? row[3] : "";
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.character_name = row[6] ? row[6] : ""; e.character_name = row[6] ? row[6] : "";
e.reporter_spoof = static_cast<int8_t>(atoi(row[7])); e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.category_name = row[9] ? row[9] : ""; e.category_name = row[9] ? row[9] : "";
e.reporter_name = row[10] ? row[10] : ""; e.reporter_name = row[10] ? row[10] : "";
e.ui_path = row[11] ? row[11] : ""; e.ui_path = row[11] ? row[11] : "";
e.pos_x = strtof(row[12], nullptr); e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
e.pos_y = strtof(row[13], nullptr); e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
e.pos_z = strtof(row[14], nullptr); e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.target_name = row[18] ? row[18] : ""; e.target_name = row[18] ? row[18] : "";
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e._can_duplicate = static_cast<int8_t>(atoi(row[20])); e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
e._crash_bug = static_cast<int8_t>(atoi(row[21])); e._crash_bug = static_cast<int8_t>(atoi(row[21]));
e._target_info = static_cast<int8_t>(atoi(row[22])); e._target_info = static_cast<int8_t>(atoi(row[22]));
@ -565,7 +566,7 @@ public:
e.bug_report = row[25] ? row[25] : ""; e.bug_report = row[25] ? row[25] : "";
e.system_info = row[26] ? row[26] : ""; e.system_info = row[26] ? row[26] : "";
e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10); e.report_datetime = strtoll(row[27] ? row[27] : "-1", nullptr, 10);
e.bug_status = static_cast<uint8_t>(strtoul(row[28], nullptr, 10)); e.bug_status = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10); e.last_review = strtoll(row[29] ? row[29] : "-1", nullptr, 10);
e.last_reviewer = row[30] ? row[30] : ""; e.last_reviewer = row[30] ? row[30] : "";
e.reviewer_notes = row[31] ? row[31] : ""; e.reviewer_notes = row[31] ? row[31] : "";
@ -627,6 +628,124 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const BugReports &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.client_version_id));
v.push_back("'" + Strings::Escape(e.client_version_name) + "'");
v.push_back(std::to_string(e.account_id));
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.character_name) + "'");
v.push_back(std::to_string(e.reporter_spoof));
v.push_back(std::to_string(e.category_id));
v.push_back("'" + Strings::Escape(e.category_name) + "'");
v.push_back("'" + Strings::Escape(e.reporter_name) + "'");
v.push_back("'" + Strings::Escape(e.ui_path) + "'");
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.time_played));
v.push_back(std::to_string(e.target_id));
v.push_back("'" + Strings::Escape(e.target_name) + "'");
v.push_back(std::to_string(e.optional_info_mask));
v.push_back(std::to_string(e._can_duplicate));
v.push_back(std::to_string(e._crash_bug));
v.push_back(std::to_string(e._target_info));
v.push_back(std::to_string(e._character_flags));
v.push_back(std::to_string(e._unknown_value));
v.push_back("'" + Strings::Escape(e.bug_report) + "'");
v.push_back("'" + Strings::Escape(e.system_info) + "'");
v.push_back("FROM_UNIXTIME(" + (e.report_datetime > 0 ? std::to_string(e.report_datetime) : "null") + ")");
v.push_back(std::to_string(e.bug_status));
v.push_back("FROM_UNIXTIME(" + (e.last_review > 0 ? std::to_string(e.last_review) : "null") + ")");
v.push_back("'" + Strings::Escape(e.last_reviewer) + "'");
v.push_back("'" + Strings::Escape(e.reviewer_notes) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<BugReports> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.client_version_id));
v.push_back("'" + Strings::Escape(e.client_version_name) + "'");
v.push_back(std::to_string(e.account_id));
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.character_name) + "'");
v.push_back(std::to_string(e.reporter_spoof));
v.push_back(std::to_string(e.category_id));
v.push_back("'" + Strings::Escape(e.category_name) + "'");
v.push_back("'" + Strings::Escape(e.reporter_name) + "'");
v.push_back("'" + Strings::Escape(e.ui_path) + "'");
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.time_played));
v.push_back(std::to_string(e.target_id));
v.push_back("'" + Strings::Escape(e.target_name) + "'");
v.push_back(std::to_string(e.optional_info_mask));
v.push_back(std::to_string(e._can_duplicate));
v.push_back(std::to_string(e._crash_bug));
v.push_back(std::to_string(e._target_info));
v.push_back(std::to_string(e._character_flags));
v.push_back(std::to_string(e._unknown_value));
v.push_back("'" + Strings::Escape(e.bug_report) + "'");
v.push_back("'" + Strings::Escape(e.system_info) + "'");
v.push_back("FROM_UNIXTIME(" + (e.report_datetime > 0 ? std::to_string(e.report_datetime) : "null") + ")");
v.push_back(std::to_string(e.bug_status));
v.push_back("FROM_UNIXTIME(" + (e.last_review > 0 ? std::to_string(e.last_review) : "null") + ")");
v.push_back("'" + Strings::Escape(e.last_reviewer) + "'");
v.push_back("'" + Strings::Escape(e.reviewer_notes) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BUG_REPORTS_REPOSITORY_H #endif //EQEMU_BASE_BUG_REPORTS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BUGS_REPOSITORY_H #ifndef EQEMU_BASE_BUGS_REPOSITORY_H
@ -152,8 +152,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
bugs_id bugs_id
) )
); );
@ -162,19 +163,19 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
Bugs e{}; Bugs e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
e.ui = row[3] ? row[3] : ""; e.ui = row[3] ? row[3] : "";
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.type = row[7] ? row[7] : ""; e.type = row[7] ? row[7] : "";
e.flag = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.flag = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.target = row[9] ? row[9] : ""; e.target = row[9] ? row[9] : "";
e.bug = row[10] ? row[10] : ""; e.bug = row[10] ? row[10] : "";
e.date = row[11] ? row[11] : ""; e.date = row[11] ? row[11] : "";
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
return e; return e;
} }
@ -329,19 +330,19 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Bugs e{}; Bugs e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
e.ui = row[3] ? row[3] : ""; e.ui = row[3] ? row[3] : "";
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.type = row[7] ? row[7] : ""; e.type = row[7] ? row[7] : "";
e.flag = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.flag = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.target = row[9] ? row[9] : ""; e.target = row[9] ? row[9] : "";
e.bug = row[10] ? row[10] : ""; e.bug = row[10] ? row[10] : "";
e.date = row[11] ? row[11] : ""; e.date = row[11] ? row[11] : "";
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -366,19 +367,19 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Bugs e{}; Bugs e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone = row[1] ? row[1] : ""; e.zone = row[1] ? row[1] : "";
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
e.ui = row[3] ? row[3] : ""; e.ui = row[3] ? row[3] : "";
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.type = row[7] ? row[7] : ""; e.type = row[7] ? row[7] : "";
e.flag = static_cast<uint8_t>(strtoul(row[8], nullptr, 10)); e.flag = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.target = row[9] ? row[9] : ""; e.target = row[9] ? row[9] : "";
e.bug = row[10] ? row[10] : ""; e.bug = row[10] ? row[10] : "";
e.date = row[11] ? row[11] : ""; e.date = row[11] ? row[11] : "";
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10)); e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -437,6 +438,86 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Bugs &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.ui) + "'");
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back("'" + Strings::Escape(e.type) + "'");
v.push_back(std::to_string(e.flag));
v.push_back("'" + Strings::Escape(e.target) + "'");
v.push_back("'" + Strings::Escape(e.bug) + "'");
v.push_back("'" + Strings::Escape(e.date) + "'");
v.push_back(std::to_string(e.status));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Bugs> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.ui) + "'");
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back("'" + Strings::Escape(e.type) + "'");
v.push_back(std::to_string(e.flag));
v.push_back("'" + Strings::Escape(e.target) + "'");
v.push_back("'" + Strings::Escape(e.bug) + "'");
v.push_back("'" + Strings::Escape(e.date) + "'");
v.push_back(std::to_string(e.status));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BUGS_REPOSITORY_H #endif //EQEMU_BASE_BUGS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_BUYER_REPOSITORY_H #ifndef EQEMU_BASE_BUYER_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
buyer_id buyer_id
) )
); );
@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Buyer &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.buyslot));
v.push_back(std::to_string(e.itemid));
v.push_back("'" + Strings::Escape(e.itemname) + "'");
v.push_back(std::to_string(e.quantity));
v.push_back(std::to_string(e.price));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Buyer> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.buyslot));
v.push_back(std::to_string(e.itemid));
v.push_back("'" + Strings::Escape(e.itemname) + "'");
v.push_back(std::to_string(e.quantity));
v.push_back(std::to_string(e.price));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_BUYER_REPOSITORY_H #endif //EQEMU_BASE_BUYER_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHAR_CREATE_COMBINATIONS_REPOSITORY_H #ifndef EQEMU_BASE_CHAR_CREATE_COMBINATIONS_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
char_create_combinations_id char_create_combinations_id
) )
); );
@ -134,12 +135,12 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharCreateCombinations e{}; CharCreateCombinations e{};
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
return e; return e;
} }
@ -274,12 +275,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharCreateCombinations e{}; CharCreateCombinations e{};
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -304,12 +305,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharCreateCombinations e{}; CharCreateCombinations e{};
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharCreateCombinations &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.allocation_id));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.start_zone));
v.push_back(std::to_string(e.expansions_req));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharCreateCombinations> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.allocation_id));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.start_zone));
v.push_back(std::to_string(e.expansions_req));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHAR_CREATE_COMBINATIONS_REPOSITORY_H #endif //EQEMU_BASE_CHAR_CREATE_COMBINATIONS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHAR_CREATE_POINT_ALLOCATIONS_REPOSITORY_H #ifndef EQEMU_BASE_CHAR_CREATE_POINT_ALLOCATIONS_REPOSITORY_H
@ -160,8 +160,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
char_create_point_allocations_id char_create_point_allocations_id
) )
); );
@ -170,21 +171,21 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharCreatePointAllocations e{}; CharCreatePointAllocations e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
return e; return e;
} }
@ -346,21 +347,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharCreatePointAllocations e{}; CharCreatePointAllocations e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -385,21 +386,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharCreatePointAllocations e{}; CharCreatePointAllocations e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -458,6 +459,90 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharCreatePointAllocations &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.base_str));
v.push_back(std::to_string(e.base_sta));
v.push_back(std::to_string(e.base_dex));
v.push_back(std::to_string(e.base_agi));
v.push_back(std::to_string(e.base_int));
v.push_back(std::to_string(e.base_wis));
v.push_back(std::to_string(e.base_cha));
v.push_back(std::to_string(e.alloc_str));
v.push_back(std::to_string(e.alloc_sta));
v.push_back(std::to_string(e.alloc_dex));
v.push_back(std::to_string(e.alloc_agi));
v.push_back(std::to_string(e.alloc_int));
v.push_back(std::to_string(e.alloc_wis));
v.push_back(std::to_string(e.alloc_cha));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharCreatePointAllocations> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.base_str));
v.push_back(std::to_string(e.base_sta));
v.push_back(std::to_string(e.base_dex));
v.push_back(std::to_string(e.base_agi));
v.push_back(std::to_string(e.base_int));
v.push_back(std::to_string(e.base_wis));
v.push_back(std::to_string(e.base_cha));
v.push_back(std::to_string(e.alloc_str));
v.push_back(std::to_string(e.alloc_sta));
v.push_back(std::to_string(e.alloc_dex));
v.push_back(std::to_string(e.alloc_agi));
v.push_back(std::to_string(e.alloc_int));
v.push_back(std::to_string(e.alloc_wis));
v.push_back(std::to_string(e.alloc_cha));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHAR_CREATE_POINT_ALLOCATIONS_REPOSITORY_H #endif //EQEMU_BASE_CHAR_CREATE_POINT_ALLOCATIONS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHAR_RECIPE_LIST_REPOSITORY_H #ifndef EQEMU_BASE_CHAR_RECIPE_LIST_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
char_recipe_list_id char_recipe_list_id
) )
); );
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharRecipeList &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.recipe_id));
v.push_back(std::to_string(e.madecount));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharRecipeList> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.recipe_id));
v.push_back(std::to_string(e.madecount));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHAR_RECIPE_LIST_REPOSITORY_H #endif //EQEMU_BASE_CHAR_RECIPE_LIST_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_ACTIVITIES_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_ACTIVITIES_REPOSITORY_H
@ -120,8 +120,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_activities_id character_activities_id
) )
); );
@ -130,10 +131,10 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterActivities e{}; CharacterActivities e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.completed = static_cast<int8_t>(atoi(row[4])); e.completed = static_cast<int8_t>(atoi(row[4]));
return e; return e;
@ -266,10 +267,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterActivities e{}; CharacterActivities e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.completed = static_cast<int8_t>(atoi(row[4])); e.completed = static_cast<int8_t>(atoi(row[4]));
all_entries.push_back(e); all_entries.push_back(e);
@ -295,10 +296,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterActivities e{}; CharacterActivities e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.completed = static_cast<int8_t>(atoi(row[4])); e.completed = static_cast<int8_t>(atoi(row[4]));
all_entries.push_back(e); all_entries.push_back(e);
@ -358,6 +359,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterActivities &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.activityid));
v.push_back(std::to_string(e.donecount));
v.push_back(std::to_string(e.completed));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterActivities> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.activityid));
v.push_back(std::to_string(e.donecount));
v.push_back(std::to_string(e.completed));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_ACTIVITIES_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_ACTIVITIES_REPOSITORY_H

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterAltCurrencyRepository { class BaseCharacterAltCurrencyRepository {
public: public:
struct CharacterAltCurrency { struct CharacterAltCurrency {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterAltCurrency e{}; CharacterAltCurrency e{};
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -252,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterAltCurrency e{}; CharacterAltCurrency e{};
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -279,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterAltCurrency e{}; CharacterAltCurrency e{};
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterAlternateAbilitiesRepository { class BaseCharacterAlternateAbilitiesRepository {
public: public:
struct CharacterAlternateAbilities { struct CharacterAlternateAbilities {
@ -128,10 +127,10 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterAlternateAbilities e{}; CharacterAlternateAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
return e; return e;
} }
@ -260,10 +259,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterAlternateAbilities e{}; CharacterAlternateAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -288,10 +287,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterAlternateAbilities e{}; CharacterAlternateAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterAurasRepository { class BaseCharacterAurasRepository {
public: public:
struct CharacterAuras { struct CharacterAuras {

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterBandolierRepository { class BaseCharacterBandolierRepository {
public: public:
struct CharacterBandolier { struct CharacterBandolier {
@ -136,11 +135,11 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterBandolier e{}; CharacterBandolier e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.bandolier_name = row[5] ? row[5] : ""; e.bandolier_name = row[5] ? row[5] : "";
return e; return e;
@ -276,11 +275,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBandolier e{}; CharacterBandolier e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.bandolier_name = row[5] ? row[5] : ""; e.bandolier_name = row[5] ? row[5] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -306,11 +305,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBandolier e{}; CharacterBandolier e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.bandolier_name = row[5] ? row[5] : ""; e.bandolier_name = row[5] ? row[5] : "";
all_entries.push_back(e); all_entries.push_back(e);

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterBindRepository { class BaseCharacterBindRepository {
public: public:
struct CharacterBind { struct CharacterBind {
@ -144,14 +143,14 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterBind e{}; CharacterBind e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<int32_t>(atoi(row[1])); e.slot = static_cast<int32_t>(atoi(row[1]));
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.heading = strtof(row[7], nullptr); e.heading = row[7] ? strtof(row[7], nullptr) : 0;
return e; return e;
} }
@ -291,14 +290,14 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBind e{}; CharacterBind e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<int32_t>(atoi(row[1])); e.slot = static_cast<int32_t>(atoi(row[1]));
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.heading = strtof(row[7], nullptr); e.heading = row[7] ? strtof(row[7], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -323,14 +322,14 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBind e{}; CharacterBind e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<int32_t>(atoi(row[1])); e.slot = static_cast<int32_t>(atoi(row[1]));
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.x = strtof(row[4], nullptr); e.x = row[4] ? strtof(row[4], nullptr) : 0;
e.y = strtof(row[5], nullptr); e.y = row[5] ? strtof(row[5], nullptr) : 0;
e.z = strtof(row[6], nullptr); e.z = row[6] ? strtof(row[6], nullptr) : 0;
e.heading = strtof(row[7], nullptr); e.heading = row[7] ? strtof(row[7], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterBuffsRepository { class BaseCharacterBuffsRepository {
public: public:
struct CharacterBuffs { struct CharacterBuffs {
@ -180,17 +179,17 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterBuffs e{}; CharacterBuffs e{};
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.caster_name = row[4] ? row[4] : ""; e.caster_name = row[4] ? row[4] : "";
e.ticsremaining = static_cast<int32_t>(atoi(row[5])); e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.dot_rune = static_cast<int32_t>(atoi(row[11])); e.dot_rune = static_cast<int32_t>(atoi(row[11]));
e.caston_x = static_cast<int32_t>(atoi(row[12])); e.caston_x = static_cast<int32_t>(atoi(row[12]));
e.caston_y = static_cast<int32_t>(atoi(row[13])); e.caston_y = static_cast<int32_t>(atoi(row[13]));
@ -364,17 +363,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBuffs e{}; CharacterBuffs e{};
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.caster_name = row[4] ? row[4] : ""; e.caster_name = row[4] ? row[4] : "";
e.ticsremaining = static_cast<int32_t>(atoi(row[5])); e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.dot_rune = static_cast<int32_t>(atoi(row[11])); e.dot_rune = static_cast<int32_t>(atoi(row[11]));
e.caston_x = static_cast<int32_t>(atoi(row[12])); e.caston_x = static_cast<int32_t>(atoi(row[12]));
e.caston_y = static_cast<int32_t>(atoi(row[13])); e.caston_y = static_cast<int32_t>(atoi(row[13]));
@ -405,17 +404,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterBuffs e{}; CharacterBuffs e{};
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.caster_name = row[4] ? row[4] : ""; e.caster_name = row[4] ? row[4] : "";
e.ticsremaining = static_cast<int32_t>(atoi(row[5])); e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.dot_rune = static_cast<int32_t>(atoi(row[11])); e.dot_rune = static_cast<int32_t>(atoi(row[11]));
e.caston_x = static_cast<int32_t>(atoi(row[12])); e.caston_x = static_cast<int32_t>(atoi(row[12]));
e.caston_y = static_cast<int32_t>(atoi(row[13])); e.caston_y = static_cast<int32_t>(atoi(row[13]));

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_CORPSE_ITEMS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_CORPSE_ITEMS_REPOSITORY_H
@ -30,6 +30,10 @@ public:
uint32_t aug_5; uint32_t aug_5;
int32_t aug_6; int32_t aug_6;
int16_t attuned; int16_t attuned;
std::string custom_data;
uint32_t ornamenticon;
uint32_t ornamentidfile;
uint32_t ornament_hero_model;
}; };
static std::string PrimaryKey() static std::string PrimaryKey()
@ -51,6 +55,10 @@ public:
"aug_5", "aug_5",
"aug_6", "aug_6",
"attuned", "attuned",
"custom_data",
"ornamenticon",
"ornamentidfile",
"ornament_hero_model",
}; };
} }
@ -68,6 +76,10 @@ public:
"aug_5", "aug_5",
"aug_6", "aug_6",
"attuned", "attuned",
"custom_data",
"ornamenticon",
"ornamentidfile",
"ornament_hero_model",
}; };
} }
@ -119,6 +131,10 @@ public:
e.aug_5 = 0; e.aug_5 = 0;
e.aug_6 = 0; e.aug_6 = 0;
e.attuned = 0; e.attuned = 0;
e.custom_data = "";
e.ornamenticon = 0;
e.ornamentidfile = 0;
e.ornament_hero_model = 0;
return e; return e;
} }
@ -144,8 +160,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_corpse_items_id character_corpse_items_id
) )
); );
@ -154,17 +171,21 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterCorpseItems e{}; CharacterCorpseItems e{};
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.aug_6 = static_cast<int32_t>(atoi(row[9])); e.aug_6 = static_cast<int32_t>(atoi(row[9]));
e.attuned = static_cast<int16_t>(atoi(row[10])); e.attuned = static_cast<int16_t>(atoi(row[10]));
e.custom_data = row[11] ? row[11] : "";
e.ornamenticon = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.ornamentidfile = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.ornament_hero_model = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
return e; return e;
} }
@ -209,6 +230,10 @@ public:
v.push_back(columns[8] + " = " + std::to_string(e.aug_5)); v.push_back(columns[8] + " = " + std::to_string(e.aug_5));
v.push_back(columns[9] + " = " + std::to_string(e.aug_6)); v.push_back(columns[9] + " = " + std::to_string(e.aug_6));
v.push_back(columns[10] + " = " + std::to_string(e.attuned)); v.push_back(columns[10] + " = " + std::to_string(e.attuned));
v.push_back(columns[11] + " = '" + Strings::Escape(e.custom_data) + "'");
v.push_back(columns[12] + " = " + std::to_string(e.ornamenticon));
v.push_back(columns[13] + " = " + std::to_string(e.ornamentidfile));
v.push_back(columns[14] + " = " + std::to_string(e.ornament_hero_model));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -241,6 +266,10 @@ public:
v.push_back(std::to_string(e.aug_5)); v.push_back(std::to_string(e.aug_5));
v.push_back(std::to_string(e.aug_6)); v.push_back(std::to_string(e.aug_6));
v.push_back(std::to_string(e.attuned)); v.push_back(std::to_string(e.attuned));
v.push_back("'" + Strings::Escape(e.custom_data) + "'");
v.push_back(std::to_string(e.ornamenticon));
v.push_back(std::to_string(e.ornamentidfile));
v.push_back(std::to_string(e.ornament_hero_model));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -281,6 +310,10 @@ public:
v.push_back(std::to_string(e.aug_5)); v.push_back(std::to_string(e.aug_5));
v.push_back(std::to_string(e.aug_6)); v.push_back(std::to_string(e.aug_6));
v.push_back(std::to_string(e.attuned)); v.push_back(std::to_string(e.attuned));
v.push_back("'" + Strings::Escape(e.custom_data) + "'");
v.push_back(std::to_string(e.ornamenticon));
v.push_back(std::to_string(e.ornamentidfile));
v.push_back(std::to_string(e.ornament_hero_model));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")"); insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
} }
@ -314,17 +347,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCorpseItems e{}; CharacterCorpseItems e{};
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.aug_6 = static_cast<int32_t>(atoi(row[9])); e.aug_6 = static_cast<int32_t>(atoi(row[9]));
e.attuned = static_cast<int16_t>(atoi(row[10])); e.attuned = static_cast<int16_t>(atoi(row[10]));
e.custom_data = row[11] ? row[11] : "";
e.ornamenticon = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.ornamentidfile = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.ornament_hero_model = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -349,17 +386,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCorpseItems e{}; CharacterCorpseItems e{};
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.aug_6 = static_cast<int32_t>(atoi(row[9])); e.aug_6 = static_cast<int32_t>(atoi(row[9]));
e.attuned = static_cast<int16_t>(atoi(row[10])); e.attuned = static_cast<int16_t>(atoi(row[10]));
e.custom_data = row[11] ? row[11] : "";
e.ornamenticon = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.ornamentidfile = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.ornament_hero_model = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -418,6 +459,90 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterCorpseItems &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.corpse_id));
v.push_back(std::to_string(e.equip_slot));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.charges));
v.push_back(std::to_string(e.aug_1));
v.push_back(std::to_string(e.aug_2));
v.push_back(std::to_string(e.aug_3));
v.push_back(std::to_string(e.aug_4));
v.push_back(std::to_string(e.aug_5));
v.push_back(std::to_string(e.aug_6));
v.push_back(std::to_string(e.attuned));
v.push_back("'" + Strings::Escape(e.custom_data) + "'");
v.push_back(std::to_string(e.ornamenticon));
v.push_back(std::to_string(e.ornamentidfile));
v.push_back(std::to_string(e.ornament_hero_model));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterCorpseItems> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.corpse_id));
v.push_back(std::to_string(e.equip_slot));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.charges));
v.push_back(std::to_string(e.aug_1));
v.push_back(std::to_string(e.aug_2));
v.push_back(std::to_string(e.aug_3));
v.push_back(std::to_string(e.aug_4));
v.push_back(std::to_string(e.aug_5));
v.push_back(std::to_string(e.aug_6));
v.push_back(std::to_string(e.attuned));
v.push_back("'" + Strings::Escape(e.custom_data) + "'");
v.push_back(std::to_string(e.ornamenticon));
v.push_back(std::to_string(e.ornamentidfile));
v.push_back(std::to_string(e.ornament_hero_model));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_CORPSE_ITEMS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_CORPSE_ITEMS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_CORPSES_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_CORPSES_REPOSITORY_H
@ -288,8 +288,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_corpses_id character_corpses_id
) )
); );
@ -298,53 +299,53 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterCorpses e{}; CharacterCorpses e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.zone_id = static_cast<int16_t>(atoi(row[3])); e.zone_id = static_cast<int16_t>(atoi(row[3]));
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.x = strtof(row[5], nullptr); e.x = row[5] ? strtof(row[5], nullptr) : 0;
e.y = strtof(row[6], nullptr); e.y = row[6] ? strtof(row[6], nullptr) : 0;
e.z = strtof(row[7], nullptr); e.z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10); e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10);
e.guild_consent_id = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10)); e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.is_buried = static_cast<int8_t>(atoi(row[12])); e.is_buried = static_cast<int8_t>(atoi(row[12]));
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13])); e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
e.is_locked = static_cast<int8_t>(atoi(row[14])); e.is_locked = static_cast<int8_t>(atoi(row[14]));
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10)); e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10)); e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10)); e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10)); e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10)); e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10)); e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10)); e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10)); e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10)); e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10)); e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10)); e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10)); e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10)); e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10)); e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10)); e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10)); e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10)); e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10)); e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10)); e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10)); e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10)); e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10)); e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10)); e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10)); e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
return e; return e;
} }
@ -601,53 +602,53 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCorpses e{}; CharacterCorpses e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.zone_id = static_cast<int16_t>(atoi(row[3])); e.zone_id = static_cast<int16_t>(atoi(row[3]));
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.x = strtof(row[5], nullptr); e.x = row[5] ? strtof(row[5], nullptr) : 0;
e.y = strtof(row[6], nullptr); e.y = row[6] ? strtof(row[6], nullptr) : 0;
e.z = strtof(row[7], nullptr); e.z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10); e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10);
e.guild_consent_id = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10)); e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.is_buried = static_cast<int8_t>(atoi(row[12])); e.is_buried = static_cast<int8_t>(atoi(row[12]));
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13])); e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
e.is_locked = static_cast<int8_t>(atoi(row[14])); e.is_locked = static_cast<int8_t>(atoi(row[14]));
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10)); e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10)); e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10)); e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10)); e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10)); e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10)); e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10)); e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10)); e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10)); e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10)); e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10)); e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10)); e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10)); e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10)); e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10)); e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10)); e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10)); e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10)); e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10)); e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10)); e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10)); e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10)); e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10)); e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10)); e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -672,53 +673,53 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCorpses e{}; CharacterCorpses e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.charname = row[2] ? row[2] : ""; e.charname = row[2] ? row[2] : "";
e.zone_id = static_cast<int16_t>(atoi(row[3])); e.zone_id = static_cast<int16_t>(atoi(row[3]));
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10)); e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.x = strtof(row[5], nullptr); e.x = row[5] ? strtof(row[5], nullptr) : 0;
e.y = strtof(row[6], nullptr); e.y = row[6] ? strtof(row[6], nullptr) : 0;
e.z = strtof(row[7], nullptr); e.z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10); e.time_of_death = strtoll(row[9] ? row[9] : "-1", nullptr, 10);
e.guild_consent_id = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10)); e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.is_buried = static_cast<int8_t>(atoi(row[12])); e.is_buried = static_cast<int8_t>(atoi(row[12]));
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13])); e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
e.is_locked = static_cast<int8_t>(atoi(row[14])); e.is_locked = static_cast<int8_t>(atoi(row[14]));
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10)); e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10)); e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10)); e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10)); e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10)); e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10)); e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10)); e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10)); e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10)); e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10)); e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10)); e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10)); e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10)); e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10)); e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10)); e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10)); e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10)); e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10)); e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10)); e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10)); e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10)); e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10)); e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10)); e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10)); e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10)); e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10)); e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10)); e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10)); e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -777,6 +778,154 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterCorpses &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
v.push_back("'" + Strings::Escape(e.charname) + "'");
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
v.push_back("FROM_UNIXTIME(" + (e.time_of_death > 0 ? std::to_string(e.time_of_death) : "null") + ")");
v.push_back(std::to_string(e.guild_consent_id));
v.push_back(std::to_string(e.is_rezzed));
v.push_back(std::to_string(e.is_buried));
v.push_back(std::to_string(e.was_at_graveyard));
v.push_back(std::to_string(e.is_locked));
v.push_back(std::to_string(e.exp));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.texture));
v.push_back(std::to_string(e.helm_texture));
v.push_back(std::to_string(e.copper));
v.push_back(std::to_string(e.silver));
v.push_back(std::to_string(e.gold));
v.push_back(std::to_string(e.platinum));
v.push_back(std::to_string(e.hair_color));
v.push_back(std::to_string(e.beard_color));
v.push_back(std::to_string(e.eye_color_1));
v.push_back(std::to_string(e.eye_color_2));
v.push_back(std::to_string(e.hair_style));
v.push_back(std::to_string(e.face));
v.push_back(std::to_string(e.beard));
v.push_back(std::to_string(e.drakkin_heritage));
v.push_back(std::to_string(e.drakkin_tattoo));
v.push_back(std::to_string(e.drakkin_details));
v.push_back(std::to_string(e.wc_1));
v.push_back(std::to_string(e.wc_2));
v.push_back(std::to_string(e.wc_3));
v.push_back(std::to_string(e.wc_4));
v.push_back(std::to_string(e.wc_5));
v.push_back(std::to_string(e.wc_6));
v.push_back(std::to_string(e.wc_7));
v.push_back(std::to_string(e.wc_8));
v.push_back(std::to_string(e.wc_9));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterCorpses> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
v.push_back("'" + Strings::Escape(e.charname) + "'");
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
v.push_back("FROM_UNIXTIME(" + (e.time_of_death > 0 ? std::to_string(e.time_of_death) : "null") + ")");
v.push_back(std::to_string(e.guild_consent_id));
v.push_back(std::to_string(e.is_rezzed));
v.push_back(std::to_string(e.is_buried));
v.push_back(std::to_string(e.was_at_graveyard));
v.push_back(std::to_string(e.is_locked));
v.push_back(std::to_string(e.exp));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.texture));
v.push_back(std::to_string(e.helm_texture));
v.push_back(std::to_string(e.copper));
v.push_back(std::to_string(e.silver));
v.push_back(std::to_string(e.gold));
v.push_back(std::to_string(e.platinum));
v.push_back(std::to_string(e.hair_color));
v.push_back(std::to_string(e.beard_color));
v.push_back(std::to_string(e.eye_color_1));
v.push_back(std::to_string(e.eye_color_2));
v.push_back(std::to_string(e.hair_style));
v.push_back(std::to_string(e.face));
v.push_back(std::to_string(e.beard));
v.push_back(std::to_string(e.drakkin_heritage));
v.push_back(std::to_string(e.drakkin_tattoo));
v.push_back(std::to_string(e.drakkin_details));
v.push_back(std::to_string(e.wc_1));
v.push_back(std::to_string(e.wc_2));
v.push_back(std::to_string(e.wc_3));
v.push_back(std::to_string(e.wc_4));
v.push_back(std::to_string(e.wc_5));
v.push_back(std::to_string(e.wc_6));
v.push_back(std::to_string(e.wc_7));
v.push_back(std::to_string(e.wc_8));
v.push_back(std::to_string(e.wc_9));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_CORPSES_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_CORPSES_REPOSITORY_H

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterCurrencyRepository { class BaseCharacterCurrencyRepository {
public: public:
struct CharacterCurrency { struct CharacterCurrency {
@ -180,23 +179,23 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterCurrency e{}; CharacterCurrency e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
return e; return e;
} }
@ -364,23 +363,23 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCurrency e{}; CharacterCurrency e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -405,23 +404,23 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterCurrency e{}; CharacterCurrency e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10)); e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10)); e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10)); e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10)); e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10)); e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

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

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterDisciplinesRepository { class BaseCharacterDisciplinesRepository {
public: public:
struct CharacterDisciplines { struct CharacterDisciplines {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterDisciplines e{}; CharacterDisciplines e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -252,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterDisciplines e{}; CharacterDisciplines e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -279,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterDisciplines e{}; CharacterDisciplines e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_EXP_MODIFIERS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_EXP_MODIFIERS_REPOSITORY_H
@ -120,8 +120,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_exp_modifiers_id character_exp_modifiers_id
) )
); );
@ -133,8 +134,8 @@ public:
e.character_id = static_cast<int32_t>(atoi(row[0])); e.character_id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.instance_version = static_cast<int32_t>(atoi(row[2])); e.instance_version = static_cast<int32_t>(atoi(row[2]));
e.aa_modifier = strtof(row[3], nullptr); e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
e.exp_modifier = strtof(row[4], nullptr); e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
return e; return e;
} }
@ -269,8 +270,8 @@ public:
e.character_id = static_cast<int32_t>(atoi(row[0])); e.character_id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.instance_version = static_cast<int32_t>(atoi(row[2])); e.instance_version = static_cast<int32_t>(atoi(row[2]));
e.aa_modifier = strtof(row[3], nullptr); e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
e.exp_modifier = strtof(row[4], nullptr); e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -298,8 +299,8 @@ public:
e.character_id = static_cast<int32_t>(atoi(row[0])); e.character_id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.instance_version = static_cast<int32_t>(atoi(row[2])); e.instance_version = static_cast<int32_t>(atoi(row[2]));
e.aa_modifier = strtof(row[3], nullptr); e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
e.exp_modifier = strtof(row[4], nullptr); e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -358,6 +359,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterExpModifiers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.instance_version));
v.push_back(std::to_string(e.aa_modifier));
v.push_back(std::to_string(e.exp_modifier));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterExpModifiers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.instance_version));
v.push_back(std::to_string(e.aa_modifier));
v.push_back(std::to_string(e.exp_modifier));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_EXP_MODIFIERS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_EXP_MODIFIERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H
@ -128,8 +128,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_expedition_lockouts_id character_expedition_lockouts_id
) )
); );
@ -138,12 +139,12 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterExpeditionLockouts e{}; CharacterExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.expedition_name = row[2] ? row[2] : ""; e.expedition_name = row[2] ? row[2] : "";
e.event_name = row[3] ? row[3] : ""; e.event_name = row[3] ? row[3] : "";
e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10); e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.from_expedition_uuid = row[6] ? row[6] : ""; e.from_expedition_uuid = row[6] ? row[6] : "";
return e; return e;
@ -281,12 +282,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterExpeditionLockouts e{}; CharacterExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.expedition_name = row[2] ? row[2] : ""; e.expedition_name = row[2] ? row[2] : "";
e.event_name = row[3] ? row[3] : ""; e.event_name = row[3] ? row[3] : "";
e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10); e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.from_expedition_uuid = row[6] ? row[6] : ""; e.from_expedition_uuid = row[6] ? row[6] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -312,12 +313,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterExpeditionLockouts e{}; CharacterExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.expedition_name = row[2] ? row[2] : ""; e.expedition_name = row[2] ? row[2] : "";
e.event_name = row[3] ? row[3] : ""; e.event_name = row[3] ? row[3] : "";
e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10); e.expire_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.from_expedition_uuid = row[6] ? row[6] : ""; e.from_expedition_uuid = row[6] ? row[6] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -377,6 +378,74 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterExpeditionLockouts &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.expedition_name) + "'");
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterExpeditionLockouts> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.expedition_name) + "'");
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_EXPEDITION_LOCKOUTS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_INSPECT_MESSAGES_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_INSPECT_MESSAGES_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_inspect_messages_id character_inspect_messages_id
) )
); );
@ -118,7 +119,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterInspectMessages e{}; CharacterInspectMessages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.inspect_message = row[1] ? row[1] : ""; e.inspect_message = row[1] ? row[1] : "";
return e; return e;
@ -242,7 +243,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterInspectMessages e{}; CharacterInspectMessages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.inspect_message = row[1] ? row[1] : ""; e.inspect_message = row[1] ? row[1] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -268,7 +269,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterInspectMessages e{}; CharacterInspectMessages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.inspect_message = row[1] ? row[1] : ""; e.inspect_message = row[1] ? row[1] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterInspectMessages &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.inspect_message) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterInspectMessages> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.inspect_message) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_INSPECT_MESSAGES_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_INSPECT_MESSAGES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_INSTANCE_SAFERETURNS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_INSTANCE_SAFERETURNS_REPOSITORY_H
@ -136,8 +136,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_instance_safereturns_id character_instance_safereturns_id
) )
); );
@ -146,15 +147,15 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterInstanceSafereturns e{}; CharacterInstanceSafereturns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_zone_id = static_cast<int32_t>(atoi(row[2])); e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
e.instance_id = static_cast<int32_t>(atoi(row[3])); e.instance_id = static_cast<int32_t>(atoi(row[3]));
e.safe_zone_id = static_cast<int32_t>(atoi(row[4])); e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
e.safe_x = strtof(row[5], nullptr); e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
e.safe_y = strtof(row[6], nullptr); e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
e.safe_z = strtof(row[7], nullptr); e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
e.safe_heading = strtof(row[8], nullptr); e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
return e; return e;
} }
@ -297,15 +298,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterInstanceSafereturns e{}; CharacterInstanceSafereturns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_zone_id = static_cast<int32_t>(atoi(row[2])); e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
e.instance_id = static_cast<int32_t>(atoi(row[3])); e.instance_id = static_cast<int32_t>(atoi(row[3]));
e.safe_zone_id = static_cast<int32_t>(atoi(row[4])); e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
e.safe_x = strtof(row[5], nullptr); e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
e.safe_y = strtof(row[6], nullptr); e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
e.safe_z = strtof(row[7], nullptr); e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
e.safe_heading = strtof(row[8], nullptr); e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -330,15 +331,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterInstanceSafereturns e{}; CharacterInstanceSafereturns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.instance_zone_id = static_cast<int32_t>(atoi(row[2])); e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
e.instance_id = static_cast<int32_t>(atoi(row[3])); e.instance_id = static_cast<int32_t>(atoi(row[3]));
e.safe_zone_id = static_cast<int32_t>(atoi(row[4])); e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
e.safe_x = strtof(row[5], nullptr); e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
e.safe_y = strtof(row[6], nullptr); e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
e.safe_z = strtof(row[7], nullptr); e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
e.safe_heading = strtof(row[8], nullptr); e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -397,6 +398,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterInstanceSafereturns &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.instance_zone_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.safe_zone_id));
v.push_back(std::to_string(e.safe_x));
v.push_back(std::to_string(e.safe_y));
v.push_back(std::to_string(e.safe_z));
v.push_back(std::to_string(e.safe_heading));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterInstanceSafereturns> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.instance_zone_id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.safe_zone_id));
v.push_back(std::to_string(e.safe_x));
v.push_back(std::to_string(e.safe_y));
v.push_back(std::to_string(e.safe_z));
v.push_back(std::to_string(e.safe_heading));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_INSTANCE_SAFERETURNS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_INSTANCE_SAFERETURNS_REPOSITORY_H

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterItemRecastRepository { class BaseCharacterItemRecastRepository {
public: public:
struct CharacterItemRecast { struct CharacterItemRecast {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterItemRecast e{}; CharacterItemRecast e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -252,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterItemRecast e{}; CharacterItemRecast e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -279,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterItemRecast e{}; CharacterItemRecast e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterLanguagesRepository { class BaseCharacterLanguagesRepository {
public: public:
struct CharacterLanguages { struct CharacterLanguages {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterLanguages e{}; CharacterLanguages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -251,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterLanguages e{}; CharacterLanguages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -278,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterLanguages e{}; CharacterLanguages e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterLeadershipAbilitiesRepository { class BaseCharacterLeadershipAbilitiesRepository {
public: public:
struct CharacterLeadershipAbilities { struct CharacterLeadershipAbilities {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterLeadershipAbilities e{}; CharacterLeadershipAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.rank = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -252,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterLeadershipAbilities e{}; CharacterLeadershipAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.rank = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -279,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterLeadershipAbilities e{}; CharacterLeadershipAbilities e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.rank = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterMaterialRepository { class BaseCharacterMaterialRepository {
public: public:
struct CharacterMaterial { struct CharacterMaterial {
@ -140,13 +139,13 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterMaterial e{}; CharacterMaterial e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
return e; return e;
} }
@ -283,13 +282,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterMaterial e{}; CharacterMaterial e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -314,13 +313,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterMaterial e{}; CharacterMaterial e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10)); e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10)); e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterMemmedSpellsRepository { class BaseCharacterMemmedSpellsRepository {
public: public:
struct CharacterMemmedSpells { struct CharacterMemmedSpells {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterMemmedSpells e{}; CharacterMemmedSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -252,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterMemmedSpells e{}; CharacterMemmedSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -279,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterMemmedSpells e{}; CharacterMemmedSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_PEQZONE_FLAGS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_PEQZONE_FLAGS_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_peqzone_flags_id character_peqzone_flags_id
) )
); );
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterPeqzoneFlags &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterPeqzoneFlags> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_PEQZONE_FLAGS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_PEQZONE_FLAGS_REPOSITORY_H

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterPetBuffsRepository { class BaseCharacterPetBuffsRepository {
public: public:
struct CharacterPetBuffs { struct CharacterPetBuffs {
@ -166,7 +165,7 @@ public:
e.counters = static_cast<int32_t>(atoi(row[7])); e.counters = static_cast<int32_t>(atoi(row[7]));
e.numhits = static_cast<int32_t>(atoi(row[8])); e.numhits = static_cast<int32_t>(atoi(row[8]));
e.rune = static_cast<int32_t>(atoi(row[9])); e.rune = static_cast<int32_t>(atoi(row[9]));
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
return e; return e;
} }
@ -326,7 +325,7 @@ public:
e.counters = static_cast<int32_t>(atoi(row[7])); e.counters = static_cast<int32_t>(atoi(row[7]));
e.numhits = static_cast<int32_t>(atoi(row[8])); e.numhits = static_cast<int32_t>(atoi(row[8]));
e.rune = static_cast<int32_t>(atoi(row[9])); e.rune = static_cast<int32_t>(atoi(row[9]));
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -361,7 +360,7 @@ public:
e.counters = static_cast<int32_t>(atoi(row[7])); e.counters = static_cast<int32_t>(atoi(row[7]));
e.numhits = static_cast<int32_t>(atoi(row[8])); e.numhits = static_cast<int32_t>(atoi(row[8]));
e.rune = static_cast<int32_t>(atoi(row[9])); e.rune = static_cast<int32_t>(atoi(row[9]));
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10)); e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterPetInfoRepository { class BaseCharacterPetInfoRepository {
public: public:
struct CharacterPetInfo { struct CharacterPetInfo {
@ -155,7 +154,7 @@ public:
e.spell_id = static_cast<int32_t>(atoi(row[4])); e.spell_id = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5])); e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = static_cast<int32_t>(atoi(row[6])); e.mana = static_cast<int32_t>(atoi(row[6]));
e.size = strtof(row[7], nullptr); e.size = row[7] ? strtof(row[7], nullptr) : 0;
e.taunting = static_cast<int8_t>(atoi(row[8])); e.taunting = static_cast<int8_t>(atoi(row[8]));
return e; return e;
@ -307,7 +306,7 @@ public:
e.spell_id = static_cast<int32_t>(atoi(row[4])); e.spell_id = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5])); e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = static_cast<int32_t>(atoi(row[6])); e.mana = static_cast<int32_t>(atoi(row[6]));
e.size = strtof(row[7], nullptr); e.size = row[7] ? strtof(row[7], nullptr) : 0;
e.taunting = static_cast<int8_t>(atoi(row[8])); e.taunting = static_cast<int8_t>(atoi(row[8]));
all_entries.push_back(e); all_entries.push_back(e);
@ -340,7 +339,7 @@ public:
e.spell_id = static_cast<int32_t>(atoi(row[4])); e.spell_id = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5])); e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = static_cast<int32_t>(atoi(row[6])); e.mana = static_cast<int32_t>(atoi(row[6]));
e.size = strtof(row[7], nullptr); e.size = row[7] ? strtof(row[7], nullptr) : 0;
e.taunting = static_cast<int8_t>(atoi(row[8])); e.taunting = static_cast<int8_t>(atoi(row[8]));
all_entries.push_back(e); all_entries.push_back(e);

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterPetInventoryRepository { class BaseCharacterPetInventoryRepository {
public: public:
struct CharacterPetInventory { struct CharacterPetInventory {

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterPotionbeltRepository { class BaseCharacterPotionbeltRepository {
public: public:
struct CharacterPotionbelt { struct CharacterPotionbelt {
@ -128,10 +127,10 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterPotionbelt e{}; CharacterPotionbelt e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
return e; return e;
} }
@ -260,10 +259,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterPotionbelt e{}; CharacterPotionbelt e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -288,10 +287,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterPotionbelt e{}; CharacterPotionbelt e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterSkillsRepository { class BaseCharacterSkillsRepository {
public: public:
struct CharacterSkills { struct CharacterSkills {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterSkills e{}; CharacterSkills e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -251,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterSkills e{}; CharacterSkills e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -278,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterSkills e{}; CharacterSkills e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterSpellsRepository { class BaseCharacterSpellsRepository {
public: public:
struct CharacterSpells { struct CharacterSpells {
@ -124,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterSpells e{}; CharacterSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -251,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterSpells e{}; CharacterSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -278,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterSpells e{}; CharacterSpells e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10)); e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10)); e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_STATS_RECORD_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_STATS_RECORD_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterStatsRecordRepository { class BaseCharacterStatsRecordRepository {
public: public:
struct CharacterStatsRecord { struct CharacterStatsRecord {
@ -415,9 +414,9 @@ public:
e.class_ = static_cast<int32_t>(atoi(row[4])); e.class_ = static_cast<int32_t>(atoi(row[4]));
e.race = static_cast<int32_t>(atoi(row[5])); e.race = static_cast<int32_t>(atoi(row[5]));
e.aa_points = static_cast<int32_t>(atoi(row[6])); e.aa_points = static_cast<int32_t>(atoi(row[6]));
e.hp = strtoll(row[7], nullptr, 10); e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
e.mana = strtoll(row[8], nullptr, 10); e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
e.endurance = strtoll(row[9], nullptr, 10); e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
e.ac = static_cast<int32_t>(atoi(row[10])); e.ac = static_cast<int32_t>(atoi(row[10]));
e.strength = static_cast<int32_t>(atoi(row[11])); e.strength = static_cast<int32_t>(atoi(row[11]));
e.stamina = static_cast<int32_t>(atoi(row[12])); e.stamina = static_cast<int32_t>(atoi(row[12]));
@ -827,9 +826,9 @@ public:
e.class_ = static_cast<int32_t>(atoi(row[4])); e.class_ = static_cast<int32_t>(atoi(row[4]));
e.race = static_cast<int32_t>(atoi(row[5])); e.race = static_cast<int32_t>(atoi(row[5]));
e.aa_points = static_cast<int32_t>(atoi(row[6])); e.aa_points = static_cast<int32_t>(atoi(row[6]));
e.hp = strtoll(row[7], nullptr, 10); e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
e.mana = strtoll(row[8], nullptr, 10); e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
e.endurance = strtoll(row[9], nullptr, 10); e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
e.ac = static_cast<int32_t>(atoi(row[10])); e.ac = static_cast<int32_t>(atoi(row[10]));
e.strength = static_cast<int32_t>(atoi(row[11])); e.strength = static_cast<int32_t>(atoi(row[11]));
e.stamina = static_cast<int32_t>(atoi(row[12])); e.stamina = static_cast<int32_t>(atoi(row[12]));
@ -925,9 +924,9 @@ public:
e.class_ = static_cast<int32_t>(atoi(row[4])); e.class_ = static_cast<int32_t>(atoi(row[4]));
e.race = static_cast<int32_t>(atoi(row[5])); e.race = static_cast<int32_t>(atoi(row[5]));
e.aa_points = static_cast<int32_t>(atoi(row[6])); e.aa_points = static_cast<int32_t>(atoi(row[6]));
e.hp = strtoll(row[7], nullptr, 10); e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
e.mana = strtoll(row[8], nullptr, 10); e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
e.endurance = strtoll(row[9], nullptr, 10); e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
e.ac = static_cast<int32_t>(atoi(row[10])); e.ac = static_cast<int32_t>(atoi(row[10]));
e.strength = static_cast<int32_t>(atoi(row[11])); e.strength = static_cast<int32_t>(atoi(row[11]));
e.stamina = static_cast<int32_t>(atoi(row[12])); e.stamina = static_cast<int32_t>(atoi(row[12]));
@ -1050,6 +1049,208 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterStatsRecord &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.aa_points));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.endurance));
v.push_back(std::to_string(e.ac));
v.push_back(std::to_string(e.strength));
v.push_back(std::to_string(e.stamina));
v.push_back(std::to_string(e.dexterity));
v.push_back(std::to_string(e.agility));
v.push_back(std::to_string(e.intelligence));
v.push_back(std::to_string(e.wisdom));
v.push_back(std::to_string(e.charisma));
v.push_back(std::to_string(e.magic_resist));
v.push_back(std::to_string(e.fire_resist));
v.push_back(std::to_string(e.cold_resist));
v.push_back(std::to_string(e.poison_resist));
v.push_back(std::to_string(e.disease_resist));
v.push_back(std::to_string(e.corruption_resist));
v.push_back(std::to_string(e.heroic_strength));
v.push_back(std::to_string(e.heroic_stamina));
v.push_back(std::to_string(e.heroic_dexterity));
v.push_back(std::to_string(e.heroic_agility));
v.push_back(std::to_string(e.heroic_intelligence));
v.push_back(std::to_string(e.heroic_wisdom));
v.push_back(std::to_string(e.heroic_charisma));
v.push_back(std::to_string(e.heroic_magic_resist));
v.push_back(std::to_string(e.heroic_fire_resist));
v.push_back(std::to_string(e.heroic_cold_resist));
v.push_back(std::to_string(e.heroic_poison_resist));
v.push_back(std::to_string(e.heroic_disease_resist));
v.push_back(std::to_string(e.heroic_corruption_resist));
v.push_back(std::to_string(e.haste));
v.push_back(std::to_string(e.accuracy));
v.push_back(std::to_string(e.attack));
v.push_back(std::to_string(e.avoidance));
v.push_back(std::to_string(e.clairvoyance));
v.push_back(std::to_string(e.combat_effects));
v.push_back(std::to_string(e.damage_shield_mitigation));
v.push_back(std::to_string(e.damage_shield));
v.push_back(std::to_string(e.dot_shielding));
v.push_back(std::to_string(e.hp_regen));
v.push_back(std::to_string(e.mana_regen));
v.push_back(std::to_string(e.endurance_regen));
v.push_back(std::to_string(e.shielding));
v.push_back(std::to_string(e.spell_damage));
v.push_back(std::to_string(e.spell_shielding));
v.push_back(std::to_string(e.strikethrough));
v.push_back(std::to_string(e.stun_resist));
v.push_back(std::to_string(e.backstab));
v.push_back(std::to_string(e.wind));
v.push_back(std::to_string(e.brass));
v.push_back(std::to_string(e.string));
v.push_back(std::to_string(e.percussion));
v.push_back(std::to_string(e.singing));
v.push_back(std::to_string(e.baking));
v.push_back(std::to_string(e.alchemy));
v.push_back(std::to_string(e.tailoring));
v.push_back(std::to_string(e.blacksmithing));
v.push_back(std::to_string(e.fletching));
v.push_back(std::to_string(e.brewing));
v.push_back(std::to_string(e.jewelry));
v.push_back(std::to_string(e.pottery));
v.push_back(std::to_string(e.research));
v.push_back(std::to_string(e.alcohol));
v.push_back(std::to_string(e.fishing));
v.push_back(std::to_string(e.tinkering));
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.updated_at > 0 ? std::to_string(e.updated_at) : "null") + ")");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterStatsRecord> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.character_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.status));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.aa_points));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.endurance));
v.push_back(std::to_string(e.ac));
v.push_back(std::to_string(e.strength));
v.push_back(std::to_string(e.stamina));
v.push_back(std::to_string(e.dexterity));
v.push_back(std::to_string(e.agility));
v.push_back(std::to_string(e.intelligence));
v.push_back(std::to_string(e.wisdom));
v.push_back(std::to_string(e.charisma));
v.push_back(std::to_string(e.magic_resist));
v.push_back(std::to_string(e.fire_resist));
v.push_back(std::to_string(e.cold_resist));
v.push_back(std::to_string(e.poison_resist));
v.push_back(std::to_string(e.disease_resist));
v.push_back(std::to_string(e.corruption_resist));
v.push_back(std::to_string(e.heroic_strength));
v.push_back(std::to_string(e.heroic_stamina));
v.push_back(std::to_string(e.heroic_dexterity));
v.push_back(std::to_string(e.heroic_agility));
v.push_back(std::to_string(e.heroic_intelligence));
v.push_back(std::to_string(e.heroic_wisdom));
v.push_back(std::to_string(e.heroic_charisma));
v.push_back(std::to_string(e.heroic_magic_resist));
v.push_back(std::to_string(e.heroic_fire_resist));
v.push_back(std::to_string(e.heroic_cold_resist));
v.push_back(std::to_string(e.heroic_poison_resist));
v.push_back(std::to_string(e.heroic_disease_resist));
v.push_back(std::to_string(e.heroic_corruption_resist));
v.push_back(std::to_string(e.haste));
v.push_back(std::to_string(e.accuracy));
v.push_back(std::to_string(e.attack));
v.push_back(std::to_string(e.avoidance));
v.push_back(std::to_string(e.clairvoyance));
v.push_back(std::to_string(e.combat_effects));
v.push_back(std::to_string(e.damage_shield_mitigation));
v.push_back(std::to_string(e.damage_shield));
v.push_back(std::to_string(e.dot_shielding));
v.push_back(std::to_string(e.hp_regen));
v.push_back(std::to_string(e.mana_regen));
v.push_back(std::to_string(e.endurance_regen));
v.push_back(std::to_string(e.shielding));
v.push_back(std::to_string(e.spell_damage));
v.push_back(std::to_string(e.spell_shielding));
v.push_back(std::to_string(e.strikethrough));
v.push_back(std::to_string(e.stun_resist));
v.push_back(std::to_string(e.backstab));
v.push_back(std::to_string(e.wind));
v.push_back(std::to_string(e.brass));
v.push_back(std::to_string(e.string));
v.push_back(std::to_string(e.percussion));
v.push_back(std::to_string(e.singing));
v.push_back(std::to_string(e.baking));
v.push_back(std::to_string(e.alchemy));
v.push_back(std::to_string(e.tailoring));
v.push_back(std::to_string(e.blacksmithing));
v.push_back(std::to_string(e.fletching));
v.push_back(std::to_string(e.brewing));
v.push_back(std::to_string(e.jewelry));
v.push_back(std::to_string(e.pottery));
v.push_back(std::to_string(e.research));
v.push_back(std::to_string(e.alcohol));
v.push_back(std::to_string(e.fishing));
v.push_back(std::to_string(e.tinkering));
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.updated_at > 0 ? std::to_string(e.updated_at) : "null") + ")");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_STATS_RECORD_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_STATS_RECORD_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_TASK_TIMERS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_TASK_TIMERS_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_task_timers_id character_task_timers_id
) )
); );
@ -134,9 +135,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterTaskTimers e{}; CharacterTaskTimers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.timer_type = static_cast<int32_t>(atoi(row[3])); e.timer_type = static_cast<int32_t>(atoi(row[3]));
e.timer_group = static_cast<int32_t>(atoi(row[4])); e.timer_group = static_cast<int32_t>(atoi(row[4]));
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10); e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
@ -273,9 +274,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterTaskTimers e{}; CharacterTaskTimers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.timer_type = static_cast<int32_t>(atoi(row[3])); e.timer_type = static_cast<int32_t>(atoi(row[3]));
e.timer_group = static_cast<int32_t>(atoi(row[4])); e.timer_group = static_cast<int32_t>(atoi(row[4]));
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10); e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
@ -303,9 +304,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterTaskTimers e{}; CharacterTaskTimers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.timer_type = static_cast<int32_t>(atoi(row[3])); e.timer_type = static_cast<int32_t>(atoi(row[3]));
e.timer_group = static_cast<int32_t>(atoi(row[4])); e.timer_group = static_cast<int32_t>(atoi(row[4]));
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10); e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
@ -367,6 +368,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterTaskTimers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.task_id));
v.push_back(std::to_string(e.timer_type));
v.push_back(std::to_string(e.timer_group));
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterTaskTimers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.task_id));
v.push_back(std::to_string(e.timer_type));
v.push_back(std::to_string(e.timer_group));
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_TASK_TIMERS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_TASK_TIMERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_TASKS_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_TASKS_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
character_tasks_id character_tasks_id
) )
); );
@ -134,11 +135,11 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CharacterTasks e{}; CharacterTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[3])); e.type = static_cast<int8_t>(atoi(row[3]));
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.was_rewarded = static_cast<int8_t>(atoi(row[5])); e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
return e; return e;
@ -274,11 +275,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterTasks e{}; CharacterTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[3])); e.type = static_cast<int8_t>(atoi(row[3]));
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.was_rewarded = static_cast<int8_t>(atoi(row[5])); e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
all_entries.push_back(e); all_entries.push_back(e);
@ -304,11 +305,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CharacterTasks e{}; CharacterTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.type = static_cast<int8_t>(atoi(row[3])); e.type = static_cast<int8_t>(atoi(row[3]));
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.was_rewarded = static_cast<int8_t>(atoi(row[5])); e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
all_entries.push_back(e); all_entries.push_back(e);
@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterTasks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.slot));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.acceptedtime));
v.push_back(std::to_string(e.was_rewarded));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterTasks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.slot));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.acceptedtime));
v.push_back(std::to_string(e.was_rewarded));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_TASKS_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_TASKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHARACTER_TRIBUTE_REPOSITORY_H #ifndef EQEMU_BASE_CHARACTER_TRIBUTE_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCharacterTributeRepository { class BaseCharacterTributeRepository {
public: public:
struct CharacterTribute { struct CharacterTribute {
@ -129,9 +128,9 @@ public:
CharacterTribute e{}; CharacterTribute e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
return e; return e;
} }
@ -260,9 +259,9 @@ public:
CharacterTribute e{}; CharacterTribute e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -288,9 +287,9 @@ public:
CharacterTribute e{}; CharacterTribute e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -349,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CharacterTribute &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.tier));
v.push_back(std::to_string(e.tribute));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CharacterTribute> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.tier));
v.push_back(std::to_string(e.tribute));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHARACTER_TRIBUTE_REPOSITORY_H #endif //EQEMU_BASE_CHARACTER_TRIBUTE_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHATCHANNEL_RESERVED_NAMES_REPOSITORY_H #ifndef EQEMU_BASE_CHATCHANNEL_RESERVED_NAMES_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseChatchannelReservedNamesRepository { class BaseChatchannelReservedNamesRepository {
public: public:
struct ChatchannelReservedNames { struct ChatchannelReservedNames {
@ -329,6 +328,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const ChatchannelReservedNames &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<ChatchannelReservedNames> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHATCHANNEL_RESERVED_NAMES_REPOSITORY_H #endif //EQEMU_BASE_CHATCHANNEL_RESERVED_NAMES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CHATCHANNELS_REPOSITORY_H #ifndef EQEMU_BASE_CHATCHANNELS_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseChatchannelsRepository { class BaseChatchannelsRepository {
public: public:
struct Chatchannels { struct Chatchannels {
@ -359,6 +358,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Chatchannels &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.owner) + "'");
v.push_back("'" + Strings::Escape(e.password) + "'");
v.push_back(std::to_string(e.minstatus));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Chatchannels> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.owner) + "'");
v.push_back("'" + Strings::Escape(e.password) + "'");
v.push_back(std::to_string(e.minstatus));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CHATCHANNELS_REPOSITORY_H #endif //EQEMU_BASE_CHATCHANNELS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_COMMAND_SUBSETTINGS_REPOSITORY_H #ifndef EQEMU_BASE_COMMAND_SUBSETTINGS_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
class BaseCommandSubsettingsRepository { class BaseCommandSubsettingsRepository {
public: public:
struct CommandSubsettings { struct CommandSubsettings {
@ -132,10 +131,10 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CommandSubsettings e{}; CommandSubsettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.parent_command = row[1] ? row[1] : ""; e.parent_command = row[1] ? row[1] : "";
e.sub_command = row[2] ? row[2] : ""; e.sub_command = row[2] ? row[2] : "";
e.access_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.access_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.top_level_aliases = row[4] ? row[4] : ""; e.top_level_aliases = row[4] ? row[4] : "";
return e; return e;
@ -267,10 +266,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CommandSubsettings e{}; CommandSubsettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.parent_command = row[1] ? row[1] : ""; e.parent_command = row[1] ? row[1] : "";
e.sub_command = row[2] ? row[2] : ""; e.sub_command = row[2] ? row[2] : "";
e.access_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.access_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.top_level_aliases = row[4] ? row[4] : ""; e.top_level_aliases = row[4] ? row[4] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -296,10 +295,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CommandSubsettings e{}; CommandSubsettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.parent_command = row[1] ? row[1] : ""; e.parent_command = row[1] ? row[1] : "";
e.sub_command = row[2] ? row[2] : ""; e.sub_command = row[2] ? row[2] : "";
e.access_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.access_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.top_level_aliases = row[4] ? row[4] : ""; e.top_level_aliases = row[4] ? row[4] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -359,6 +358,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CommandSubsettings &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.parent_command) + "'");
v.push_back("'" + Strings::Escape(e.sub_command) + "'");
v.push_back(std::to_string(e.access_level));
v.push_back("'" + Strings::Escape(e.top_level_aliases) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CommandSubsettings> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.parent_command) + "'");
v.push_back("'" + Strings::Escape(e.sub_command) + "'");
v.push_back(std::to_string(e.access_level));
v.push_back("'" + Strings::Escape(e.top_level_aliases) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_COMMAND_SUBSETTINGS_REPOSITORY_H #endif //EQEMU_BASE_COMMAND_SUBSETTINGS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_COMPLETED_SHARED_TASK_ACTIVITY_STATE_REPOSITORY_H #ifndef EQEMU_BASE_COMPLETED_SHARED_TASK_ACTIVITY_STATE_REPOSITORY_H
@ -120,8 +120,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
completed_shared_task_activity_state_id completed_shared_task_activity_state_id
) )
); );
@ -130,7 +131,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CompletedSharedTaskActivityState e{}; CompletedSharedTaskActivityState e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.activity_id = static_cast<int32_t>(atoi(row[1])); e.activity_id = static_cast<int32_t>(atoi(row[1]));
e.done_count = static_cast<int32_t>(atoi(row[2])); e.done_count = static_cast<int32_t>(atoi(row[2]));
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -266,7 +267,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTaskActivityState e{}; CompletedSharedTaskActivityState e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.activity_id = static_cast<int32_t>(atoi(row[1])); e.activity_id = static_cast<int32_t>(atoi(row[1]));
e.done_count = static_cast<int32_t>(atoi(row[2])); e.done_count = static_cast<int32_t>(atoi(row[2]));
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -295,7 +296,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTaskActivityState e{}; CompletedSharedTaskActivityState e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.activity_id = static_cast<int32_t>(atoi(row[1])); e.activity_id = static_cast<int32_t>(atoi(row[1]));
e.done_count = static_cast<int32_t>(atoi(row[2])); e.done_count = static_cast<int32_t>(atoi(row[2]));
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -358,6 +359,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CompletedSharedTaskActivityState &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.shared_task_id));
v.push_back(std::to_string(e.activity_id));
v.push_back(std::to_string(e.done_count));
v.push_back("FROM_UNIXTIME(" + (e.updated_time > 0 ? std::to_string(e.updated_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.completed_time > 0 ? std::to_string(e.completed_time) : "null") + ")");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CompletedSharedTaskActivityState> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.shared_task_id));
v.push_back(std::to_string(e.activity_id));
v.push_back(std::to_string(e.done_count));
v.push_back("FROM_UNIXTIME(" + (e.updated_time > 0 ? std::to_string(e.updated_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.completed_time > 0 ? std::to_string(e.completed_time) : "null") + ")");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_COMPLETED_SHARED_TASK_ACTIVITY_STATE_REPOSITORY_H #endif //EQEMU_BASE_COMPLETED_SHARED_TASK_ACTIVITY_STATE_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_COMPLETED_SHARED_TASK_MEMBERS_REPOSITORY_H #ifndef EQEMU_BASE_COMPLETED_SHARED_TASK_MEMBERS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
completed_shared_task_members_id completed_shared_task_members_id
) )
); );
@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CompletedSharedTaskMembers e{}; CompletedSharedTaskMembers e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.character_id = strtoll(row[1], nullptr, 10); e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
e.is_leader = static_cast<int8_t>(atoi(row[2])); e.is_leader = static_cast<int8_t>(atoi(row[2]));
return e; return e;
@ -250,8 +251,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTaskMembers e{}; CompletedSharedTaskMembers e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.character_id = strtoll(row[1], nullptr, 10); e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
e.is_leader = static_cast<int8_t>(atoi(row[2])); e.is_leader = static_cast<int8_t>(atoi(row[2]));
all_entries.push_back(e); all_entries.push_back(e);
@ -277,8 +278,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTaskMembers e{}; CompletedSharedTaskMembers e{};
e.shared_task_id = strtoll(row[0], nullptr, 10); e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.character_id = strtoll(row[1], nullptr, 10); e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
e.is_leader = static_cast<int8_t>(atoi(row[2])); e.is_leader = static_cast<int8_t>(atoi(row[2]));
all_entries.push_back(e); all_entries.push_back(e);
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CompletedSharedTaskMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.shared_task_id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.is_leader));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CompletedSharedTaskMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.shared_task_id));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.is_leader));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_COMPLETED_SHARED_TASK_MEMBERS_REPOSITORY_H #endif //EQEMU_BASE_COMPLETED_SHARED_TASK_MEMBERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_COMPLETED_SHARED_TASKS_REPOSITORY_H #ifndef EQEMU_BASE_COMPLETED_SHARED_TASKS_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
completed_shared_tasks_id completed_shared_tasks_id
) )
); );
@ -134,7 +135,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CompletedSharedTasks e{}; CompletedSharedTasks e{};
e.id = strtoll(row[0], nullptr, 10); e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.task_id = static_cast<int32_t>(atoi(row[1])); e.task_id = static_cast<int32_t>(atoi(row[1]));
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10); e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -274,7 +275,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTasks e{}; CompletedSharedTasks e{};
e.id = strtoll(row[0], nullptr, 10); e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.task_id = static_cast<int32_t>(atoi(row[1])); e.task_id = static_cast<int32_t>(atoi(row[1]));
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10); e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -304,7 +305,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedSharedTasks e{}; CompletedSharedTasks e{};
e.id = strtoll(row[0], nullptr, 10); e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
e.task_id = static_cast<int32_t>(atoi(row[1])); e.task_id = static_cast<int32_t>(atoi(row[1]));
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10); e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CompletedSharedTasks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.task_id));
v.push_back("FROM_UNIXTIME(" + (e.accepted_time > 0 ? std::to_string(e.accepted_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.completion_time > 0 ? std::to_string(e.completion_time) : "null") + ")");
v.push_back(std::to_string(e.is_locked));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CompletedSharedTasks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.task_id));
v.push_back("FROM_UNIXTIME(" + (e.accepted_time > 0 ? std::to_string(e.accepted_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.completion_time > 0 ? std::to_string(e.completion_time) : "null") + ")");
v.push_back(std::to_string(e.is_locked));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_COMPLETED_SHARED_TASKS_REPOSITORY_H #endif //EQEMU_BASE_COMPLETED_SHARED_TASKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_COMPLETED_TASKS_REPOSITORY_H #ifndef EQEMU_BASE_COMPLETED_TASKS_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
completed_tasks_id completed_tasks_id
) )
); );
@ -126,9 +127,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
CompletedTasks e{}; CompletedTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.activityid = static_cast<int32_t>(atoi(row[3])); e.activityid = static_cast<int32_t>(atoi(row[3]));
return e; return e;
@ -258,9 +259,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedTasks e{}; CompletedTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.activityid = static_cast<int32_t>(atoi(row[3])); e.activityid = static_cast<int32_t>(atoi(row[3]));
all_entries.push_back(e); all_entries.push_back(e);
@ -286,9 +287,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
CompletedTasks e{}; CompletedTasks e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.activityid = static_cast<int32_t>(atoi(row[3])); e.activityid = static_cast<int32_t>(atoi(row[3]));
all_entries.push_back(e); all_entries.push_back(e);
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const CompletedTasks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.completedtime));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.activityid));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<CompletedTasks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.completedtime));
v.push_back(std::to_string(e.taskid));
v.push_back(std::to_string(e.activityid));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_COMPLETED_TASKS_REPOSITORY_H #endif //EQEMU_BASE_COMPLETED_TASKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_CONTENT_FLAGS_REPOSITORY_H #ifndef EQEMU_BASE_CONTENT_FLAGS_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
content_flags_id content_flags_id
) )
); );
@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const ContentFlags &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.flag_name) + "'");
v.push_back(std::to_string(e.enabled));
v.push_back("'" + Strings::Escape(e.notes) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<ContentFlags> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.flag_name) + "'");
v.push_back(std::to_string(e.enabled));
v.push_back("'" + Strings::Escape(e.notes) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_CONTENT_FLAGS_REPOSITORY_H #endif //EQEMU_BASE_CONTENT_FLAGS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H #ifndef EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
damageshieldtypes_id damageshieldtypes_id
) )
); );
@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
Damageshieldtypes e{}; Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
return e; return e;
} }
@ -242,8 +243,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Damageshieldtypes e{}; Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -268,8 +269,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Damageshieldtypes e{}; Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Damageshieldtypes &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Damageshieldtypes> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H #endif //EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H #ifndef EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H
@ -16,7 +16,6 @@
#include "../../strings.h" #include "../../strings.h"
#include <ctime> #include <ctime>
#include <cereal/cereal.hpp> #include <cereal/cereal.hpp>
class BaseDataBucketsRepository { class BaseDataBucketsRepository {
public: public:
struct DataBuckets { struct DataBuckets {
@ -155,13 +154,13 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
DataBuckets e{}; DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10); e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : ""; e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : ""; e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = strtoll(row[4], nullptr, 10); e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = strtoll(row[5], nullptr, 10); e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = strtoll(row[6], nullptr, 10); e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
return e; return e;
} }
@ -298,13 +297,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DataBuckets e{}; DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10); e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : ""; e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : ""; e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = strtoll(row[4], nullptr, 10); e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = strtoll(row[5], nullptr, 10); e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = strtoll(row[6], nullptr, 10); e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -329,13 +328,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DataBuckets e{}; DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10); e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : ""; e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : ""; e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10)); e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = strtoll(row[4], nullptr, 10); e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = strtoll(row[5], nullptr, 10); e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = strtoll(row[6], nullptr, 10); e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -394,6 +393,74 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DataBuckets &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.key_) + "'");
v.push_back("'" + Strings::Escape(e.value) + "'");
v.push_back(std::to_string(e.expires));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.bot_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DataBuckets> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.key_) + "'");
v.push_back("'" + Strings::Escape(e.value) + "'");
v.push_back(std::to_string(e.expires));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.bot_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H #endif //EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DB_STR_REPOSITORY_H #ifndef EQEMU_BASE_DB_STR_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
db_str_id db_str_id
) )
); );
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DbStr &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.value) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DbStr> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.value) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DB_STR_REPOSITORY_H #endif //EQEMU_BASE_DB_STR_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H #ifndef EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H
@ -120,8 +120,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
discord_webhooks_id discord_webhooks_id
) )
); );
@ -357,6 +358,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DiscordWebhooks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.webhook_name) + "'");
v.push_back("'" + Strings::Escape(e.webhook_url) + "'");
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.deleted_at > 0 ? std::to_string(e.deleted_at) : "null") + ")");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DiscordWebhooks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.webhook_name) + "'");
v.push_back("'" + Strings::Escape(e.webhook_url) + "'");
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.deleted_at > 0 ? std::to_string(e.deleted_at) : "null") + ")");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H #endif //EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H #ifndef EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
discovered_items_id discovered_items_id
) )
); );
@ -126,9 +127,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
DiscoveredItems e{}; DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : ""; e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = static_cast<int32_t>(atoi(row[3])); e.account_status = static_cast<int32_t>(atoi(row[3]));
return e; return e;
@ -258,9 +259,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DiscoveredItems e{}; DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : ""; e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = static_cast<int32_t>(atoi(row[3])); e.account_status = static_cast<int32_t>(atoi(row[3]));
all_entries.push_back(e); all_entries.push_back(e);
@ -286,9 +287,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DiscoveredItems e{}; DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : ""; e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = static_cast<int32_t>(atoi(row[3])); e.account_status = static_cast<int32_t>(atoi(row[3]));
all_entries.push_back(e); all_entries.push_back(e);
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DiscoveredItems &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.item_id));
v.push_back("'" + Strings::Escape(e.char_name) + "'");
v.push_back(std::to_string(e.discovered_date));
v.push_back(std::to_string(e.account_status));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DiscoveredItems> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.item_id));
v.push_back("'" + Strings::Escape(e.char_name) + "'");
v.push_back(std::to_string(e.discovered_date));
v.push_back(std::to_string(e.account_status));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H #endif //EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DOORS_REPOSITORY_H #ifndef EQEMU_BASE_DOORS_REPOSITORY_H
@ -244,8 +244,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
doors_id doors_id
) )
); );
@ -259,31 +260,31 @@ public:
e.zone = row[2] ? row[2] : ""; e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3])); e.version = static_cast<int16_t>(atoi(row[3]));
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr); e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = strtof(row[6], nullptr); e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = strtof(row[7], nullptr); e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = static_cast<int16_t>(atoi(row[9])); e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10])); e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11])); e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12])); e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10)); e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = static_cast<int16_t>(atoi(row[14])); e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15])); e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16])); e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17])); e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18])); e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : ""; e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = strtof(row[21], nullptr); e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = strtof(row[22], nullptr); e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = strtof(row[23], nullptr); e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = strtof(row[24], nullptr); e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = static_cast<int32_t>(atoi(row[25])); e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26])); e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10)); e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = strtof(row[28], nullptr); e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = static_cast<int16_t>(atoi(row[30])); e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31])); e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32])); e.min_expansion = static_cast<int8_t>(atoi(row[32]));
@ -518,31 +519,31 @@ public:
e.zone = row[2] ? row[2] : ""; e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3])); e.version = static_cast<int16_t>(atoi(row[3]));
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr); e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = strtof(row[6], nullptr); e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = strtof(row[7], nullptr); e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = static_cast<int16_t>(atoi(row[9])); e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10])); e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11])); e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12])); e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10)); e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = static_cast<int16_t>(atoi(row[14])); e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15])); e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16])); e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17])); e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18])); e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : ""; e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = strtof(row[21], nullptr); e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = strtof(row[22], nullptr); e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = strtof(row[23], nullptr); e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = strtof(row[24], nullptr); e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = static_cast<int32_t>(atoi(row[25])); e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26])); e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10)); e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = strtof(row[28], nullptr); e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = static_cast<int16_t>(atoi(row[30])); e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31])); e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32])); e.min_expansion = static_cast<int8_t>(atoi(row[32]));
@ -578,31 +579,31 @@ public:
e.zone = row[2] ? row[2] : ""; e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3])); e.version = static_cast<int16_t>(atoi(row[3]));
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr); e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = strtof(row[6], nullptr); e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = strtof(row[7], nullptr); e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = static_cast<int16_t>(atoi(row[9])); e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10])); e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11])); e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12])); e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10)); e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = static_cast<int16_t>(atoi(row[14])); e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15])); e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16])); e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17])); e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18])); e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : ""; e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10)); e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = strtof(row[21], nullptr); e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = strtof(row[22], nullptr); e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = strtof(row[23], nullptr); e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = strtof(row[24], nullptr); e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = static_cast<int32_t>(atoi(row[25])); e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26])); e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10)); e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = strtof(row[28], nullptr); e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10)); e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = static_cast<int16_t>(atoi(row[30])); e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31])); e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32])); e.min_expansion = static_cast<int8_t>(atoi(row[32]));
@ -667,6 +668,132 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Doors &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.doorid));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.opentype));
v.push_back(std::to_string(e.guild));
v.push_back(std::to_string(e.lockpick));
v.push_back(std::to_string(e.keyitem));
v.push_back(std::to_string(e.nokeyring));
v.push_back(std::to_string(e.triggerdoor));
v.push_back(std::to_string(e.triggertype));
v.push_back(std::to_string(e.disable_timer));
v.push_back(std::to_string(e.doorisopen));
v.push_back(std::to_string(e.door_param));
v.push_back("'" + Strings::Escape(e.dest_zone) + "'");
v.push_back(std::to_string(e.dest_instance));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_heading));
v.push_back(std::to_string(e.invert_state));
v.push_back(std::to_string(e.incline));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.buffer));
v.push_back(std::to_string(e.client_version_mask));
v.push_back(std::to_string(e.is_ldon_door));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Doors> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.doorid));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.opentype));
v.push_back(std::to_string(e.guild));
v.push_back(std::to_string(e.lockpick));
v.push_back(std::to_string(e.keyitem));
v.push_back(std::to_string(e.nokeyring));
v.push_back(std::to_string(e.triggerdoor));
v.push_back(std::to_string(e.triggertype));
v.push_back(std::to_string(e.disable_timer));
v.push_back(std::to_string(e.doorisopen));
v.push_back(std::to_string(e.door_param));
v.push_back("'" + Strings::Escape(e.dest_zone) + "'");
v.push_back(std::to_string(e.dest_instance));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_heading));
v.push_back(std::to_string(e.invert_state));
v.push_back(std::to_string(e.incline));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.buffer));
v.push_back(std::to_string(e.client_version_mask));
v.push_back(std::to_string(e.is_ldon_door));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DOORS_REPOSITORY_H #endif //EQEMU_BASE_DOORS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H #ifndef EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
dynamic_zone_members_id dynamic_zone_members_id
) )
); );
@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
DynamicZoneMembers e{}; DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
return e; return e;
} }
@ -249,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneMembers e{}; DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -276,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneMembers e{}; DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10)); e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -337,6 +338,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZoneMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.character_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZoneMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.character_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H #endif //EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H #ifndef EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H
@ -188,8 +188,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
dynamic_zone_templates_id dynamic_zone_templates_id
) )
); );
@ -198,7 +199,7 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
DynamicZoneTemplates e{}; DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2])); e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.name = row[3] ? row[3] : ""; e.name = row[3] ? row[3] : "";
@ -207,19 +208,19 @@ public:
e.duration_seconds = static_cast<int32_t>(atoi(row[6])); e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7])); e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8])); e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr); e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = strtof(row[10], nullptr); e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = strtof(row[11], nullptr); e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = static_cast<int32_t>(atoi(row[12])); e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr); e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = strtof(row[14], nullptr); e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = strtof(row[15], nullptr); e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = strtof(row[16], nullptr); e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = static_cast<int8_t>(atoi(row[17])); e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = strtof(row[21], nullptr); e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
return e; return e;
} }
@ -401,7 +402,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneTemplates e{}; DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2])); e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.name = row[3] ? row[3] : ""; e.name = row[3] ? row[3] : "";
@ -410,19 +411,19 @@ public:
e.duration_seconds = static_cast<int32_t>(atoi(row[6])); e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7])); e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8])); e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr); e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = strtof(row[10], nullptr); e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = strtof(row[11], nullptr); e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = static_cast<int32_t>(atoi(row[12])); e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr); e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = strtof(row[14], nullptr); e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = strtof(row[15], nullptr); e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = strtof(row[16], nullptr); e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = static_cast<int8_t>(atoi(row[17])); e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = strtof(row[21], nullptr); e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -447,7 +448,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneTemplates e{}; DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2])); e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.name = row[3] ? row[3] : ""; e.name = row[3] ? row[3] : "";
@ -456,19 +457,19 @@ public:
e.duration_seconds = static_cast<int32_t>(atoi(row[6])); e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7])); e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8])); e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr); e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = strtof(row[10], nullptr); e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = strtof(row[11], nullptr); e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = static_cast<int32_t>(atoi(row[12])); e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr); e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = strtof(row[14], nullptr); e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = strtof(row[15], nullptr); e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = strtof(row[16], nullptr); e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = static_cast<int8_t>(atoi(row[17])); e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = strtof(row[21], nullptr); e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -527,6 +528,104 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZoneTemplates &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.zone_version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.duration_seconds));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.return_zone_id));
v.push_back(std::to_string(e.return_x));
v.push_back(std::to_string(e.return_y));
v.push_back(std::to_string(e.return_z));
v.push_back(std::to_string(e.return_h));
v.push_back(std::to_string(e.override_zone_in));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_h));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZoneTemplates> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.zone_version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.duration_seconds));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.return_zone_id));
v.push_back(std::to_string(e.return_x));
v.push_back(std::to_string(e.return_y));
v.push_back(std::to_string(e.return_z));
v.push_back(std::to_string(e.return_h));
v.push_back(std::to_string(e.override_zone_in));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_h));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H #endif //EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H #ifndef EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H
@ -192,8 +192,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
dynamic_zones_id dynamic_zones_id
) )
); );
@ -202,29 +203,29 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
DynamicZones e{}; DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[1])); e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : ""; e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = static_cast<int32_t>(atoi(row[8])); e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = strtof(row[10], nullptr); e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = strtof(row[11], nullptr); e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = strtof(row[12], nullptr); e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = strtof(row[14], nullptr); e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = strtof(row[15], nullptr); e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = strtof(row[16], nullptr); e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = strtof(row[17], nullptr); e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = strtof(row[21], nullptr); e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10)); e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
return e; return e;
} }
@ -409,29 +410,29 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZones e{}; DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[1])); e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : ""; e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = static_cast<int32_t>(atoi(row[8])); e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = strtof(row[10], nullptr); e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = strtof(row[11], nullptr); e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = strtof(row[12], nullptr); e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = strtof(row[14], nullptr); e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = strtof(row[15], nullptr); e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = strtof(row[16], nullptr); e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = strtof(row[17], nullptr); e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = strtof(row[21], nullptr); e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10)); e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -456,29 +457,29 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZones e{}; DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = static_cast<int32_t>(atoi(row[1])); e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : ""; e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : ""; e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10)); e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10)); e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = static_cast<int32_t>(atoi(row[8])); e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10)); e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = strtof(row[10], nullptr); e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = strtof(row[11], nullptr); e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = strtof(row[12], nullptr); e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = strtof(row[14], nullptr); e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = strtof(row[15], nullptr); e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = strtof(row[16], nullptr); e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = strtof(row[17], nullptr); e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = strtof(row[18], nullptr); e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = strtof(row[19], nullptr); e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = strtof(row[20], nullptr); e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = strtof(row[21], nullptr); e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10)); e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -537,6 +538,106 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZones &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.uuid) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader_id));
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.safe_return_zone_id));
v.push_back(std::to_string(e.safe_return_x));
v.push_back(std::to_string(e.safe_return_y));
v.push_back(std::to_string(e.safe_return_z));
v.push_back(std::to_string(e.safe_return_heading));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_heading));
v.push_back(std::to_string(e.has_zone_in));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZones> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.uuid) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader_id));
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.safe_return_zone_id));
v.push_back(std::to_string(e.safe_return_x));
v.push_back(std::to_string(e.safe_return_y));
v.push_back(std::to_string(e.safe_return_z));
v.push_back(std::to_string(e.safe_return_heading));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_heading));
v.push_back(std::to_string(e.has_zone_in));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H #endif //EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H #ifndef EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
expedition_lockouts_id expedition_lockouts_id
) )
); );
@ -134,11 +135,11 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
ExpeditionLockouts e{}; ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : ""; e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : ""; e.from_expedition_uuid = row[5] ? row[5] : "";
return e; return e;
@ -273,11 +274,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
ExpeditionLockouts e{}; ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : ""; e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : ""; e.from_expedition_uuid = row[5] ? row[5] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -303,11 +304,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
ExpeditionLockouts e{}; ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : ""; e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10); e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : ""; e.from_expedition_uuid = row[5] ? row[5] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -367,6 +368,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const ExpeditionLockouts &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.expedition_id));
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<ExpeditionLockouts> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.expedition_id));
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H #endif //EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_EXPEDITIONS_REPOSITORY_H #ifndef EQEMU_BASE_EXPEDITIONS_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
expeditions_id expeditions_id
) )
); );
@ -126,10 +127,10 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
Expeditions e{}; Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
return e; return e;
} }
@ -257,10 +258,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Expeditions e{}; Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -285,10 +286,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Expeditions e{}; Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Expeditions &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.add_replay_on_join));
v.push_back(std::to_string(e.is_locked));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Expeditions> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.add_replay_on_join));
v.push_back(std::to_string(e.is_locked));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_EXPEDITIONS_REPOSITORY_H #endif //EQEMU_BASE_EXPEDITIONS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H #ifndef EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H
@ -184,8 +184,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
faction_association_id faction_association_id
) )
); );
@ -196,25 +197,25 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1])); e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr); e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = static_cast<int32_t>(atoi(row[3])); e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr); e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = static_cast<int32_t>(atoi(row[5])); e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr); e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = static_cast<int32_t>(atoi(row[7])); e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr); e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = static_cast<int32_t>(atoi(row[9])); e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr); e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = static_cast<int32_t>(atoi(row[11])); e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr); e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = static_cast<int32_t>(atoi(row[13])); e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr); e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = static_cast<int32_t>(atoi(row[15])); e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr); e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = static_cast<int32_t>(atoi(row[17])); e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr); e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = static_cast<int32_t>(atoi(row[19])); e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr); e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
return e; return e;
} }
@ -396,25 +397,25 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1])); e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr); e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = static_cast<int32_t>(atoi(row[3])); e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr); e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = static_cast<int32_t>(atoi(row[5])); e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr); e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = static_cast<int32_t>(atoi(row[7])); e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr); e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = static_cast<int32_t>(atoi(row[9])); e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr); e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = static_cast<int32_t>(atoi(row[11])); e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr); e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = static_cast<int32_t>(atoi(row[13])); e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr); e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = static_cast<int32_t>(atoi(row[15])); e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr); e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = static_cast<int32_t>(atoi(row[17])); e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr); e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = static_cast<int32_t>(atoi(row[19])); e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr); e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -441,25 +442,25 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1])); e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr); e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = static_cast<int32_t>(atoi(row[3])); e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr); e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = static_cast<int32_t>(atoi(row[5])); e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr); e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = static_cast<int32_t>(atoi(row[7])); e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr); e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = static_cast<int32_t>(atoi(row[9])); e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr); e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = static_cast<int32_t>(atoi(row[11])); e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr); e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = static_cast<int32_t>(atoi(row[13])); e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr); e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = static_cast<int32_t>(atoi(row[15])); e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr); e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = static_cast<int32_t>(atoi(row[17])); e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr); e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = static_cast<int32_t>(atoi(row[19])); e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr); e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -518,6 +519,102 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionAssociation &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.id_1));
v.push_back(std::to_string(e.mod_1));
v.push_back(std::to_string(e.id_2));
v.push_back(std::to_string(e.mod_2));
v.push_back(std::to_string(e.id_3));
v.push_back(std::to_string(e.mod_3));
v.push_back(std::to_string(e.id_4));
v.push_back(std::to_string(e.mod_4));
v.push_back(std::to_string(e.id_5));
v.push_back(std::to_string(e.mod_5));
v.push_back(std::to_string(e.id_6));
v.push_back(std::to_string(e.mod_6));
v.push_back(std::to_string(e.id_7));
v.push_back(std::to_string(e.mod_7));
v.push_back(std::to_string(e.id_8));
v.push_back(std::to_string(e.mod_8));
v.push_back(std::to_string(e.id_9));
v.push_back(std::to_string(e.mod_9));
v.push_back(std::to_string(e.id_10));
v.push_back(std::to_string(e.mod_10));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionAssociation> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.id_1));
v.push_back(std::to_string(e.mod_1));
v.push_back(std::to_string(e.id_2));
v.push_back(std::to_string(e.mod_2));
v.push_back(std::to_string(e.id_3));
v.push_back(std::to_string(e.mod_3));
v.push_back(std::to_string(e.id_4));
v.push_back(std::to_string(e.mod_4));
v.push_back(std::to_string(e.id_5));
v.push_back(std::to_string(e.mod_5));
v.push_back(std::to_string(e.id_6));
v.push_back(std::to_string(e.mod_6));
v.push_back(std::to_string(e.id_7));
v.push_back(std::to_string(e.mod_7));
v.push_back(std::to_string(e.id_8));
v.push_back(std::to_string(e.mod_8));
v.push_back(std::to_string(e.id_9));
v.push_back(std::to_string(e.mod_9));
v.push_back(std::to_string(e.id_10));
v.push_back(std::to_string(e.mod_10));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H #endif //EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H #ifndef EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
faction_base_data_id faction_base_data_id
) )
); );
@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionBaseData &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.client_faction_id));
v.push_back(std::to_string(e.min));
v.push_back(std::to_string(e.max));
v.push_back(std::to_string(e.unk_hero1));
v.push_back(std::to_string(e.unk_hero2));
v.push_back(std::to_string(e.unk_hero3));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionBaseData> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.client_faction_id));
v.push_back(std::to_string(e.min));
v.push_back(std::to_string(e.max));
v.push_back(std::to_string(e.unk_hero1));
v.push_back(std::to_string(e.unk_hero2));
v.push_back(std::to_string(e.unk_hero3));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H #endif //EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H #ifndef EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
faction_list_mod_id faction_list_mod_id
) )
); );
@ -126,8 +127,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
FactionListMod e{}; FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = static_cast<int16_t>(atoi(row[2])); e.mod = static_cast<int16_t>(atoi(row[2]));
e.mod_name = row[3] ? row[3] : ""; e.mod_name = row[3] ? row[3] : "";
@ -257,8 +258,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
FactionListMod e{}; FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = static_cast<int16_t>(atoi(row[2])); e.mod = static_cast<int16_t>(atoi(row[2]));
e.mod_name = row[3] ? row[3] : ""; e.mod_name = row[3] ? row[3] : "";
@ -285,8 +286,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
FactionListMod e{}; FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = static_cast<int16_t>(atoi(row[2])); e.mod = static_cast<int16_t>(atoi(row[2]));
e.mod_name = row[3] ? row[3] : ""; e.mod_name = row[3] ? row[3] : "";
@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionListMod &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.mod));
v.push_back("'" + Strings::Escape(e.mod_name) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionListMod> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.mod));
v.push_back("'" + Strings::Escape(e.mod_name) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H #endif //EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FACTION_LIST_REPOSITORY_H #ifndef EQEMU_BASE_FACTION_LIST_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
faction_list_id faction_list_id
) )
); );
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionList &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.base));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionList> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.base));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FACTION_LIST_REPOSITORY_H #endif //EQEMU_BASE_FACTION_LIST_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FACTION_VALUES_REPOSITORY_H #ifndef EQEMU_BASE_FACTION_VALUES_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
faction_values_id faction_values_id
) )
); );
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionValues &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.current_value));
v.push_back(std::to_string(e.temp));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionValues> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.current_value));
v.push_back(std::to_string(e.temp));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FACTION_VALUES_REPOSITORY_H #endif //EQEMU_BASE_FACTION_VALUES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FISHING_REPOSITORY_H #ifndef EQEMU_BASE_FISHING_REPOSITORY_H
@ -144,8 +144,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
fishing_id fishing_id
) )
); );
@ -417,6 +418,82 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Fishing &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.skill_level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.npc_chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Fishing> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.skill_level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.npc_chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FISHING_REPOSITORY_H #endif //EQEMU_BASE_FISHING_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FORAGE_REPOSITORY_H #ifndef EQEMU_BASE_FORAGE_REPOSITORY_H
@ -136,8 +136,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
forage_id forage_id
) )
); );
@ -397,6 +398,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Forage &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Forage> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FORAGE_REPOSITORY_H #endif //EQEMU_BASE_FORAGE_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_FRIENDS_REPOSITORY_H #ifndef EQEMU_BASE_FRIENDS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
friends_id friends_id
) )
); );
@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
Friends e{}; Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
return e; return e;
@ -250,8 +251,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Friends e{}; Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -277,8 +278,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
Friends e{}; Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : ""; e.name = row[2] ? row[2] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Friends &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.name) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Friends> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.name) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_FRIENDS_REPOSITORY_H #endif //EQEMU_BASE_FRIENDS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H #ifndef EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H
@ -168,8 +168,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
global_loot_id global_loot_id
) )
); );
@ -477,6 +478,94 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GlobalLoot &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.loottable_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.rare));
v.push_back(std::to_string(e.raid));
v.push_back("'" + Strings::Escape(e.race) + "'");
v.push_back("'" + Strings::Escape(e.class_) + "'");
v.push_back("'" + Strings::Escape(e.bodytype) + "'");
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.hot_zone));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GlobalLoot> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.loottable_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.rare));
v.push_back(std::to_string(e.raid));
v.push_back("'" + Strings::Escape(e.race) + "'");
v.push_back("'" + Strings::Escape(e.class_) + "'");
v.push_back("'" + Strings::Escape(e.bodytype) + "'");
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.hot_zone));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H #endif //EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GM_IPS_REPOSITORY_H #ifndef EQEMU_BASE_GM_IPS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
gm_ips_id gm_ips_id
) )
); );
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GmIps &e
)
{
std::vector<std::string> v;
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.account_id));
v.push_back("'" + Strings::Escape(e.ip_address) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GmIps> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.account_id));
v.push_back("'" + Strings::Escape(e.ip_address) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GM_IPS_REPOSITORY_H #endif //EQEMU_BASE_GM_IPS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GRAVEYARD_REPOSITORY_H #ifndef EQEMU_BASE_GRAVEYARD_REPOSITORY_H
@ -124,8 +124,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
graveyard_id graveyard_id
) )
); );
@ -136,10 +137,10 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.x = strtof(row[2], nullptr); e.x = row[2] ? strtof(row[2], nullptr) : 0;
e.y = strtof(row[3], nullptr); e.y = row[3] ? strtof(row[3], nullptr) : 0;
e.z = strtof(row[4], nullptr); e.z = row[4] ? strtof(row[4], nullptr) : 0;
e.heading = strtof(row[5], nullptr); e.heading = row[5] ? strtof(row[5], nullptr) : 0;
return e; return e;
} }
@ -275,10 +276,10 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.x = strtof(row[2], nullptr); e.x = row[2] ? strtof(row[2], nullptr) : 0;
e.y = strtof(row[3], nullptr); e.y = row[3] ? strtof(row[3], nullptr) : 0;
e.z = strtof(row[4], nullptr); e.z = row[4] ? strtof(row[4], nullptr) : 0;
e.heading = strtof(row[5], nullptr); e.heading = row[5] ? strtof(row[5], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -305,10 +306,10 @@ public:
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone_id = static_cast<int32_t>(atoi(row[1])); e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.x = strtof(row[2], nullptr); e.x = row[2] ? strtof(row[2], nullptr) : 0;
e.y = strtof(row[3], nullptr); e.y = row[3] ? strtof(row[3], nullptr) : 0;
e.z = strtof(row[4], nullptr); e.z = row[4] ? strtof(row[4], nullptr) : 0;
e.heading = strtof(row[5], nullptr); e.heading = row[5] ? strtof(row[5], nullptr) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -367,6 +368,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Graveyard &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Graveyard> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GRAVEYARD_REPOSITORY_H #endif //EQEMU_BASE_GRAVEYARD_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GRID_ENTRIES_REPOSITORY_H #ifndef EQEMU_BASE_GRID_ENTRIES_REPOSITORY_H
@ -136,8 +136,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
grid_entries_id grid_entries_id
) )
); );
@ -149,10 +150,10 @@ public:
e.gridid = static_cast<int32_t>(atoi(row[0])); e.gridid = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1])); e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.number = static_cast<int32_t>(atoi(row[2])); e.number = static_cast<int32_t>(atoi(row[2]));
e.x = strtof(row[3], nullptr); e.x = row[3] ? strtof(row[3], nullptr) : 0;
e.y = strtof(row[4], nullptr); e.y = row[4] ? strtof(row[4], nullptr) : 0;
e.z = strtof(row[5], nullptr); e.z = row[5] ? strtof(row[5], nullptr) : 0;
e.heading = strtof(row[6], nullptr); e.heading = row[6] ? strtof(row[6], nullptr) : 0;
e.pause = static_cast<int32_t>(atoi(row[7])); e.pause = static_cast<int32_t>(atoi(row[7]));
e.centerpoint = static_cast<int8_t>(atoi(row[8])); e.centerpoint = static_cast<int8_t>(atoi(row[8]));
@ -301,10 +302,10 @@ public:
e.gridid = static_cast<int32_t>(atoi(row[0])); e.gridid = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1])); e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.number = static_cast<int32_t>(atoi(row[2])); e.number = static_cast<int32_t>(atoi(row[2]));
e.x = strtof(row[3], nullptr); e.x = row[3] ? strtof(row[3], nullptr) : 0;
e.y = strtof(row[4], nullptr); e.y = row[4] ? strtof(row[4], nullptr) : 0;
e.z = strtof(row[5], nullptr); e.z = row[5] ? strtof(row[5], nullptr) : 0;
e.heading = strtof(row[6], nullptr); e.heading = row[6] ? strtof(row[6], nullptr) : 0;
e.pause = static_cast<int32_t>(atoi(row[7])); e.pause = static_cast<int32_t>(atoi(row[7]));
e.centerpoint = static_cast<int8_t>(atoi(row[8])); e.centerpoint = static_cast<int8_t>(atoi(row[8]));
@ -334,10 +335,10 @@ public:
e.gridid = static_cast<int32_t>(atoi(row[0])); e.gridid = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1])); e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.number = static_cast<int32_t>(atoi(row[2])); e.number = static_cast<int32_t>(atoi(row[2]));
e.x = strtof(row[3], nullptr); e.x = row[3] ? strtof(row[3], nullptr) : 0;
e.y = strtof(row[4], nullptr); e.y = row[4] ? strtof(row[4], nullptr) : 0;
e.z = strtof(row[5], nullptr); e.z = row[5] ? strtof(row[5], nullptr) : 0;
e.heading = strtof(row[6], nullptr); e.heading = row[6] ? strtof(row[6], nullptr) : 0;
e.pause = static_cast<int32_t>(atoi(row[7])); e.pause = static_cast<int32_t>(atoi(row[7]));
e.centerpoint = static_cast<int8_t>(atoi(row[8])); e.centerpoint = static_cast<int8_t>(atoi(row[8]));
@ -398,6 +399,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GridEntries &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.gridid));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.number));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.pause));
v.push_back(std::to_string(e.centerpoint));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GridEntries> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.gridid));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.number));
v.push_back(std::to_string(e.x));
v.push_back(std::to_string(e.y));
v.push_back(std::to_string(e.z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.pause));
v.push_back(std::to_string(e.centerpoint));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GRID_ENTRIES_REPOSITORY_H #endif //EQEMU_BASE_GRID_ENTRIES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GRID_REPOSITORY_H #ifndef EQEMU_BASE_GRID_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
grid_id grid_id
) )
); );
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Grid &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.type2));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Grid> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.type2));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GRID_REPOSITORY_H #endif //EQEMU_BASE_GRID_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GROUND_SPAWNS_REPOSITORY_H #ifndef EQEMU_BASE_GROUND_SPAWNS_REPOSITORY_H
@ -172,8 +172,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
ground_spawns_id ground_spawns_id
) )
); );
@ -182,20 +183,20 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
GroundSpawns e{}; GroundSpawns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zoneid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zoneid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<int16_t>(atoi(row[2])); e.version = static_cast<int16_t>(atoi(row[2]));
e.max_x = strtof(row[3], nullptr); e.max_x = row[3] ? strtof(row[3], nullptr) : 2000;
e.max_y = strtof(row[4], nullptr); e.max_y = row[4] ? strtof(row[4], nullptr) : 2000;
e.max_z = strtof(row[5], nullptr); e.max_z = row[5] ? strtof(row[5], nullptr) : 10000;
e.min_x = strtof(row[6], nullptr); e.min_x = row[6] ? strtof(row[6], nullptr) : -2000;
e.min_y = strtof(row[7], nullptr); e.min_y = row[7] ? strtof(row[7], nullptr) : -2000;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.name = row[9] ? row[9] : ""; e.name = row[9] ? row[9] : "";
e.item = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.item = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.max_allowed = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.max_allowed = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 1;
e.comment = row[12] ? row[12] : ""; e.comment = row[12] ? row[12] : "";
e.respawn_timer = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.respawn_timer = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 300;
e.min_expansion = static_cast<int8_t>(atoi(row[14])); e.min_expansion = static_cast<int8_t>(atoi(row[14]));
e.max_expansion = static_cast<int8_t>(atoi(row[15])); e.max_expansion = static_cast<int8_t>(atoi(row[15]));
e.content_flags = row[16] ? row[16] : ""; e.content_flags = row[16] ? row[16] : "";
@ -369,20 +370,20 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GroundSpawns e{}; GroundSpawns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zoneid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zoneid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<int16_t>(atoi(row[2])); e.version = static_cast<int16_t>(atoi(row[2]));
e.max_x = strtof(row[3], nullptr); e.max_x = row[3] ? strtof(row[3], nullptr) : 2000;
e.max_y = strtof(row[4], nullptr); e.max_y = row[4] ? strtof(row[4], nullptr) : 2000;
e.max_z = strtof(row[5], nullptr); e.max_z = row[5] ? strtof(row[5], nullptr) : 10000;
e.min_x = strtof(row[6], nullptr); e.min_x = row[6] ? strtof(row[6], nullptr) : -2000;
e.min_y = strtof(row[7], nullptr); e.min_y = row[7] ? strtof(row[7], nullptr) : -2000;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.name = row[9] ? row[9] : ""; e.name = row[9] ? row[9] : "";
e.item = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.item = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.max_allowed = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.max_allowed = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 1;
e.comment = row[12] ? row[12] : ""; e.comment = row[12] ? row[12] : "";
e.respawn_timer = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.respawn_timer = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 300;
e.min_expansion = static_cast<int8_t>(atoi(row[14])); e.min_expansion = static_cast<int8_t>(atoi(row[14]));
e.max_expansion = static_cast<int8_t>(atoi(row[15])); e.max_expansion = static_cast<int8_t>(atoi(row[15]));
e.content_flags = row[16] ? row[16] : ""; e.content_flags = row[16] ? row[16] : "";
@ -411,20 +412,20 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GroundSpawns e{}; GroundSpawns e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zoneid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zoneid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<int16_t>(atoi(row[2])); e.version = static_cast<int16_t>(atoi(row[2]));
e.max_x = strtof(row[3], nullptr); e.max_x = row[3] ? strtof(row[3], nullptr) : 2000;
e.max_y = strtof(row[4], nullptr); e.max_y = row[4] ? strtof(row[4], nullptr) : 2000;
e.max_z = strtof(row[5], nullptr); e.max_z = row[5] ? strtof(row[5], nullptr) : 10000;
e.min_x = strtof(row[6], nullptr); e.min_x = row[6] ? strtof(row[6], nullptr) : -2000;
e.min_y = strtof(row[7], nullptr); e.min_y = row[7] ? strtof(row[7], nullptr) : -2000;
e.heading = strtof(row[8], nullptr); e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.name = row[9] ? row[9] : ""; e.name = row[9] ? row[9] : "";
e.item = static_cast<uint32_t>(strtoul(row[10], nullptr, 10)); e.item = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.max_allowed = static_cast<uint32_t>(strtoul(row[11], nullptr, 10)); e.max_allowed = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 1;
e.comment = row[12] ? row[12] : ""; e.comment = row[12] ? row[12] : "";
e.respawn_timer = static_cast<uint32_t>(strtoul(row[13], nullptr, 10)); e.respawn_timer = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 300;
e.min_expansion = static_cast<int8_t>(atoi(row[14])); e.min_expansion = static_cast<int8_t>(atoi(row[14]));
e.max_expansion = static_cast<int8_t>(atoi(row[15])); e.max_expansion = static_cast<int8_t>(atoi(row[15]));
e.content_flags = row[16] ? row[16] : ""; e.content_flags = row[16] ? row[16] : "";
@ -487,6 +488,96 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GroundSpawns &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.version));
v.push_back(std::to_string(e.max_x));
v.push_back(std::to_string(e.max_y));
v.push_back(std::to_string(e.max_z));
v.push_back(std::to_string(e.min_x));
v.push_back(std::to_string(e.min_y));
v.push_back(std::to_string(e.heading));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.item));
v.push_back(std::to_string(e.max_allowed));
v.push_back("'" + Strings::Escape(e.comment) + "'");
v.push_back(std::to_string(e.respawn_timer));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GroundSpawns> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.version));
v.push_back(std::to_string(e.max_x));
v.push_back(std::to_string(e.max_y));
v.push_back(std::to_string(e.max_z));
v.push_back(std::to_string(e.min_x));
v.push_back(std::to_string(e.min_y));
v.push_back(std::to_string(e.heading));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.item));
v.push_back(std::to_string(e.max_allowed));
v.push_back("'" + Strings::Escape(e.comment) + "'");
v.push_back(std::to_string(e.respawn_timer));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GROUND_SPAWNS_REPOSITORY_H #endif //EQEMU_BASE_GROUND_SPAWNS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GROUP_ID_REPOSITORY_H #ifndef EQEMU_BASE_GROUP_ID_REPOSITORY_H
@ -116,8 +116,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
group_id_id group_id_id
) )
); );
@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GroupId &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.groupid));
v.push_back(std::to_string(e.charid));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.ismerc));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GroupId> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.groupid));
v.push_back(std::to_string(e.charid));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.ismerc));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GROUP_ID_REPOSITORY_H #endif //EQEMU_BASE_GROUP_ID_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GROUP_LEADERS_REPOSITORY_H #ifndef EQEMU_BASE_GROUP_LEADERS_REPOSITORY_H
@ -136,8 +136,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
group_leaders_id group_leaders_id
) )
); );
@ -398,6 +399,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GroupLeaders &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.gid));
v.push_back("'" + Strings::Escape(e.leadername) + "'");
v.push_back("'" + Strings::Escape(e.marknpc) + "'");
v.push_back("'" + Strings::Escape(e.leadershipaa) + "'");
v.push_back("'" + Strings::Escape(e.maintank) + "'");
v.push_back("'" + Strings::Escape(e.assist) + "'");
v.push_back("'" + Strings::Escape(e.puller) + "'");
v.push_back("'" + Strings::Escape(e.mentoree) + "'");
v.push_back(std::to_string(e.mentor_percent));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GroupLeaders> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.gid));
v.push_back("'" + Strings::Escape(e.leadername) + "'");
v.push_back("'" + Strings::Escape(e.marknpc) + "'");
v.push_back("'" + Strings::Escape(e.leadershipaa) + "'");
v.push_back("'" + Strings::Escape(e.maintank) + "'");
v.push_back("'" + Strings::Escape(e.assist) + "'");
v.push_back("'" + Strings::Escape(e.puller) + "'");
v.push_back("'" + Strings::Escape(e.mentoree) + "'");
v.push_back(std::to_string(e.mentor_percent));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GROUP_LEADERS_REPOSITORY_H #endif //EQEMU_BASE_GROUP_LEADERS_REPOSITORY_H

View File

@ -0,0 +1,488 @@
/**
* DO NOT MODIFY THIS FILE
*
* This repository was automatically generated and is NOT to be modified directly.
* Any repository modifications are meant to be made to the repository extending the base.
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_GUILD_MEMBERS_REPOSITORY_H
#define EQEMU_BASE_GUILD_MEMBERS_REPOSITORY_H
#include "../../database.h"
#include "../../strings.h"
#include <ctime>
class BaseGuildMembersRepository {
public:
struct GuildMembers {
int32_t char_id;
uint32_t guild_id;
uint8_t rank;
uint8_t tribute_enable;
uint32_t total_tribute;
uint32_t last_tribute;
uint8_t banker;
std::string public_note;
uint8_t alt;
uint8_t online;
};
static std::string PrimaryKey()
{
return std::string("char_id");
}
static std::vector<std::string> Columns()
{
return {
"char_id",
"guild_id",
"rank",
"tribute_enable",
"total_tribute",
"last_tribute",
"banker",
"public_note",
"alt",
"online",
};
}
static std::vector<std::string> SelectColumns()
{
return {
"char_id",
"guild_id",
"rank",
"tribute_enable",
"total_tribute",
"last_tribute",
"banker",
"public_note",
"alt",
"online",
};
}
static std::string ColumnsRaw()
{
return std::string(Strings::Implode(", ", Columns()));
}
static std::string SelectColumnsRaw()
{
return std::string(Strings::Implode(", ", SelectColumns()));
}
static std::string TableName()
{
return std::string("guild_members");
}
static std::string BaseSelect()
{
return fmt::format(
"SELECT {} FROM {}",
SelectColumnsRaw(),
TableName()
);
}
static std::string BaseInsert()
{
return fmt::format(
"INSERT INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static GuildMembers NewEntity()
{
GuildMembers e{};
e.char_id = 0;
e.guild_id = 0;
e.rank = 0;
e.tribute_enable = 0;
e.total_tribute = 0;
e.last_tribute = 0;
e.banker = 0;
e.public_note = "";
e.alt = 0;
e.online = 0;
return e;
}
static GuildMembers GetGuildMembers(
const std::vector<GuildMembers> &guild_memberss,
int guild_members_id
)
{
for (auto &guild_members : guild_memberss) {
if (guild_members.char_id == guild_members_id) {
return guild_members;
}
}
return NewEntity();
}
static GuildMembers FindOne(
Database& db,
int guild_members_id
)
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
guild_members_id
)
);
auto row = results.begin();
if (results.RowCount() == 1) {
GuildMembers e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.guild_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute_enable = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.total_tribute = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.last_tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.banker = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.public_note = row[7] ? row[7] : "";
e.alt = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.online = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
return e;
}
return NewEntity();
}
static int DeleteOne(
Database& db,
int guild_members_id
)
{
auto results = db.QueryDatabase(
fmt::format(
"DELETE FROM {} WHERE {} = {}",
TableName(),
PrimaryKey(),
guild_members_id
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int UpdateOne(
Database& db,
const GuildMembers &e
)
{
std::vector<std::string> v;
auto columns = Columns();
v.push_back(columns[0] + " = " + std::to_string(e.char_id));
v.push_back(columns[1] + " = " + std::to_string(e.guild_id));
v.push_back(columns[2] + " = " + std::to_string(e.rank));
v.push_back(columns[3] + " = " + std::to_string(e.tribute_enable));
v.push_back(columns[4] + " = " + std::to_string(e.total_tribute));
v.push_back(columns[5] + " = " + std::to_string(e.last_tribute));
v.push_back(columns[6] + " = " + std::to_string(e.banker));
v.push_back(columns[7] + " = '" + Strings::Escape(e.public_note) + "'");
v.push_back(columns[8] + " = " + std::to_string(e.alt));
v.push_back(columns[9] + " = " + std::to_string(e.online));
auto results = db.QueryDatabase(
fmt::format(
"UPDATE {} SET {} WHERE {} = {}",
TableName(),
Strings::Implode(", ", v),
PrimaryKey(),
e.char_id
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static GuildMembers InsertOne(
Database& db,
GuildMembers e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back(std::to_string(e.tribute_enable));
v.push_back(std::to_string(e.total_tribute));
v.push_back(std::to_string(e.last_tribute));
v.push_back(std::to_string(e.banker));
v.push_back("'" + Strings::Escape(e.public_note) + "'");
v.push_back(std::to_string(e.alt));
v.push_back(std::to_string(e.online));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseInsert(),
Strings::Implode(",", v)
)
);
if (results.Success()) {
e.char_id = results.LastInsertedID();
return e;
}
e = NewEntity();
return e;
}
static int InsertMany(
Database& db,
const std::vector<GuildMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back(std::to_string(e.tribute_enable));
v.push_back(std::to_string(e.total_tribute));
v.push_back(std::to_string(e.last_tribute));
v.push_back(std::to_string(e.banker));
v.push_back("'" + Strings::Escape(e.public_note) + "'");
v.push_back(std::to_string(e.alt));
v.push_back(std::to_string(e.online));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseInsert(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static std::vector<GuildMembers> All(Database& db)
{
std::vector<GuildMembers> all_entries;
auto results = db.QueryDatabase(
fmt::format(
"{}",
BaseSelect()
)
);
all_entries.reserve(results.RowCount());
for (auto row = results.begin(); row != results.end(); ++row) {
GuildMembers e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.guild_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute_enable = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.total_tribute = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.last_tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.banker = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.public_note = row[7] ? row[7] : "";
e.alt = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.online = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
all_entries.push_back(e);
}
return all_entries;
}
static std::vector<GuildMembers> GetWhere(Database& db, const std::string &where_filter)
{
std::vector<GuildMembers> all_entries;
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE {}",
BaseSelect(),
where_filter
)
);
all_entries.reserve(results.RowCount());
for (auto row = results.begin(); row != results.end(); ++row) {
GuildMembers e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.guild_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.rank = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.tribute_enable = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.total_tribute = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.last_tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.banker = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.public_note = row[7] ? row[7] : "";
e.alt = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.online = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
all_entries.push_back(e);
}
return all_entries;
}
static int DeleteWhere(Database& db, const std::string &where_filter)
{
auto results = db.QueryDatabase(
fmt::format(
"DELETE FROM {} WHERE {}",
TableName(),
where_filter
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int Truncate(Database& db)
{
auto results = db.QueryDatabase(
fmt::format(
"TRUNCATE TABLE {}",
TableName()
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int64 GetMaxId(Database& db)
{
auto results = db.QueryDatabase(
fmt::format(
"SELECT COALESCE(MAX({}), 0) FROM {}",
PrimaryKey(),
TableName()
)
);
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static int64 Count(Database& db, const std::string &where_filter = "")
{
auto results = db.QueryDatabase(
fmt::format(
"SELECT COUNT(*) FROM {} {}",
TableName(),
(where_filter.empty() ? "" : "WHERE " + where_filter)
)
);
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GuildMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back(std::to_string(e.tribute_enable));
v.push_back(std::to_string(e.total_tribute));
v.push_back(std::to_string(e.last_tribute));
v.push_back(std::to_string(e.banker));
v.push_back("'" + Strings::Escape(e.public_note) + "'");
v.push_back(std::to_string(e.alt));
v.push_back(std::to_string(e.online));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GuildMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back(std::to_string(e.tribute_enable));
v.push_back(std::to_string(e.total_tribute));
v.push_back(std::to_string(e.last_tribute));
v.push_back(std::to_string(e.banker));
v.push_back("'" + Strings::Escape(e.public_note) + "'");
v.push_back(std::to_string(e.alt));
v.push_back(std::to_string(e.online));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_GUILD_MEMBERS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GUILD_RANKS_REPOSITORY_H #ifndef EQEMU_BASE_GUILD_RANKS_REPOSITORY_H
@ -22,14 +22,6 @@ public:
uint32_t guild_id; uint32_t guild_id;
uint8_t rank; uint8_t rank;
std::string title; std::string title;
uint8_t can_hear;
uint8_t can_speak;
uint8_t can_invite;
uint8_t can_remove;
uint8_t can_promote;
uint8_t can_demote;
uint8_t can_motd;
uint8_t can_warpeace;
}; };
static std::string PrimaryKey() static std::string PrimaryKey()
@ -43,14 +35,6 @@ public:
"guild_id", "guild_id",
"rank", "rank",
"title", "title",
"can_hear",
"can_speak",
"can_invite",
"can_remove",
"can_promote",
"can_demote",
"can_motd",
"can_warpeace",
}; };
} }
@ -60,14 +44,6 @@ public:
"guild_id", "guild_id",
"rank", "rank",
"title", "title",
"can_hear",
"can_speak",
"can_invite",
"can_remove",
"can_promote",
"can_demote",
"can_motd",
"can_warpeace",
}; };
} }
@ -111,14 +87,6 @@ public:
e.guild_id = 0; e.guild_id = 0;
e.rank = 0; e.rank = 0;
e.title = ""; e.title = "";
e.can_hear = 0;
e.can_speak = 0;
e.can_invite = 0;
e.can_remove = 0;
e.can_promote = 0;
e.can_demote = 0;
e.can_motd = 0;
e.can_warpeace = 0;
return e; return e;
} }
@ -144,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
guild_ranks_id guild_ranks_id
) )
); );
@ -154,17 +123,9 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
GuildRanks e{}; GuildRanks e{};
e.guild_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.rank = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.rank = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.title = row[2] ? row[2] : ""; e.title = row[2] ? row[2] : "";
e.can_hear = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.can_speak = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.can_invite = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.can_remove = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.can_promote = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.can_demote = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.can_motd = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.can_warpeace = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
return e; return e;
} }
@ -201,14 +162,6 @@ public:
v.push_back(columns[0] + " = " + std::to_string(e.guild_id)); v.push_back(columns[0] + " = " + std::to_string(e.guild_id));
v.push_back(columns[1] + " = " + std::to_string(e.rank)); v.push_back(columns[1] + " = " + std::to_string(e.rank));
v.push_back(columns[2] + " = '" + Strings::Escape(e.title) + "'"); v.push_back(columns[2] + " = '" + Strings::Escape(e.title) + "'");
v.push_back(columns[3] + " = " + std::to_string(e.can_hear));
v.push_back(columns[4] + " = " + std::to_string(e.can_speak));
v.push_back(columns[5] + " = " + std::to_string(e.can_invite));
v.push_back(columns[6] + " = " + std::to_string(e.can_remove));
v.push_back(columns[7] + " = " + std::to_string(e.can_promote));
v.push_back(columns[8] + " = " + std::to_string(e.can_demote));
v.push_back(columns[9] + " = " + std::to_string(e.can_motd));
v.push_back(columns[10] + " = " + std::to_string(e.can_warpeace));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -233,14 +186,6 @@ public:
v.push_back(std::to_string(e.guild_id)); v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank)); v.push_back(std::to_string(e.rank));
v.push_back("'" + Strings::Escape(e.title) + "'"); v.push_back("'" + Strings::Escape(e.title) + "'");
v.push_back(std::to_string(e.can_hear));
v.push_back(std::to_string(e.can_speak));
v.push_back(std::to_string(e.can_invite));
v.push_back(std::to_string(e.can_remove));
v.push_back(std::to_string(e.can_promote));
v.push_back(std::to_string(e.can_demote));
v.push_back(std::to_string(e.can_motd));
v.push_back(std::to_string(e.can_warpeace));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -273,14 +218,6 @@ public:
v.push_back(std::to_string(e.guild_id)); v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank)); v.push_back(std::to_string(e.rank));
v.push_back("'" + Strings::Escape(e.title) + "'"); v.push_back("'" + Strings::Escape(e.title) + "'");
v.push_back(std::to_string(e.can_hear));
v.push_back(std::to_string(e.can_speak));
v.push_back(std::to_string(e.can_invite));
v.push_back(std::to_string(e.can_remove));
v.push_back(std::to_string(e.can_promote));
v.push_back(std::to_string(e.can_demote));
v.push_back(std::to_string(e.can_motd));
v.push_back(std::to_string(e.can_warpeace));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")"); insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
} }
@ -314,17 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GuildRanks e{}; GuildRanks e{};
e.guild_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.rank = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.rank = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.title = row[2] ? row[2] : ""; e.title = row[2] ? row[2] : "";
e.can_hear = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.can_speak = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.can_invite = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.can_remove = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.can_promote = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.can_demote = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.can_motd = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.can_warpeace = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -349,17 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GuildRanks e{}; GuildRanks e{};
e.guild_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.rank = static_cast<uint8_t>(strtoul(row[1], nullptr, 10)); e.rank = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.title = row[2] ? row[2] : ""; e.title = row[2] ? row[2] : "";
e.can_hear = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.can_speak = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.can_invite = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.can_remove = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.can_promote = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.can_demote = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.can_motd = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.can_warpeace = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -418,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GuildRanks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back("'" + Strings::Escape(e.title) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GuildRanks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.guild_id));
v.push_back(std::to_string(e.rank));
v.push_back("'" + Strings::Escape(e.title) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GUILD_RANKS_REPOSITORY_H #endif //EQEMU_BASE_GUILD_RANKS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GUILD_RELATIONS_REPOSITORY_H #ifndef EQEMU_BASE_GUILD_RELATIONS_REPOSITORY_H
@ -112,8 +112,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
guild_relations_id guild_relations_id
) )
); );
@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
GuildRelations e{}; GuildRelations e{};
e.guild1 = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild1 = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guild2 = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guild2 = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.relation = static_cast<int8_t>(atoi(row[2])); e.relation = static_cast<int8_t>(atoi(row[2]));
return e; return e;
@ -250,8 +251,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GuildRelations e{}; GuildRelations e{};
e.guild1 = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild1 = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guild2 = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guild2 = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.relation = static_cast<int8_t>(atoi(row[2])); e.relation = static_cast<int8_t>(atoi(row[2]));
all_entries.push_back(e); all_entries.push_back(e);
@ -277,8 +278,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
GuildRelations e{}; GuildRelations e{};
e.guild1 = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.guild1 = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.guild2 = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.guild2 = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.relation = static_cast<int8_t>(atoi(row[2])); e.relation = static_cast<int8_t>(atoi(row[2]));
all_entries.push_back(e); all_entries.push_back(e);
@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GuildRelations &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.guild1));
v.push_back(std::to_string(e.guild2));
v.push_back(std::to_string(e.relation));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GuildRelations> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.guild1));
v.push_back(std::to_string(e.guild2));
v.push_back(std::to_string(e.relation));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GUILD_RELATIONS_REPOSITORY_H #endif //EQEMU_BASE_GUILD_RELATIONS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_GUILDS_REPOSITORY_H #ifndef EQEMU_BASE_GUILDS_REPOSITORY_H
@ -28,6 +28,7 @@ public:
std::string motd_setter; std::string motd_setter;
std::string channel; std::string channel;
std::string url; std::string url;
uint32_t favor;
}; };
static std::string PrimaryKey() static std::string PrimaryKey()
@ -47,6 +48,7 @@ public:
"motd_setter", "motd_setter",
"channel", "channel",
"url", "url",
"favor",
}; };
} }
@ -62,6 +64,7 @@ public:
"motd_setter", "motd_setter",
"channel", "channel",
"url", "url",
"favor",
}; };
} }
@ -111,6 +114,7 @@ public:
e.motd_setter = ""; e.motd_setter = "";
e.channel = ""; e.channel = "";
e.url = ""; e.url = "";
e.favor = 0;
return e; return e;
} }
@ -136,8 +140,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
guilds_id guilds_id
) )
); );
@ -151,10 +156,11 @@ public:
e.leader = static_cast<int32_t>(atoi(row[2])); e.leader = static_cast<int32_t>(atoi(row[2]));
e.minstatus = static_cast<int16_t>(atoi(row[3])); e.minstatus = static_cast<int16_t>(atoi(row[3]));
e.motd = row[4] ? row[4] : ""; e.motd = row[4] ? row[4] : "";
e.tribute = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.motd_setter = row[6] ? row[6] : ""; e.motd_setter = row[6] ? row[6] : "";
e.channel = row[7] ? row[7] : ""; e.channel = row[7] ? row[7] : "";
e.url = row[8] ? row[8] : ""; e.url = row[8] ? row[8] : "";
e.favor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
return e; return e;
} }
@ -196,6 +202,7 @@ public:
v.push_back(columns[6] + " = '" + Strings::Escape(e.motd_setter) + "'"); v.push_back(columns[6] + " = '" + Strings::Escape(e.motd_setter) + "'");
v.push_back(columns[7] + " = '" + Strings::Escape(e.channel) + "'"); v.push_back(columns[7] + " = '" + Strings::Escape(e.channel) + "'");
v.push_back(columns[8] + " = '" + Strings::Escape(e.url) + "'"); v.push_back(columns[8] + " = '" + Strings::Escape(e.url) + "'");
v.push_back(columns[9] + " = " + std::to_string(e.favor));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -226,6 +233,7 @@ public:
v.push_back("'" + Strings::Escape(e.motd_setter) + "'"); v.push_back("'" + Strings::Escape(e.motd_setter) + "'");
v.push_back("'" + Strings::Escape(e.channel) + "'"); v.push_back("'" + Strings::Escape(e.channel) + "'");
v.push_back("'" + Strings::Escape(e.url) + "'"); v.push_back("'" + Strings::Escape(e.url) + "'");
v.push_back(std::to_string(e.favor));
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -264,6 +272,7 @@ public:
v.push_back("'" + Strings::Escape(e.motd_setter) + "'"); v.push_back("'" + Strings::Escape(e.motd_setter) + "'");
v.push_back("'" + Strings::Escape(e.channel) + "'"); v.push_back("'" + Strings::Escape(e.channel) + "'");
v.push_back("'" + Strings::Escape(e.url) + "'"); v.push_back("'" + Strings::Escape(e.url) + "'");
v.push_back(std::to_string(e.favor));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")"); insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
} }
@ -302,10 +311,11 @@ public:
e.leader = static_cast<int32_t>(atoi(row[2])); e.leader = static_cast<int32_t>(atoi(row[2]));
e.minstatus = static_cast<int16_t>(atoi(row[3])); e.minstatus = static_cast<int16_t>(atoi(row[3]));
e.motd = row[4] ? row[4] : ""; e.motd = row[4] ? row[4] : "";
e.tribute = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.motd_setter = row[6] ? row[6] : ""; e.motd_setter = row[6] ? row[6] : "";
e.channel = row[7] ? row[7] : ""; e.channel = row[7] ? row[7] : "";
e.url = row[8] ? row[8] : ""; e.url = row[8] ? row[8] : "";
e.favor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -335,10 +345,11 @@ public:
e.leader = static_cast<int32_t>(atoi(row[2])); e.leader = static_cast<int32_t>(atoi(row[2]));
e.minstatus = static_cast<int16_t>(atoi(row[3])); e.minstatus = static_cast<int16_t>(atoi(row[3]));
e.motd = row[4] ? row[4] : ""; e.motd = row[4] ? row[4] : "";
e.tribute = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.tribute = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.motd_setter = row[6] ? row[6] : ""; e.motd_setter = row[6] ? row[6] : "";
e.channel = row[7] ? row[7] : ""; e.channel = row[7] ? row[7] : "";
e.url = row[8] ? row[8] : ""; e.url = row[8] ? row[8] : "";
e.favor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -397,6 +408,80 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Guilds &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader));
v.push_back(std::to_string(e.minstatus));
v.push_back("'" + Strings::Escape(e.motd) + "'");
v.push_back(std::to_string(e.tribute));
v.push_back("'" + Strings::Escape(e.motd_setter) + "'");
v.push_back("'" + Strings::Escape(e.channel) + "'");
v.push_back("'" + Strings::Escape(e.url) + "'");
v.push_back(std::to_string(e.favor));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Guilds> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader));
v.push_back(std::to_string(e.minstatus));
v.push_back("'" + Strings::Escape(e.motd) + "'");
v.push_back(std::to_string(e.tribute));
v.push_back("'" + Strings::Escape(e.motd_setter) + "'");
v.push_back("'" + Strings::Escape(e.channel) + "'");
v.push_back("'" + Strings::Escape(e.url) + "'");
v.push_back(std::to_string(e.favor));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_GUILDS_REPOSITORY_H #endif //EQEMU_BASE_GUILDS_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_HORSES_REPOSITORY_H #ifndef EQEMU_BASE_HORSES_REPOSITORY_H
@ -128,8 +128,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
horses_id horses_id
) )
); );
@ -143,7 +144,7 @@ public:
e.race = static_cast<int16_t>(atoi(row[2])); e.race = static_cast<int16_t>(atoi(row[2]));
e.gender = static_cast<int8_t>(atoi(row[3])); e.gender = static_cast<int8_t>(atoi(row[3]));
e.texture = static_cast<int8_t>(atoi(row[4])); e.texture = static_cast<int8_t>(atoi(row[4]));
e.mountspeed = strtof(row[5], nullptr); e.mountspeed = row[5] ? strtof(row[5], nullptr) : 0.75;
e.notes = row[6] ? row[6] : ""; e.notes = row[6] ? row[6] : "";
return e; return e;
@ -286,7 +287,7 @@ public:
e.race = static_cast<int16_t>(atoi(row[2])); e.race = static_cast<int16_t>(atoi(row[2]));
e.gender = static_cast<int8_t>(atoi(row[3])); e.gender = static_cast<int8_t>(atoi(row[3]));
e.texture = static_cast<int8_t>(atoi(row[4])); e.texture = static_cast<int8_t>(atoi(row[4]));
e.mountspeed = strtof(row[5], nullptr); e.mountspeed = row[5] ? strtof(row[5], nullptr) : 0.75;
e.notes = row[6] ? row[6] : ""; e.notes = row[6] ? row[6] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -317,7 +318,7 @@ public:
e.race = static_cast<int16_t>(atoi(row[2])); e.race = static_cast<int16_t>(atoi(row[2]));
e.gender = static_cast<int8_t>(atoi(row[3])); e.gender = static_cast<int8_t>(atoi(row[3]));
e.texture = static_cast<int8_t>(atoi(row[4])); e.texture = static_cast<int8_t>(atoi(row[4]));
e.mountspeed = strtof(row[5], nullptr); e.mountspeed = row[5] ? strtof(row[5], nullptr) : 0.75;
e.notes = row[6] ? row[6] : ""; e.notes = row[6] ? row[6] : "";
all_entries.push_back(e); all_entries.push_back(e);
@ -377,6 +378,74 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Horses &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.filename) + "'");
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.texture));
v.push_back(std::to_string(e.mountspeed));
v.push_back("'" + Strings::Escape(e.notes) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Horses> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.filename) + "'");
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.texture));
v.push_back(std::to_string(e.mountspeed));
v.push_back("'" + Strings::Escape(e.notes) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_HORSES_REPOSITORY_H #endif //EQEMU_BASE_HORSES_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_INSTANCE_LIST_PLAYER_REPOSITORY_H #ifndef EQEMU_BASE_INSTANCE_LIST_PLAYER_REPOSITORY_H
@ -108,8 +108,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
instance_list_player_id instance_list_player_id
) )
); );
@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) { if (results.RowCount() == 1) {
InstanceListPlayer e{}; InstanceListPlayer e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
return e; return e;
} }
@ -242,8 +243,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
InstanceListPlayer e{}; InstanceListPlayer e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -268,8 +269,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) { for (auto row = results.begin(); row != results.end(); ++row) {
InstanceListPlayer e{}; InstanceListPlayer e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10)); e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const InstanceListPlayer &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<InstanceListPlayer> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.charid));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_INSTANCE_LIST_PLAYER_REPOSITORY_H #endif //EQEMU_BASE_INSTANCE_LIST_PLAYER_REPOSITORY_H

View File

@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only * Any modifications to base repositories are to be made by the generator only
* *
* @generator ./utils/scripts/generators/repository-generator.pl * @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories * @docs https://docs.eqemu.io/developer/repositories
*/ */
#ifndef EQEMU_BASE_INSTANCE_LIST_REPOSITORY_H #ifndef EQEMU_BASE_INSTANCE_LIST_REPOSITORY_H
@ -26,6 +26,7 @@ public:
uint32_t start_time; uint32_t start_time;
uint32_t duration; uint32_t duration;
uint8_t never_expires; uint8_t never_expires;
std::string notes;
}; };
static std::string PrimaryKey() static std::string PrimaryKey()
@ -43,6 +44,7 @@ public:
"start_time", "start_time",
"duration", "duration",
"never_expires", "never_expires",
"notes",
}; };
} }
@ -56,6 +58,7 @@ public:
"start_time", "start_time",
"duration", "duration",
"never_expires", "never_expires",
"notes",
}; };
} }
@ -103,6 +106,7 @@ public:
e.start_time = 0; e.start_time = 0;
e.duration = 0; e.duration = 0;
e.never_expires = 0; e.never_expires = 0;
e.notes = "";
return e; return e;
} }
@ -128,8 +132,9 @@ public:
{ {
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
"{} WHERE id = {} LIMIT 1", "{} WHERE {} = {} LIMIT 1",
BaseSelect(), BaseSelect(),
PrimaryKey(),
instance_list_id instance_list_id
) )
); );
@ -139,12 +144,13 @@ public:
InstanceList e{}; InstanceList e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zone = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_global = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_global = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_time = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_time = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.never_expires = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.never_expires = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.notes = row[7] ? row[7] : "";
return e; return e;
} }
@ -184,6 +190,7 @@ public:
v.push_back(columns[4] + " = " + std::to_string(e.start_time)); v.push_back(columns[4] + " = " + std::to_string(e.start_time));
v.push_back(columns[5] + " = " + std::to_string(e.duration)); v.push_back(columns[5] + " = " + std::to_string(e.duration));
v.push_back(columns[6] + " = " + std::to_string(e.never_expires)); v.push_back(columns[6] + " = " + std::to_string(e.never_expires));
v.push_back(columns[7] + " = '" + Strings::Escape(e.notes) + "'");
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -212,6 +219,7 @@ public:
v.push_back(std::to_string(e.start_time)); v.push_back(std::to_string(e.start_time));
v.push_back(std::to_string(e.duration)); v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.never_expires)); v.push_back(std::to_string(e.never_expires));
v.push_back("'" + Strings::Escape(e.notes) + "'");
auto results = db.QueryDatabase( auto results = db.QueryDatabase(
fmt::format( fmt::format(
@ -248,6 +256,7 @@ public:
v.push_back(std::to_string(e.start_time)); v.push_back(std::to_string(e.start_time));
v.push_back(std::to_string(e.duration)); v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.never_expires)); v.push_back(std::to_string(e.never_expires));
v.push_back("'" + Strings::Escape(e.notes) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")"); insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
} }
@ -282,12 +291,13 @@ public:
InstanceList e{}; InstanceList e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zone = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_global = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_global = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_time = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_time = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.never_expires = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.never_expires = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.notes = row[7] ? row[7] : "";
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -313,12 +323,13 @@ public:
InstanceList e{}; InstanceList e{};
e.id = static_cast<int32_t>(atoi(row[0])); e.id = static_cast<int32_t>(atoi(row[0]));
e.zone = static_cast<uint32_t>(strtoul(row[1], nullptr, 10)); e.zone = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10)); e.version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.is_global = static_cast<uint8_t>(strtoul(row[3], nullptr, 10)); e.is_global = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.start_time = static_cast<uint32_t>(strtoul(row[4], nullptr, 10)); e.start_time = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.duration = static_cast<uint32_t>(strtoul(row[5], nullptr, 10)); e.duration = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.never_expires = static_cast<uint8_t>(strtoul(row[6], nullptr, 10)); e.never_expires = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.notes = row[7] ? row[7] : "";
all_entries.push_back(e); all_entries.push_back(e);
} }
@ -377,6 +388,76 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0); return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
} }
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const InstanceList &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone));
v.push_back(std::to_string(e.version));
v.push_back(std::to_string(e.is_global));
v.push_back(std::to_string(e.start_time));
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.never_expires));
v.push_back("'" + Strings::Escape(e.notes) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<InstanceList> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone));
v.push_back(std::to_string(e.version));
v.push_back(std::to_string(e.is_global));
v.push_back(std::to_string(e.start_time));
v.push_back(std::to_string(e.duration));
v.push_back(std::to_string(e.never_expires));
v.push_back("'" + Strings::Escape(e.notes) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
}; };
#endif //EQEMU_BASE_INSTANCE_LIST_REPOSITORY_H #endif //EQEMU_BASE_INSTANCE_LIST_REPOSITORY_H

Some files were not shown because too many files have changed in this diff Show More