mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 22:01:30 +00:00
[Repository] Add null integer column support, instance_list notes migration, regenerate repositories (#3969)
This commit is contained in:
parent
1238a6ca68
commit
818f833d04
@ -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{
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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] : "";
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
#include "../../strings.h"
|
#include "../../strings.h"
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
|
|
||||||
class BaseCharacterAurasRepository {
|
class BaseCharacterAurasRepository {
|
||||||
public:
|
public:
|
||||||
struct CharacterAuras {
|
struct CharacterAuras {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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]));
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
#include "../../strings.h"
|
#include "../../strings.h"
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
|
|
||||||
class BaseCharacterPetInventoryRepository {
|
class BaseCharacterPetInventoryRepository {
|
||||||
public:
|
public:
|
||||||
struct CharacterPetInventory {
|
struct CharacterPetInventory {
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
488
common/repositories/base/base_guild_members_repository.h
Normal file
488
common/repositories/base/base_guild_members_repository.h
Normal 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
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
Loading…
x
Reference in New Issue
Block a user