mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-27 00:32:28 +00:00
Compare commits
77 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ebc7f9bb6 | |||
| 9ac25338bb | |||
| e9285fd2ca | |||
| 5b85f89c21 | |||
| 7fed8fc8c8 | |||
| 26769f40d9 | |||
| f6148b9b8d | |||
| ca1299bf1d | |||
| 3fb24dc0a3 | |||
| dcd7bffa54 | |||
| 5298abe6bc | |||
| fbc2b7c152 | |||
| 86705000b0 | |||
| 748e37dbdf | |||
| 27256215b8 | |||
| 59cbe1a152 | |||
| 3e50427bb7 | |||
| 883b3b5826 | |||
| 135ee6b2b7 | |||
| 906879ce2e | |||
| 8b7aba2769 | |||
| 9303255caa | |||
| 14509fcc4e | |||
| e40267b9b8 | |||
| f3073b463f | |||
| 5ad4129312 | |||
| 4b5b29b165 | |||
| 3b7a138de4 | |||
| 742b437f2c | |||
| d41bd8f963 | |||
| 73a099c5ea | |||
| 77c0eb3998 | |||
| 5d1c59c95f | |||
| 1d7f39c13b | |||
| 1bb8678abe | |||
| 47968774d9 | |||
| d7dc717249 | |||
| 32659426ba | |||
| 238c9fe667 | |||
| b9f997015a | |||
| 11e2a252e5 | |||
| fc627ed52d | |||
| 4c028b85f0 | |||
| f1d5e3eedf | |||
| d59531b16f | |||
| e182d685d3 | |||
| 6968a70310 | |||
| 06e8d258e4 | |||
| 8cb15f9357 | |||
| eb33e5a064 | |||
| 71f78b757e | |||
| 818f833d04 | |||
| 1238a6ca68 | |||
| 4afc1efb38 | |||
| 24eb40d231 | |||
| 2475092ed9 | |||
| 53d6e449c2 | |||
| b61649a2a0 | |||
| ef635cb257 | |||
| 62b5f8a488 | |||
| d0e069f4f8 | |||
| 1b5b22eeca | |||
| 66d9371714 | |||
| 0418dc4aa3 | |||
| f12c87a04a | |||
| 97dbf85a4c | |||
| 46a0cf6b02 | |||
| 8f34bd998f | |||
| 98928aee74 | |||
| e6dc980315 | |||
| ec465616b4 | |||
| 23de0119ff | |||
| f59b4feb94 | |||
| e035660150 | |||
| 472dd71d7f | |||
| 409b6bf424 | |||
| 9da713a830 |
+218
@@ -1,3 +1,221 @@
|
||||
## [22.43.2] - 1/25/2024
|
||||
|
||||
### Bots
|
||||
|
||||
* ^mez command spell list fix ([#3998](https://github.com/EQEmu/Server/pull/3998)) @dariusuknuis 2024-01-19
|
||||
|
||||
### Code
|
||||
|
||||
* Cleanup position methods ([#4015](https://github.com/EQEmu/Server/pull/4015)) @Kinglykrab 2024-01-25
|
||||
|
||||
### Commands
|
||||
|
||||
* Add `#npcedit set_grid [Grid ID]` to `#npcedit` ([#4004](https://github.com/EQEmu/Server/pull/4004)) @Kinglykrab 2024-01-22
|
||||
|
||||
### Crash Fix
|
||||
|
||||
* Fix crash when creating Frogloks/Drakkin ([#4016](https://github.com/EQEmu/Server/pull/4016)) @Kinglykrab 2024-01-25
|
||||
* Reverting PR #3877 ([#3997](https://github.com/EQEmu/Server/pull/3997)) @fryguy503 2024-01-17
|
||||
|
||||
### Database
|
||||
|
||||
* Drop deprecated item_tick table ([#3977](https://github.com/EQEmu/Server/pull/3977)) @Akkadius 2024-01-14
|
||||
* Drop item_tick if exists tweak in manifest ([#3985](https://github.com/EQEmu/Server/pull/3985)) @Akkadius 2024-01-15
|
||||
* Increase max spawngroup name from 50 to 200 ([#3991](https://github.com/EQEmu/Server/pull/3991)) @Akkadius 2024-01-22
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix Mercenaries Buffs/Zoning Issues ([#4000](https://github.com/EQEmu/Server/pull/4000)) @Kinglykrab 2024-01-22
|
||||
* Fix zone database update manifest ([#3972](https://github.com/EQEmu/Server/pull/3972)) @Kinglykrab 2024-01-13
|
||||
* Fixes to zone idle while empty changes. ([#4006](https://github.com/EQEmu/Server/pull/4006)) @noudess 2024-01-23
|
||||
* Reversed logic on InLiquid ([#3979](https://github.com/EQEmu/Server/pull/3979)) @fryguy503 2024-01-14
|
||||
|
||||
### Instances
|
||||
|
||||
* Convert Instance Quest Methods to Repositories ([#4012](https://github.com/EQEmu/Server/pull/4012)) @Kinglykrab 2024-01-25
|
||||
|
||||
### Logging
|
||||
|
||||
* Force Info category to be always on in file/console logs ([#3990](https://github.com/EQEmu/Server/pull/3990)) @Akkadius 2024-01-22
|
||||
|
||||
### Merchants
|
||||
|
||||
* Change database structure for merchant slots ([#3974](https://github.com/EQEmu/Server/pull/3974)) @joligario 2024-01-14
|
||||
|
||||
### Messages
|
||||
|
||||
* Fix disciple message added by previous patch. ([#3986](https://github.com/EQEmu/Server/pull/3986)) @noudess 2024-01-15
|
||||
|
||||
### Quest API
|
||||
|
||||
* QuestReward should now summon item to the inventory instead of the cursor. ([#3996](https://github.com/EQEmu/Server/pull/3996)) @regneq 2024-01-22
|
||||
|
||||
### Repositories
|
||||
|
||||
* Add `rank` to reserved words ([#3982](https://github.com/EQEmu/Server/pull/3982)) @Akkadius 2024-01-15
|
||||
* Fix datetime zero-value save behavior ([#3976](https://github.com/EQEmu/Server/pull/3976)) @Akkadius 2024-01-14
|
||||
|
||||
### Spawn2
|
||||
|
||||
* Spawn condition value should default spawn_conditions value ([#3980](https://github.com/EQEmu/Server/pull/3980)) @noudess 2024-01-14
|
||||
|
||||
### Zoning
|
||||
|
||||
* Additional logs for zoning under instance checks ([#3989](https://github.com/EQEmu/Server/pull/3989)) @Akkadius 2024-01-22
|
||||
|
||||
## [22.43.1] - 1/14/2024
|
||||
|
||||
### Repositories
|
||||
|
||||
* Revert #3976 - fix character corpses @Akkadius 2024-01-14
|
||||
|
||||
## [22.43.0] - 1/14/2024
|
||||
|
||||
### Database
|
||||
|
||||
* Drop deprecated item_tick table ([#3977](https://github.com/EQEmu/Server/pull/3977)) @Akkadius 2024-01-14
|
||||
|
||||
### Merchants
|
||||
|
||||
* Change database structure for merchant slots ([#3974](https://github.com/EQEmu/Server/pull/3974)) @joligario 2024-01-14
|
||||
|
||||
### Repositories
|
||||
|
||||
* Fix datetime zero-value save behavior ([#3976](https://github.com/EQEmu/Server/pull/3976)) @Akkadius 2024-01-14
|
||||
|
||||
### Zones
|
||||
|
||||
* Convert IDLE_WHEN_EMPTY to a Zone Column ([#3891](https://github.com/EQEmu/Server/pull/3891)) @Kinglykrab 2024-01-13
|
||||
|
||||
## [22.42.1] - 1/13/2024
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix zone database update manifest ([#3972](https://github.com/EQEmu/Server/pull/3972)) @Kinglykrab 2024-01-13
|
||||
* quest::processmobswhilezoneempty() fix. ([#3971](https://github.com/EQEmu/Server/pull/3971)) @noudess 2024-01-13
|
||||
|
||||
## [22.42.0] - 1/13/2024
|
||||
|
||||
### AAs
|
||||
|
||||
* Convert Loading of AAs to Repositories ([#3963](https://github.com/EQEmu/Server/pull/3963)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Auras
|
||||
|
||||
* Convert Get of Auras to Repositories ([#3964](https://github.com/EQEmu/Server/pull/3964)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Character
|
||||
|
||||
* Character EXP Modifiers in Memory ([#3934](https://github.com/EQEmu/Server/pull/3934)) @Kinglykrab 2024-01-13
|
||||
* Convert Character Corpses to Repositories ([#3941](https://github.com/EQEmu/Server/pull/3941)) @Kinglykrab 2024-01-13
|
||||
* Convert Save of Character Languages to Repositories ([#3948](https://github.com/EQEmu/Server/pull/3948)) @Kinglykrab 2024-01-12
|
||||
|
||||
### Code
|
||||
|
||||
* Cleanup AddCash() and RemoveCash() NPC Methods ([#3957](https://github.com/EQEmu/Server/pull/3957)) @Kinglykrab 2024-01-12
|
||||
* Cleanup ChangeSize() ([#3959](https://github.com/EQEmu/Server/pull/3959)) @Kinglykrab 2024-01-12
|
||||
* Cleanup Owner Related Mob Methods ([#3960](https://github.com/EQEmu/Server/pull/3960)) @Kinglykrab 2024-01-13
|
||||
* Cleanup RandomizeFeatures() ([#3958](https://github.com/EQEmu/Server/pull/3958)) @Kinglykrab 2024-01-12
|
||||
* Remove GroupCount() and RaidGroupCount() ([#3943](https://github.com/EQEmu/Server/pull/3943)) @Kinglykrab 2024-01-13
|
||||
* Remove unused Grid methods ([#3944](https://github.com/EQEmu/Server/pull/3944)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Commands
|
||||
|
||||
* Convert NPC Spawn Methods to Repositories ([#3956](https://github.com/EQEmu/Server/pull/3956)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Crash Fix
|
||||
|
||||
* Character Creation Class/Race out of Range. ([#3920](https://github.com/EQEmu/Server/pull/3920)) @fryguy503 2024-01-09
|
||||
|
||||
### Feat
|
||||
|
||||
* Alt Sinister Strike Formula ([#3921](https://github.com/EQEmu/Server/pull/3921)) @fryguy503 2024-01-09
|
||||
|
||||
### Feature
|
||||
|
||||
* Add Lore Item Trade Error ([#3932](https://github.com/EQEmu/Server/pull/3932)) @fryguy503 2024-01-13
|
||||
* Rule: UseLiveBlockedMessage Bard Spam ([#3933](https://github.com/EQEmu/Server/pull/3933)) @fryguy503 2024-01-09
|
||||
|
||||
### Fixes
|
||||
|
||||
* Attack Corpse Skill Up Fix ([#3924](https://github.com/EQEmu/Server/pull/3924)) @fryguy503 2024-01-09
|
||||
* Fix Issue with SetFlyMode() ([#3961](https://github.com/EQEmu/Server/pull/3961)) @Kinglykrab 2024-01-12
|
||||
* Harm Touch Critical Ratio ([#3915](https://github.com/EQEmu/Server/pull/3915)) @fryguy503 2024-01-09
|
||||
* Increase Precision in CheckDoubleAttack ([#3928](https://github.com/EQEmu/Server/pull/3928)) @fryguy503 2024-01-09
|
||||
* IsOfClientBotMerc() for Discipline Messages ([#3940](https://github.com/EQEmu/Server/pull/3940)) @fryguy503 2024-01-09
|
||||
* Limit MeleeMitigationEffect to defender if only client. ([#3918](https://github.com/EQEmu/Server/pull/3918)) @fryguy503 2024-01-09
|
||||
* Rampage Number of Hits Limit ([#3929](https://github.com/EQEmu/Server/pull/3929)) @fryguy503 2024-01-09
|
||||
* Remove duplicate character_data repository in zonedb.cpp ([#3935](https://github.com/EQEmu/Server/pull/3935)) @Kinglykrab 2024-01-09
|
||||
* Undead Should Never Flee ([#3926](https://github.com/EQEmu/Server/pull/3926)) @fryguy503 2024-01-09
|
||||
|
||||
### Global Loot
|
||||
|
||||
* Convert Global Loot to Repositories ([#3962](https://github.com/EQEmu/Server/pull/3962)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Ground Spawns
|
||||
|
||||
* Convert Ground Spawns to Repositories ([#3967](https://github.com/EQEmu/Server/pull/3967)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Horses
|
||||
|
||||
* Convert Horses to Repositories ([#3965](https://github.com/EQEmu/Server/pull/3965)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Item Ticks
|
||||
|
||||
* Remove Item Ticks Code ([#3955](https://github.com/EQEmu/Server/pull/3955)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Mercenaries
|
||||
|
||||
* Convert Mercenaries to Repositories ([#3947](https://github.com/EQEmu/Server/pull/3947)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Merchants
|
||||
|
||||
* Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories ([#3945](https://github.com/EQEmu/Server/pull/3945)) @Kinglykrab 2024-01-13
|
||||
|
||||
### NPCs
|
||||
|
||||
* Convert Load of NPC Emotes to Repositories ([#3954](https://github.com/EQEmu/Server/pull/3954)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Objects
|
||||
|
||||
* Convert Add/Delete/Update of Objects to Repositories ([#3966](https://github.com/EQEmu/Server/pull/3966)) @Kinglykrab 2024-01-13
|
||||
* Convert World Containers to Repositories ([#3951](https://github.com/EQEmu/Server/pull/3951)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Pets
|
||||
|
||||
* Convert Pets to Repositories ([#3968](https://github.com/EQEmu/Server/pull/3968)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Repositories
|
||||
|
||||
* Add null integer column support, instance_list notes migration, regenerate repositories ([#3969](https://github.com/EQEmu/Server/pull/3969)) @Akkadius 2024-01-13
|
||||
|
||||
### Respawns
|
||||
|
||||
* Convert Respawn Times to Repositories ([#3949](https://github.com/EQEmu/Server/pull/3949)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Rules
|
||||
|
||||
* Add rule for bard aggro cap ([#3909](https://github.com/EQEmu/Server/pull/3909)) @fryguy503 2024-01-09
|
||||
* Allow GMs to silently summon ([#3910](https://github.com/EQEmu/Server/pull/3910)) @fryguy503 2024-01-09
|
||||
* Bash Two Hander use Shoulders ([#3925](https://github.com/EQEmu/Server/pull/3925)) @fryguy503 2024-01-09
|
||||
* Classic Spell Data SPA Calc variability ([#3931](https://github.com/EQEmu/Server/pull/3931)) @fryguy503 2024-01-09
|
||||
* Classic Tracking Skillups ([#3923](https://github.com/EQEmu/Server/pull/3923)) @fryguy503 2024-01-09
|
||||
* Separate Tradeskill Max Train from Research. ([#3916](https://github.com/EQEmu/Server/pull/3916)) @fryguy503 2024-01-09
|
||||
|
||||
### Tasks
|
||||
|
||||
* Add Support for Task Window Element Groups ([#3902](https://github.com/EQEmu/Server/pull/3902)) @hgtw 2024-01-09
|
||||
|
||||
### Traps
|
||||
|
||||
* Convert Load of LDoN Traps/Trap Entries to Repositories ([#3953](https://github.com/EQEmu/Server/pull/3953)) @Kinglykrab 2024-01-13
|
||||
|
||||
### Zones
|
||||
|
||||
* Convert Get/Set of Zone Timezone to Repositories ([#3946](https://github.com/EQEmu/Server/pull/3946)) @Kinglykrab 2024-01-13
|
||||
* Convert IDLE_WHEN_EMPTY to a Zone Column ([#3891](https://github.com/EQEmu/Server/pull/3891)) @Kinglykrab 2024-01-13
|
||||
* Convert SaveZoneCFG to Repositories ([#3950](https://github.com/EQEmu/Server/pull/3950)) @Kinglykrab 2024-01-13
|
||||
|
||||
## [22.41.0] - 1/8/2024
|
||||
|
||||
### Bug
|
||||
|
||||
@@ -230,7 +230,6 @@ SET(repositories
|
||||
repositories/base/base_inventory_snapshots_repository.h
|
||||
repositories/base/base_ip_exemptions_repository.h
|
||||
repositories/base/base_items_repository.h
|
||||
repositories/base/base_item_tick_repository.h
|
||||
repositories/base/base_ldon_trap_entries_repository.h
|
||||
repositories/base/base_ldon_trap_templates_repository.h
|
||||
repositories/base/base_level_exp_mods_repository.h
|
||||
@@ -408,7 +407,6 @@ SET(repositories
|
||||
repositories/inventory_snapshots_repository.h
|
||||
repositories/ip_exemptions_repository.h
|
||||
repositories/items_repository.h
|
||||
repositories/item_tick_repository.h
|
||||
repositories/ldon_trap_entries_repository.h
|
||||
repositories/ldon_trap_templates_repository.h
|
||||
repositories/level_exp_mods_repository.h
|
||||
|
||||
+4
-2
@@ -54,6 +54,7 @@
|
||||
|
||||
#include "repositories/zone_repository.h"
|
||||
#include "zone_store.h"
|
||||
#include "repositories/merchantlist_temp_repository.h"
|
||||
|
||||
extern Client client;
|
||||
|
||||
@@ -1221,8 +1222,9 @@ void Database::GetAccountFromID(uint32 id, char* oAccountName, int16* oStatus) {
|
||||
*oStatus = Strings::ToInt(row[1]);
|
||||
}
|
||||
|
||||
void Database::ClearMerchantTemp(){
|
||||
QueryDatabase("DELETE FROM merchantlist_temp");
|
||||
void Database::ClearMerchantTemp()
|
||||
{
|
||||
MerchantlistTempRepository::ClearTemporaryMerchantLists(*this);
|
||||
}
|
||||
|
||||
bool Database::UpdateName(const char* oldname, const char* newname) {
|
||||
|
||||
@@ -5162,8 +5162,87 @@ ALTER TABLE `tasks`
|
||||
ADD COLUMN `enabled` smallint NULL DEFAULT 1 AFTER `faction_amount`
|
||||
)",
|
||||
.content_schema_update = true
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9250,
|
||||
.description = "2023_01_06_task_activities_list_group.sql",
|
||||
.check = "SHOW COLUMNS FROM `task_activities` LIKE 'list_group'",
|
||||
.condition = "empty",
|
||||
.match = "",
|
||||
.sql = R"(
|
||||
ALTER TABLE `task_activities`
|
||||
ADD COLUMN `list_group` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `optional`;
|
||||
)",
|
||||
.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`;
|
||||
)",
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9252,
|
||||
.description = "2024_01_07_zone_idle_when_empty.sql",
|
||||
.check = "SHOW COLUMNS FROM `zone` LIKE 'idle_when_empty'",
|
||||
.condition = "empty",
|
||||
.match = "",
|
||||
.sql = R"(
|
||||
ALTER TABLE `zone`
|
||||
ADD COLUMN `idle_when_empty` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 AFTER `min_lava_damage`,
|
||||
ADD COLUMN `seconds_before_idle` int(11) UNSIGNED NOT NULL DEFAULT 60 AFTER `idle_when_empty`;
|
||||
)",
|
||||
.content_schema_update = true
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9253,
|
||||
.description = "2024_01_13_merchantlist_slot.sql",
|
||||
.check = "SHOW COLUMNS FROM `merchantlist` LIKE 'slot'",
|
||||
.condition = "missing",
|
||||
.match = "unsigned",
|
||||
.sql = R"(
|
||||
ALTER TABLE `merchantlist`
|
||||
MODIFY COLUMN `slot` int(11) UNSIGNED NOT NULL DEFAULT 0
|
||||
)",
|
||||
.content_schema_update = true
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9254,
|
||||
.description = "2024_01_13_merchantlist_temp_slot.sql",
|
||||
.check = "SHOW COLUMNS FROM `merchantlist_temp` LIKE 'slot'",
|
||||
.condition = "contains",
|
||||
.match = "tinyint",
|
||||
.sql = R"(
|
||||
ALTER TABLE `merchantlist_temp`
|
||||
MODIFY COLUMN `slot` int(11) UNSIGNED NOT NULL DEFAULT 0
|
||||
)"
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9255,
|
||||
.description = "2024_01_13_drop_item_tick_deprecated.sql",
|
||||
.check = "show tables like 'item_tick'",
|
||||
.condition = "not_empty",
|
||||
.match = "",
|
||||
.sql = R"(
|
||||
DROP TABLE IF EXISTS item_tick
|
||||
)"
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9256,
|
||||
.description = "2024_01_16_increase_spawngroup_size.sql",
|
||||
.check = "SHOW COLUMNS FROM `spawngroup` LIKE 'name'",
|
||||
.condition = "contains",
|
||||
.match = "varchar(50)",
|
||||
.sql = R"(
|
||||
ALTER TABLE `spawngroup`
|
||||
MODIFY COLUMN `name` varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '' AFTER `id`;
|
||||
)"
|
||||
}
|
||||
|
||||
// -- template; copy/paste this when you need to create a new entry
|
||||
// ManifestEntry{
|
||||
// .version = 9228,
|
||||
|
||||
@@ -562,6 +562,7 @@ std::string EQ::constants::GetEmoteEventTypeName(uint8 emote_event_type)
|
||||
const std::map<uint8, std::string> &EQ::constants::GetEmoteTypeMap()
|
||||
{
|
||||
static const std::map<uint8, std::string> emote_type_map = {
|
||||
{ EmoteTypes::Say, "Say" },
|
||||
{ EmoteTypes::Emote, "Emote" },
|
||||
{ EmoteTypes::Shout, "Shout" },
|
||||
{ EmoteTypes::Proximity, "Proximity" }
|
||||
@@ -572,7 +573,7 @@ const std::map<uint8, std::string> &EQ::constants::GetEmoteTypeMap()
|
||||
|
||||
std::string EQ::constants::GetEmoteTypeName(uint8 emote_type)
|
||||
{
|
||||
if (!EQ::ValueWithin(emote_type, EmoteTypes::Emote, EmoteTypes::Proximity)) {
|
||||
if (!EQ::ValueWithin(emote_type, EmoteTypes::Say, EmoteTypes::Proximity)) {
|
||||
return std::string();
|
||||
}
|
||||
|
||||
|
||||
@@ -350,6 +350,7 @@ namespace EQ
|
||||
};
|
||||
|
||||
enum EmoteTypes : uint8 {
|
||||
Say,
|
||||
Emote,
|
||||
Shout,
|
||||
Proximity
|
||||
|
||||
@@ -392,7 +392,7 @@ struct NewZone_Struct {
|
||||
/*0724*/ uint32 underworld_teleport_index; // > 0 teleports w/ zone point index, invalid succors, if this value is 0, it prevents you from running off edges that would end up underworld
|
||||
/*0728*/ uint32 lava_damage; // Seen 50
|
||||
/*0732*/ uint32 min_lava_damage; // Seen 10
|
||||
/*0736*/
|
||||
/*0736*/ float safe_heading;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -631,6 +631,12 @@ struct ConsentResponse_Struct {
|
||||
char zonename[32];
|
||||
};
|
||||
|
||||
struct NameApproval_Struct {
|
||||
char name[64];
|
||||
uint32 race_id;
|
||||
uint32 class_id;
|
||||
};
|
||||
|
||||
/*
|
||||
** Name Generator Struct
|
||||
** Length: 72 bytes
|
||||
@@ -3445,7 +3451,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -3457,8 +3463,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -701,6 +701,8 @@ EQEmuLogSys *EQEmuLogSys::LoadLogDatabaseSettings()
|
||||
log_settings[Logs::Crash].log_to_console = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Crash].log_to_gmsay = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Crash].log_to_file = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Info].log_to_file = static_cast<uint8>(Logs::General);
|
||||
log_settings[Logs::Info].log_to_console = static_cast<uint8>(Logs::General);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -35,11 +35,6 @@ Core Zone features
|
||||
|
||||
*/
|
||||
|
||||
|
||||
//Uncomment this to cause a zone to basically idle
|
||||
//when there are no players in it, mobs stop wandering, etc..
|
||||
#define IDLE_WHEN_EMPTY
|
||||
|
||||
#ifdef EMBPERL
|
||||
//Enable the new XS based perl parser
|
||||
#define EMBPERL_XS
|
||||
|
||||
@@ -3619,7 +3619,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -3631,8 +3631,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -3556,7 +3556,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -3568,8 +3568,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -3026,7 +3026,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -3038,8 +3038,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -2951,7 +2951,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -2963,8 +2963,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* EQEMu: Everquest Server Emulator
|
||||
|
||||
|
||||
Copyright (C) 2001-2016 EQEMu Development Team (http://eqemulator.net)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -2604,7 +2604,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -2616,8 +2616,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -3078,7 +3078,7 @@ struct Make_Pet_Struct { //Simple struct for getting pet info
|
||||
uint32 min_dmg;
|
||||
uint32 max_dmg;
|
||||
};
|
||||
struct Ground_Spawn{
|
||||
struct GroundSpawn{
|
||||
float max_x;
|
||||
float max_y;
|
||||
float min_x;
|
||||
@@ -3090,8 +3090,8 @@ struct Ground_Spawn{
|
||||
uint32 max_allowed;
|
||||
uint32 respawntimer;
|
||||
};
|
||||
struct Ground_Spawns {
|
||||
struct Ground_Spawn spawn[50]; //Assigned max number to allow
|
||||
struct GroundSpawns {
|
||||
struct GroundSpawn spawn[50]; //Assigned max number to allow
|
||||
};
|
||||
|
||||
//struct PetitionBug_Struct{
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
int32_t first_rank_id;
|
||||
uint8_t enabled;
|
||||
int8_t reset_on_death;
|
||||
int8_t auto_grant_enabled;
|
||||
};
|
||||
|
||||
static std::string PrimaryKey()
|
||||
@@ -57,6 +58,7 @@ public:
|
||||
"first_rank_id",
|
||||
"enabled",
|
||||
"reset_on_death",
|
||||
"auto_grant_enabled",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -77,6 +79,7 @@ public:
|
||||
"first_rank_id",
|
||||
"enabled",
|
||||
"reset_on_death",
|
||||
"auto_grant_enabled",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -117,20 +120,21 @@ public:
|
||||
{
|
||||
AaAbility e{};
|
||||
|
||||
e.id = 0;
|
||||
e.name = "";
|
||||
e.category = -1;
|
||||
e.classes = 131070;
|
||||
e.races = 65535;
|
||||
e.drakkin_heritage = 127;
|
||||
e.deities = 131071;
|
||||
e.status = 0;
|
||||
e.type = 0;
|
||||
e.charges = 0;
|
||||
e.grant_only = 0;
|
||||
e.first_rank_id = -1;
|
||||
e.enabled = 1;
|
||||
e.reset_on_death = 0;
|
||||
e.id = 0;
|
||||
e.name = "";
|
||||
e.category = -1;
|
||||
e.classes = 131070;
|
||||
e.races = 65535;
|
||||
e.drakkin_heritage = 127;
|
||||
e.deities = 131071;
|
||||
e.status = 0;
|
||||
e.type = 0;
|
||||
e.charges = 0;
|
||||
e.grant_only = 0;
|
||||
e.first_rank_id = -1;
|
||||
e.enabled = 1;
|
||||
e.reset_on_death = 0;
|
||||
e.auto_grant_enabled = 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -156,8 +160,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
aa_ability_id
|
||||
)
|
||||
);
|
||||
@@ -166,20 +171,21 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AaAbility e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = static_cast<int32_t>(atoi(row[2]));
|
||||
e.classes = static_cast<int32_t>(atoi(row[3]));
|
||||
e.races = static_cast<int32_t>(atoi(row[4]));
|
||||
e.drakkin_heritage = static_cast<int32_t>(atoi(row[5]));
|
||||
e.deities = static_cast<int32_t>(atoi(row[6]));
|
||||
e.status = static_cast<int32_t>(atoi(row[7]));
|
||||
e.type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.charges = static_cast<int32_t>(atoi(row[9]));
|
||||
e.grant_only = static_cast<int8_t>(atoi(row[10]));
|
||||
e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.classes = row[3] ? static_cast<int32_t>(atoi(row[3])) : 131070;
|
||||
e.races = row[4] ? static_cast<int32_t>(atoi(row[4])) : 65535;
|
||||
e.drakkin_heritage = row[5] ? static_cast<int32_t>(atoi(row[5])) : 127;
|
||||
e.deities = row[6] ? static_cast<int32_t>(atoi(row[6])) : 131071;
|
||||
e.status = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.charges = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.grant_only = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.first_rank_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
|
||||
e.reset_on_death = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.auto_grant_enabled = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -227,6 +233,7 @@ public:
|
||||
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[13] + " = " + std::to_string(e.reset_on_death));
|
||||
v.push_back(columns[14] + " = " + std::to_string(e.auto_grant_enabled));
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
@@ -262,6 +269,7 @@ public:
|
||||
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(
|
||||
@@ -305,6 +313,7 @@ public:
|
||||
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) + ")");
|
||||
}
|
||||
@@ -338,20 +347,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaAbility e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = static_cast<int32_t>(atoi(row[2]));
|
||||
e.classes = static_cast<int32_t>(atoi(row[3]));
|
||||
e.races = static_cast<int32_t>(atoi(row[4]));
|
||||
e.drakkin_heritage = static_cast<int32_t>(atoi(row[5]));
|
||||
e.deities = static_cast<int32_t>(atoi(row[6]));
|
||||
e.status = static_cast<int32_t>(atoi(row[7]));
|
||||
e.type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.charges = static_cast<int32_t>(atoi(row[9]));
|
||||
e.grant_only = static_cast<int8_t>(atoi(row[10]));
|
||||
e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.classes = row[3] ? static_cast<int32_t>(atoi(row[3])) : 131070;
|
||||
e.races = row[4] ? static_cast<int32_t>(atoi(row[4])) : 65535;
|
||||
e.drakkin_heritage = row[5] ? static_cast<int32_t>(atoi(row[5])) : 127;
|
||||
e.deities = row[6] ? static_cast<int32_t>(atoi(row[6])) : 131071;
|
||||
e.status = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.charges = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.grant_only = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.first_rank_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
|
||||
e.reset_on_death = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.auto_grant_enabled = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -376,20 +386,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaAbility e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = static_cast<int32_t>(atoi(row[2]));
|
||||
e.classes = static_cast<int32_t>(atoi(row[3]));
|
||||
e.races = static_cast<int32_t>(atoi(row[4]));
|
||||
e.drakkin_heritage = static_cast<int32_t>(atoi(row[5]));
|
||||
e.deities = static_cast<int32_t>(atoi(row[6]));
|
||||
e.status = static_cast<int32_t>(atoi(row[7]));
|
||||
e.type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.charges = static_cast<int32_t>(atoi(row[9]));
|
||||
e.grant_only = static_cast<int8_t>(atoi(row[10]));
|
||||
e.first_rank_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.enabled = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.reset_on_death = static_cast<int8_t>(atoi(row[13]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.category = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.classes = row[3] ? static_cast<int32_t>(atoi(row[3])) : 131070;
|
||||
e.races = row[4] ? static_cast<int32_t>(atoi(row[4])) : 65535;
|
||||
e.drakkin_heritage = row[5] ? static_cast<int32_t>(atoi(row[5])) : 127;
|
||||
e.deities = row[6] ? static_cast<int32_t>(atoi(row[6])) : 131071;
|
||||
e.status = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.charges = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.grant_only = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.first_rank_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.enabled = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 1;
|
||||
e.reset_on_death = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.auto_grant_enabled = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -448,6 +459,90 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -120,8 +120,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
aa_rank_effects_id
|
||||
)
|
||||
);
|
||||
@@ -130,11 +131,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AaRankEffects e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.effect_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.base1 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.base2 = static_cast<int32_t>(atoi(row[4]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.effect_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.base1 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.base2 = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -266,11 +267,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRankEffects e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.effect_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.base1 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.base2 = static_cast<int32_t>(atoi(row[4]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.effect_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.base1 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.base2 = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -295,11 +296,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRankEffects e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.effect_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.base1 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.base2 = static_cast<int32_t>(atoi(row[4]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.effect_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.base1 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.base2 = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -358,6 +359,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
aa_rank_prereqs_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AaRankPrereqs e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.points = static_cast<int32_t>(atoi(row[2]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.points = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -250,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRankPrereqs e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.points = static_cast<int32_t>(atoi(row[2]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.points = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -277,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRankPrereqs e{};
|
||||
|
||||
e.rank_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.points = static_cast<int32_t>(atoi(row[2]));
|
||||
e.rank_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.points = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -152,8 +152,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
aa_ranks_id
|
||||
)
|
||||
);
|
||||
@@ -162,19 +163,19 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AaRanks e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.title_sid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.desc_sid = static_cast<int32_t>(atoi(row[4]));
|
||||
e.cost = static_cast<int32_t>(atoi(row[5]));
|
||||
e.level_req = static_cast<int32_t>(atoi(row[6]));
|
||||
e.spell = static_cast<int32_t>(atoi(row[7]));
|
||||
e.spell_type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.recast_time = static_cast<int32_t>(atoi(row[9]));
|
||||
e.expansion = static_cast<int32_t>(atoi(row[10]));
|
||||
e.prev_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.next_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.upper_hotkey_sid = row[1] ? static_cast<int32_t>(atoi(row[1])) : -1;
|
||||
e.lower_hotkey_sid = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.title_sid = row[3] ? static_cast<int32_t>(atoi(row[3])) : -1;
|
||||
e.desc_sid = row[4] ? static_cast<int32_t>(atoi(row[4])) : -1;
|
||||
e.cost = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.level_req = row[6] ? static_cast<int32_t>(atoi(row[6])) : 51;
|
||||
e.spell = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
|
||||
e.spell_type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.recast_time = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.expansion = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.prev_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.next_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : -1;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -330,19 +331,19 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRanks e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.title_sid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.desc_sid = static_cast<int32_t>(atoi(row[4]));
|
||||
e.cost = static_cast<int32_t>(atoi(row[5]));
|
||||
e.level_req = static_cast<int32_t>(atoi(row[6]));
|
||||
e.spell = static_cast<int32_t>(atoi(row[7]));
|
||||
e.spell_type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.recast_time = static_cast<int32_t>(atoi(row[9]));
|
||||
e.expansion = static_cast<int32_t>(atoi(row[10]));
|
||||
e.prev_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.next_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.upper_hotkey_sid = row[1] ? static_cast<int32_t>(atoi(row[1])) : -1;
|
||||
e.lower_hotkey_sid = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.title_sid = row[3] ? static_cast<int32_t>(atoi(row[3])) : -1;
|
||||
e.desc_sid = row[4] ? static_cast<int32_t>(atoi(row[4])) : -1;
|
||||
e.cost = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.level_req = row[6] ? static_cast<int32_t>(atoi(row[6])) : 51;
|
||||
e.spell = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
|
||||
e.spell_type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.recast_time = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.expansion = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.prev_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.next_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : -1;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -367,19 +368,19 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AaRanks e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.upper_hotkey_sid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.lower_hotkey_sid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.title_sid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.desc_sid = static_cast<int32_t>(atoi(row[4]));
|
||||
e.cost = static_cast<int32_t>(atoi(row[5]));
|
||||
e.level_req = static_cast<int32_t>(atoi(row[6]));
|
||||
e.spell = static_cast<int32_t>(atoi(row[7]));
|
||||
e.spell_type = static_cast<int32_t>(atoi(row[8]));
|
||||
e.recast_time = static_cast<int32_t>(atoi(row[9]));
|
||||
e.expansion = static_cast<int32_t>(atoi(row[10]));
|
||||
e.prev_id = static_cast<int32_t>(atoi(row[11]));
|
||||
e.next_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.upper_hotkey_sid = row[1] ? static_cast<int32_t>(atoi(row[1])) : -1;
|
||||
e.lower_hotkey_sid = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.title_sid = row[3] ? static_cast<int32_t>(atoi(row[3])) : -1;
|
||||
e.desc_sid = row[4] ? static_cast<int32_t>(atoi(row[4])) : -1;
|
||||
e.cost = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.level_req = row[6] ? static_cast<int32_t>(atoi(row[6])) : 51;
|
||||
e.spell = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
|
||||
e.spell_type = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.recast_time = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.expansion = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.prev_id = row[11] ? static_cast<int32_t>(atoi(row[11])) : -1;
|
||||
e.next_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : -1;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -438,6 +439,86 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
account_flags_id
|
||||
)
|
||||
);
|
||||
@@ -122,7 +123,7 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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_value = row[2] ? row[2] : "";
|
||||
|
||||
@@ -250,7 +251,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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_value = row[2] ? row[2] : "";
|
||||
|
||||
@@ -277,7 +278,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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_value = row[2] ? row[2] : "";
|
||||
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
account_ip_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AccountIp e{};
|
||||
|
||||
e.accid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.accid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.ip = row[1] ? row[1] : "";
|
||||
e.count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.lastused = row[3] ? row[3] : "";
|
||||
e.count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 1;
|
||||
e.lastused = row[3] ? row[3] : std::time(nullptr);
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -258,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AccountIp e{};
|
||||
|
||||
e.accid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.accid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.ip = row[1] ? row[1] : "";
|
||||
e.count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.lastused = row[3] ? row[3] : "";
|
||||
e.count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 1;
|
||||
e.lastused = row[3] ? row[3] : std::time(nullptr);
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -286,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AccountIp e{};
|
||||
|
||||
e.accid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.accid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.ip = row[1] ? row[1] : "";
|
||||
e.count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.lastused = row[3] ? row[3] : "";
|
||||
e.count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 1;
|
||||
e.lastused = row[3] ? row[3] : std::time(nullptr);
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -348,6 +349,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseAccountRepository {
|
||||
public:
|
||||
struct Account {
|
||||
@@ -208,25 +207,25 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Account e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
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.status = static_cast<int32_t>(atoi(row[5]));
|
||||
e.ls_id = row[6] ? row[6] : "";
|
||||
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
|
||||
e.invulnerable = static_cast<int8_t>(atoi(row[9]));
|
||||
e.flymode = static_cast<int8_t>(atoi(row[10]));
|
||||
e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
|
||||
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.status = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.ls_id = row[6] ? row[6] : "eqemu";
|
||||
e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.invulnerable = row[9] ? static_cast<int8_t>(atoi(row[9])) : 0;
|
||||
e.flymode = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.ignore_tells = row[11] ? static_cast<int8_t>(atoi(row[11])) : 0;
|
||||
e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.minilogin_ip = row[14] ? row[14] : "";
|
||||
e.hideme = static_cast<int8_t>(atoi(row[15]));
|
||||
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
|
||||
e.hideme = row[15] ? static_cast<int8_t>(atoi(row[15])) : 0;
|
||||
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.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.suspend_reason = row[20] ? row[20] : "";
|
||||
e.crc_eqgame = row[21] ? row[21] : "";
|
||||
@@ -419,25 +418,25 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Account e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
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.status = static_cast<int32_t>(atoi(row[5]));
|
||||
e.ls_id = row[6] ? row[6] : "";
|
||||
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
|
||||
e.invulnerable = static_cast<int8_t>(atoi(row[9]));
|
||||
e.flymode = static_cast<int8_t>(atoi(row[10]));
|
||||
e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
|
||||
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.status = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.ls_id = row[6] ? row[6] : "eqemu";
|
||||
e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.invulnerable = row[9] ? static_cast<int8_t>(atoi(row[9])) : 0;
|
||||
e.flymode = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.ignore_tells = row[11] ? static_cast<int8_t>(atoi(row[11])) : 0;
|
||||
e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.minilogin_ip = row[14] ? row[14] : "";
|
||||
e.hideme = static_cast<int8_t>(atoi(row[15]));
|
||||
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
|
||||
e.hideme = row[15] ? static_cast<int8_t>(atoi(row[15])) : 0;
|
||||
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.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.suspend_reason = row[20] ? row[20] : "";
|
||||
e.crc_eqgame = row[21] ? row[21] : "";
|
||||
@@ -467,25 +466,25 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Account e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
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.status = static_cast<int32_t>(atoi(row[5]));
|
||||
e.ls_id = row[6] ? row[6] : "";
|
||||
e.lsaccount_id = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.gmspeed = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
|
||||
e.invulnerable = static_cast<int8_t>(atoi(row[9]));
|
||||
e.flymode = static_cast<int8_t>(atoi(row[10]));
|
||||
e.ignore_tells = static_cast<int8_t>(atoi(row[11]));
|
||||
e.revoked = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.karma = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.status = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.ls_id = row[6] ? row[6] : "eqemu";
|
||||
e.lsaccount_id = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.gmspeed = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.invulnerable = row[9] ? static_cast<int8_t>(atoi(row[9])) : 0;
|
||||
e.flymode = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
|
||||
e.ignore_tells = row[11] ? static_cast<int8_t>(atoi(row[11])) : 0;
|
||||
e.revoked = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.karma = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.minilogin_ip = row[14] ? row[14] : "";
|
||||
e.hideme = static_cast<int8_t>(atoi(row[15]));
|
||||
e.rulesflag = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
|
||||
e.hideme = row[15] ? static_cast<int8_t>(atoi(row[15])) : 0;
|
||||
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.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.suspend_reason = row[20] ? row[20] : "";
|
||||
e.crc_eqgame = row[21] ? row[21] : "";
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
account_rewards_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AccountRewards e{};
|
||||
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -250,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AccountRewards e{};
|
||||
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -277,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AccountRewards e{};
|
||||
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.reward_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.reward_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -136,8 +136,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_details_id
|
||||
)
|
||||
);
|
||||
@@ -146,15 +147,15 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AdventureDetails e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -297,15 +298,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureDetails e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -330,15 +331,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureDetails e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.adventure_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.count = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.assassinate_count = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.status = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.time_created = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.time_zoned = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.time_completed = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.adventure_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.count = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.assassinate_count = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.time_created = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.time_zoned = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.time_completed = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -397,6 +398,78 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_members_id
|
||||
)
|
||||
);
|
||||
@@ -118,8 +119,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AdventureMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -242,8 +243,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -268,8 +269,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -144,8 +144,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_stats_id
|
||||
)
|
||||
);
|
||||
@@ -154,17 +155,17 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AdventureStats e{};
|
||||
|
||||
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -314,17 +315,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureStats e{};
|
||||
|
||||
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -349,17 +350,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureStats e{};
|
||||
|
||||
e.player_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.guk_wins = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mir_wins = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.mmc_wins = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.ruj_wins = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.tak_wins = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.guk_losses = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.mir_losses = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.mmc_losses = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.ruj_losses = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.tak_losses = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.player_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.guk_wins = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mir_wins = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.mmc_wins = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.ruj_wins = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.tak_wins = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.guk_losses = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.mir_losses = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.mmc_losses = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.ruj_losses = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.tak_losses = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -418,6 +419,82 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_template_entry_flavor_id
|
||||
)
|
||||
);
|
||||
@@ -118,7 +119,7 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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] : "";
|
||||
|
||||
return e;
|
||||
@@ -242,7 +243,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -268,7 +269,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_template_entry_id
|
||||
)
|
||||
);
|
||||
@@ -118,8 +119,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AdventureTemplateEntry e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -242,8 +243,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureTemplateEntry e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -268,8 +269,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AdventureTemplateEntry e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.template_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.template_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -232,8 +232,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
adventure_template_id
|
||||
)
|
||||
);
|
||||
@@ -242,38 +243,38 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
|
||||
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10));
|
||||
e.assa_x = strtof(row[10], nullptr);
|
||||
e.assa_y = strtof(row[11], nullptr);
|
||||
e.assa_z = strtof(row[12], nullptr);
|
||||
e.assa_h = strtof(row[13], nullptr);
|
||||
e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
|
||||
e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
|
||||
e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.text = row[14] ? row[14] : "";
|
||||
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10));
|
||||
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10));
|
||||
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
|
||||
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10));
|
||||
e.zone_in_x = strtof(row[21], nullptr);
|
||||
e.zone_in_y = strtof(row[22], nullptr);
|
||||
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
|
||||
e.dest_x = strtof(row[24], nullptr);
|
||||
e.dest_y = strtof(row[25], nullptr);
|
||||
e.dest_z = strtof(row[26], nullptr);
|
||||
e.dest_h = strtof(row[27], nullptr);
|
||||
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.graveyard_x = strtof(row[29], nullptr);
|
||||
e.graveyard_y = strtof(row[30], nullptr);
|
||||
e.graveyard_z = strtof(row[31], nullptr);
|
||||
e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
|
||||
e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
|
||||
e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
|
||||
e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.zone_in_object_id = row[23] ? static_cast<int16_t>(atoi(row[23])) : 0;
|
||||
e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
|
||||
e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
|
||||
e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
|
||||
e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
|
||||
e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
|
||||
e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -489,38 +490,38 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
|
||||
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10));
|
||||
e.assa_x = strtof(row[10], nullptr);
|
||||
e.assa_y = strtof(row[11], nullptr);
|
||||
e.assa_z = strtof(row[12], nullptr);
|
||||
e.assa_h = strtof(row[13], nullptr);
|
||||
e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
|
||||
e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
|
||||
e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.text = row[14] ? row[14] : "";
|
||||
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10));
|
||||
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10));
|
||||
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
|
||||
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10));
|
||||
e.zone_in_x = strtof(row[21], nullptr);
|
||||
e.zone_in_y = strtof(row[22], nullptr);
|
||||
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
|
||||
e.dest_x = strtof(row[24], nullptr);
|
||||
e.dest_y = strtof(row[25], nullptr);
|
||||
e.dest_z = strtof(row[26], nullptr);
|
||||
e.dest_h = strtof(row[27], nullptr);
|
||||
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.graveyard_x = strtof(row[29], nullptr);
|
||||
e.graveyard_y = strtof(row[30], nullptr);
|
||||
e.graveyard_z = strtof(row[31], nullptr);
|
||||
e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
|
||||
e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
|
||||
e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
|
||||
e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.zone_in_object_id = row[23] ? static_cast<int16_t>(atoi(row[23])) : 0;
|
||||
e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
|
||||
e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
|
||||
e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
|
||||
e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
|
||||
e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
|
||||
e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -545,38 +546,38 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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_version = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_hard = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.is_raid = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.min_level = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.max_level = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
|
||||
e.type_data = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.type_count = static_cast<uint16_t>(strtoul(row[9], nullptr, 10));
|
||||
e.assa_x = strtof(row[10], nullptr);
|
||||
e.assa_y = strtof(row[11], nullptr);
|
||||
e.assa_z = strtof(row[12], nullptr);
|
||||
e.assa_h = strtof(row[13], nullptr);
|
||||
e.zone_version = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.is_hard = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.is_raid = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.min_level = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 1;
|
||||
e.max_level = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 65;
|
||||
e.type = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.type_data = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.type_count = row[9] ? static_cast<uint16_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.assa_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.assa_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.assa_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.assa_h = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.text = row[14] ? row[14] : "";
|
||||
e.duration = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.zone_in_time = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.win_points = static_cast<uint16_t>(strtoul(row[17], nullptr, 10));
|
||||
e.lose_points = static_cast<uint16_t>(strtoul(row[18], nullptr, 10));
|
||||
e.theme = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
|
||||
e.zone_in_zone_id = static_cast<uint16_t>(strtoul(row[20], nullptr, 10));
|
||||
e.zone_in_x = strtof(row[21], nullptr);
|
||||
e.zone_in_y = strtof(row[22], nullptr);
|
||||
e.zone_in_object_id = static_cast<int16_t>(atoi(row[23]));
|
||||
e.dest_x = strtof(row[24], nullptr);
|
||||
e.dest_y = strtof(row[25], nullptr);
|
||||
e.dest_z = strtof(row[26], nullptr);
|
||||
e.dest_h = strtof(row[27], nullptr);
|
||||
e.graveyard_zone_id = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.graveyard_x = strtof(row[29], nullptr);
|
||||
e.graveyard_y = strtof(row[30], nullptr);
|
||||
e.graveyard_z = strtof(row[31], nullptr);
|
||||
e.duration = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 7200;
|
||||
e.zone_in_time = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 1800;
|
||||
e.win_points = row[17] ? static_cast<uint16_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.lose_points = row[18] ? static_cast<uint16_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.theme = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 1;
|
||||
e.zone_in_zone_id = row[20] ? static_cast<uint16_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.zone_in_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.zone_in_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.zone_in_object_id = row[23] ? static_cast<int16_t>(atoi(row[23])) : 0;
|
||||
e.dest_x = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.dest_y = row[25] ? strtof(row[25], nullptr) : 0;
|
||||
e.dest_z = row[26] ? strtof(row[26], nullptr) : 0;
|
||||
e.dest_h = row[27] ? strtof(row[27], nullptr) : 0;
|
||||
e.graveyard_zone_id = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.graveyard_x = row[29] ? strtof(row[29], nullptr) : 0;
|
||||
e.graveyard_y = row[30] ? strtof(row[30], nullptr) : 0;
|
||||
e.graveyard_z = row[31] ? strtof(row[31], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -635,6 +636,126 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
alternate_currency_id
|
||||
)
|
||||
);
|
||||
@@ -118,8 +119,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
AlternateCurrency e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.item_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -242,8 +243,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AlternateCurrency e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.item_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -268,8 +269,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
AlternateCurrency e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.item_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -144,8 +144,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
auras_id
|
||||
)
|
||||
);
|
||||
@@ -154,17 +155,17 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Auras e{};
|
||||
|
||||
e.type = static_cast<int32_t>(atoi(row[0]));
|
||||
e.npc_type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.npc_type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.distance = static_cast<int32_t>(atoi(row[4]));
|
||||
e.aura_type = static_cast<int32_t>(atoi(row[5]));
|
||||
e.spawn_type = static_cast<int32_t>(atoi(row[6]));
|
||||
e.movement = static_cast<int32_t>(atoi(row[7]));
|
||||
e.duration = static_cast<int32_t>(atoi(row[8]));
|
||||
e.icon = static_cast<int32_t>(atoi(row[9]));
|
||||
e.cast_time = static_cast<int32_t>(atoi(row[10]));
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.distance = row[4] ? static_cast<int32_t>(atoi(row[4])) : 60;
|
||||
e.aura_type = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.spawn_type = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.movement = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.duration = row[8] ? static_cast<int32_t>(atoi(row[8])) : 5400;
|
||||
e.icon = row[9] ? static_cast<int32_t>(atoi(row[9])) : -1;
|
||||
e.cast_time = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -314,17 +315,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Auras e{};
|
||||
|
||||
e.type = static_cast<int32_t>(atoi(row[0]));
|
||||
e.npc_type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.npc_type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.distance = static_cast<int32_t>(atoi(row[4]));
|
||||
e.aura_type = static_cast<int32_t>(atoi(row[5]));
|
||||
e.spawn_type = static_cast<int32_t>(atoi(row[6]));
|
||||
e.movement = static_cast<int32_t>(atoi(row[7]));
|
||||
e.duration = static_cast<int32_t>(atoi(row[8]));
|
||||
e.icon = static_cast<int32_t>(atoi(row[9]));
|
||||
e.cast_time = static_cast<int32_t>(atoi(row[10]));
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.distance = row[4] ? static_cast<int32_t>(atoi(row[4])) : 60;
|
||||
e.aura_type = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.spawn_type = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.movement = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.duration = row[8] ? static_cast<int32_t>(atoi(row[8])) : 5400;
|
||||
e.icon = row[9] ? static_cast<int32_t>(atoi(row[9])) : -1;
|
||||
e.cast_time = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -349,17 +350,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Auras e{};
|
||||
|
||||
e.type = static_cast<int32_t>(atoi(row[0]));
|
||||
e.npc_type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.npc_type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.distance = static_cast<int32_t>(atoi(row[4]));
|
||||
e.aura_type = static_cast<int32_t>(atoi(row[5]));
|
||||
e.spawn_type = static_cast<int32_t>(atoi(row[6]));
|
||||
e.movement = static_cast<int32_t>(atoi(row[7]));
|
||||
e.duration = static_cast<int32_t>(atoi(row[8]));
|
||||
e.icon = static_cast<int32_t>(atoi(row[9]));
|
||||
e.cast_time = static_cast<int32_t>(atoi(row[10]));
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.distance = row[4] ? static_cast<int32_t>(atoi(row[4])) : 60;
|
||||
e.aura_type = row[5] ? static_cast<int32_t>(atoi(row[5])) : 1;
|
||||
e.spawn_type = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.movement = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.duration = row[8] ? static_cast<int32_t>(atoi(row[8])) : 5400;
|
||||
e.icon = row[9] ? static_cast<int32_t>(atoi(row[9])) : -1;
|
||||
e.cast_time = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -418,6 +419,82 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -140,8 +140,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
base_data_id
|
||||
)
|
||||
);
|
||||
@@ -150,16 +151,16 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
BaseData e{};
|
||||
|
||||
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.hp = strtod(row[2], nullptr);
|
||||
e.mana = strtod(row[3], nullptr);
|
||||
e.end = strtod(row[4], nullptr);
|
||||
e.unk1 = strtod(row[5], nullptr);
|
||||
e.unk2 = strtod(row[6], nullptr);
|
||||
e.hp_fac = strtod(row[7], nullptr);
|
||||
e.mana_fac = strtod(row[8], nullptr);
|
||||
e.end_fac = strtod(row[9], nullptr);
|
||||
e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.hp = row[2] ? strtod(row[2], nullptr) : 0;
|
||||
e.mana = row[3] ? strtod(row[3], nullptr) : 0;
|
||||
e.end = row[4] ? strtod(row[4], nullptr) : 0;
|
||||
e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
|
||||
e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
|
||||
e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
|
||||
e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
|
||||
e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -306,16 +307,16 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BaseData e{};
|
||||
|
||||
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.hp = strtod(row[2], nullptr);
|
||||
e.mana = strtod(row[3], nullptr);
|
||||
e.end = strtod(row[4], nullptr);
|
||||
e.unk1 = strtod(row[5], nullptr);
|
||||
e.unk2 = strtod(row[6], nullptr);
|
||||
e.hp_fac = strtod(row[7], nullptr);
|
||||
e.mana_fac = strtod(row[8], nullptr);
|
||||
e.end_fac = strtod(row[9], nullptr);
|
||||
e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.hp = row[2] ? strtod(row[2], nullptr) : 0;
|
||||
e.mana = row[3] ? strtod(row[3], nullptr) : 0;
|
||||
e.end = row[4] ? strtod(row[4], nullptr) : 0;
|
||||
e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
|
||||
e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
|
||||
e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
|
||||
e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
|
||||
e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -340,16 +341,16 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BaseData e{};
|
||||
|
||||
e.level = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.hp = strtod(row[2], nullptr);
|
||||
e.mana = strtod(row[3], nullptr);
|
||||
e.end = strtod(row[4], nullptr);
|
||||
e.unk1 = strtod(row[5], nullptr);
|
||||
e.unk2 = strtod(row[6], nullptr);
|
||||
e.hp_fac = strtod(row[7], nullptr);
|
||||
e.mana_fac = strtod(row[8], nullptr);
|
||||
e.end_fac = strtod(row[9], nullptr);
|
||||
e.level = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.class_ = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.hp = row[2] ? strtod(row[2], nullptr) : 0;
|
||||
e.mana = row[3] ? strtod(row[3], nullptr) : 0;
|
||||
e.end = row[4] ? strtod(row[4], nullptr) : 0;
|
||||
e.unk1 = row[5] ? strtod(row[5], nullptr) : 0;
|
||||
e.unk2 = row[6] ? strtod(row[6], nullptr) : 0;
|
||||
e.hp_fac = row[7] ? strtod(row[7], nullptr) : 0;
|
||||
e.mana_fac = row[8] ? strtod(row[8], nullptr) : 0;
|
||||
e.end_fac = row[9] ? strtod(row[9], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -408,6 +409,80 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseBlockedSpellsRepository {
|
||||
public:
|
||||
struct BlockedSpells {
|
||||
@@ -176,20 +175,20 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
BlockedSpells e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[2]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x_diff = strtof(row[7], nullptr);
|
||||
e.y_diff = strtof(row[8], nullptr);
|
||||
e.z_diff = strtof(row[9], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.type = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.zoneid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.message = row[10] ? row[10] : "";
|
||||
e.description = row[11] ? row[11] : "";
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[12]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.min_expansion = row[12] ? static_cast<int8_t>(atoi(row[12])) : -1;
|
||||
e.max_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.content_flags = row[14] ? row[14] : "";
|
||||
e.content_flags_disabled = row[15] ? row[15] : "";
|
||||
|
||||
@@ -355,20 +354,20 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BlockedSpells e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[2]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x_diff = strtof(row[7], nullptr);
|
||||
e.y_diff = strtof(row[8], nullptr);
|
||||
e.z_diff = strtof(row[9], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.type = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.zoneid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.message = row[10] ? row[10] : "";
|
||||
e.description = row[11] ? row[11] : "";
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[12]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.min_expansion = row[12] ? static_cast<int8_t>(atoi(row[12])) : -1;
|
||||
e.max_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.content_flags = row[14] ? row[14] : "";
|
||||
e.content_flags_disabled = row[15] ? row[15] : "";
|
||||
|
||||
@@ -395,20 +394,20 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BlockedSpells e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[2]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x_diff = strtof(row[7], nullptr);
|
||||
e.y_diff = strtof(row[8], nullptr);
|
||||
e.z_diff = strtof(row[9], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.spellid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.type = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.zoneid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.x_diff = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.y_diff = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.z_diff = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.message = row[10] ? row[10] : "";
|
||||
e.description = row[11] ? row[11] : "";
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[12]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.min_expansion = row[12] ? static_cast<int8_t>(atoi(row[12])) : -1;
|
||||
e.max_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.content_flags = row[14] ? row[14] : "";
|
||||
e.content_flags_disabled = row[15] ? row[15] : "";
|
||||
|
||||
@@ -469,6 +468,92 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
books_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Books e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.txtfile = row[2] ? row[2] : "";
|
||||
e.language = static_cast<int32_t>(atoi(row[3]));
|
||||
e.language = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -257,10 +258,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Books e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.txtfile = row[2] ? row[2] : "";
|
||||
e.language = static_cast<int32_t>(atoi(row[3]));
|
||||
e.language = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -285,10 +286,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Books e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.txtfile = row[2] ? row[2] : "";
|
||||
e.language = static_cast<int32_t>(atoi(row[3]));
|
||||
e.language = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -347,6 +348,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -228,8 +228,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
bug_reports_id
|
||||
)
|
||||
);
|
||||
@@ -238,37 +239,37 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
BugReports e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone = row[1] ? row[1] : "";
|
||||
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.client_version_name = row[3] ? row[3] : "";
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.character_name = row[6] ? row[6] : "";
|
||||
e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
|
||||
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.category_name = row[9] ? row[9] : "";
|
||||
e.reporter_name = row[10] ? row[10] : "";
|
||||
e.ui_path = row[11] ? row[11] : "";
|
||||
e.pos_x = strtof(row[12], nullptr);
|
||||
e.pos_y = strtof(row[13], nullptr);
|
||||
e.pos_z = strtof(row[14], nullptr);
|
||||
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.target_name = row[18] ? row[18] : "";
|
||||
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
|
||||
e._crash_bug = static_cast<int8_t>(atoi(row[21]));
|
||||
e._target_info = static_cast<int8_t>(atoi(row[22]));
|
||||
e._character_flags = static_cast<int8_t>(atoi(row[23]));
|
||||
e._unknown_value = static_cast<int8_t>(atoi(row[24]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone = row[1] ? row[1] : "Unknown";
|
||||
e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.client_version_name = row[3] ? row[3] : "Unknown";
|
||||
e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.character_name = row[6] ? row[6] : "Unknown";
|
||||
e.reporter_spoof = row[7] ? static_cast<int8_t>(atoi(row[7])) : 1;
|
||||
e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.category_name = row[9] ? row[9] : "Other";
|
||||
e.reporter_name = row[10] ? row[10] : "Unknown";
|
||||
e.ui_path = row[11] ? row[11] : "Unknown";
|
||||
e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.target_name = row[18] ? row[18] : "Unknown";
|
||||
e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e._can_duplicate = row[20] ? static_cast<int8_t>(atoi(row[20])) : 0;
|
||||
e._crash_bug = row[21] ? static_cast<int8_t>(atoi(row[21])) : 0;
|
||||
e._target_info = row[22] ? static_cast<int8_t>(atoi(row[22])) : 0;
|
||||
e._character_flags = row[23] ? static_cast<int8_t>(atoi(row[23])) : 0;
|
||||
e._unknown_value = row[24] ? static_cast<int8_t>(atoi(row[24])) : 0;
|
||||
e.bug_report = row[25] ? row[25] : "";
|
||||
e.system_info = row[26] ? row[26] : "";
|
||||
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_reviewer = row[30] ? row[30] : "";
|
||||
e.last_reviewer = row[30] ? row[30] : "None";
|
||||
e.reviewer_notes = row[31] ? row[31] : "";
|
||||
|
||||
return e;
|
||||
@@ -481,37 +482,37 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BugReports e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone = row[1] ? row[1] : "";
|
||||
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.client_version_name = row[3] ? row[3] : "";
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.character_name = row[6] ? row[6] : "";
|
||||
e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
|
||||
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.category_name = row[9] ? row[9] : "";
|
||||
e.reporter_name = row[10] ? row[10] : "";
|
||||
e.ui_path = row[11] ? row[11] : "";
|
||||
e.pos_x = strtof(row[12], nullptr);
|
||||
e.pos_y = strtof(row[13], nullptr);
|
||||
e.pos_z = strtof(row[14], nullptr);
|
||||
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.target_name = row[18] ? row[18] : "";
|
||||
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
|
||||
e._crash_bug = static_cast<int8_t>(atoi(row[21]));
|
||||
e._target_info = static_cast<int8_t>(atoi(row[22]));
|
||||
e._character_flags = static_cast<int8_t>(atoi(row[23]));
|
||||
e._unknown_value = static_cast<int8_t>(atoi(row[24]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone = row[1] ? row[1] : "Unknown";
|
||||
e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.client_version_name = row[3] ? row[3] : "Unknown";
|
||||
e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.character_name = row[6] ? row[6] : "Unknown";
|
||||
e.reporter_spoof = row[7] ? static_cast<int8_t>(atoi(row[7])) : 1;
|
||||
e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.category_name = row[9] ? row[9] : "Other";
|
||||
e.reporter_name = row[10] ? row[10] : "Unknown";
|
||||
e.ui_path = row[11] ? row[11] : "Unknown";
|
||||
e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.target_name = row[18] ? row[18] : "Unknown";
|
||||
e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e._can_duplicate = row[20] ? static_cast<int8_t>(atoi(row[20])) : 0;
|
||||
e._crash_bug = row[21] ? static_cast<int8_t>(atoi(row[21])) : 0;
|
||||
e._target_info = row[22] ? static_cast<int8_t>(atoi(row[22])) : 0;
|
||||
e._character_flags = row[23] ? static_cast<int8_t>(atoi(row[23])) : 0;
|
||||
e._unknown_value = row[24] ? static_cast<int8_t>(atoi(row[24])) : 0;
|
||||
e.bug_report = row[25] ? row[25] : "";
|
||||
e.system_info = row[26] ? row[26] : "";
|
||||
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_reviewer = row[30] ? row[30] : "";
|
||||
e.last_reviewer = row[30] ? row[30] : "None";
|
||||
e.reviewer_notes = row[31] ? row[31] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -537,37 +538,37 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
BugReports e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone = row[1] ? row[1] : "";
|
||||
e.client_version_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.client_version_name = row[3] ? row[3] : "";
|
||||
e.account_id = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.character_name = row[6] ? row[6] : "";
|
||||
e.reporter_spoof = static_cast<int8_t>(atoi(row[7]));
|
||||
e.category_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.category_name = row[9] ? row[9] : "";
|
||||
e.reporter_name = row[10] ? row[10] : "";
|
||||
e.ui_path = row[11] ? row[11] : "";
|
||||
e.pos_x = strtof(row[12], nullptr);
|
||||
e.pos_y = strtof(row[13], nullptr);
|
||||
e.pos_z = strtof(row[14], nullptr);
|
||||
e.heading = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.target_id = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.target_name = row[18] ? row[18] : "";
|
||||
e.optional_info_mask = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e._can_duplicate = static_cast<int8_t>(atoi(row[20]));
|
||||
e._crash_bug = static_cast<int8_t>(atoi(row[21]));
|
||||
e._target_info = static_cast<int8_t>(atoi(row[22]));
|
||||
e._character_flags = static_cast<int8_t>(atoi(row[23]));
|
||||
e._unknown_value = static_cast<int8_t>(atoi(row[24]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone = row[1] ? row[1] : "Unknown";
|
||||
e.client_version_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.client_version_name = row[3] ? row[3] : "Unknown";
|
||||
e.account_id = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.character_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.character_name = row[6] ? row[6] : "Unknown";
|
||||
e.reporter_spoof = row[7] ? static_cast<int8_t>(atoi(row[7])) : 1;
|
||||
e.category_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.category_name = row[9] ? row[9] : "Other";
|
||||
e.reporter_name = row[10] ? row[10] : "Unknown";
|
||||
e.ui_path = row[11] ? row[11] : "Unknown";
|
||||
e.pos_x = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.pos_y = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.pos_z = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.heading = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.time_played = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.target_id = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.target_name = row[18] ? row[18] : "Unknown";
|
||||
e.optional_info_mask = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e._can_duplicate = row[20] ? static_cast<int8_t>(atoi(row[20])) : 0;
|
||||
e._crash_bug = row[21] ? static_cast<int8_t>(atoi(row[21])) : 0;
|
||||
e._target_info = row[22] ? static_cast<int8_t>(atoi(row[22])) : 0;
|
||||
e._character_flags = row[23] ? static_cast<int8_t>(atoi(row[23])) : 0;
|
||||
e._unknown_value = row[24] ? static_cast<int8_t>(atoi(row[24])) : 0;
|
||||
e.bug_report = row[25] ? row[25] : "";
|
||||
e.system_info = row[26] ? row[26] : "";
|
||||
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_reviewer = row[30] ? row[30] : "";
|
||||
e.last_reviewer = row[30] ? row[30] : "None";
|
||||
e.reviewer_notes = row[31] ? row[31] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -627,6 +628,124 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -152,8 +152,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
bugs_id
|
||||
)
|
||||
);
|
||||
@@ -162,19 +163,19 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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.name = row[2] ? row[2] : "";
|
||||
e.ui = row[3] ? row[3] : "";
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
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.bug = row[10] ? row[10] : "";
|
||||
e.date = row[11] ? row[11] : "";
|
||||
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.date = row[11] ? row[11] : 0;
|
||||
e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -329,19 +330,19 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.name = row[2] ? row[2] : "";
|
||||
e.ui = row[3] ? row[3] : "";
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
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.bug = row[10] ? row[10] : "";
|
||||
e.date = row[11] ? row[11] : "";
|
||||
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.date = row[11] ? row[11] : 0;
|
||||
e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -366,19 +367,19 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.name = row[2] ? row[2] : "";
|
||||
e.ui = row[3] ? row[3] : "";
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
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.bug = row[10] ? row[10] : "";
|
||||
e.date = row[11] ? row[11] : "";
|
||||
e.status = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.date = row[11] ? row[11] : 0;
|
||||
e.status = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -437,6 +438,86 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
buyer_id
|
||||
)
|
||||
);
|
||||
@@ -134,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Buyer e{};
|
||||
|
||||
e.charid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.buyslot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.charid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.buyslot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.itemname = row[3] ? row[3] : "";
|
||||
e.quantity = static_cast<int32_t>(atoi(row[4]));
|
||||
e.price = static_cast<int32_t>(atoi(row[5]));
|
||||
e.quantity = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.price = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -274,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Buyer e{};
|
||||
|
||||
e.charid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.buyslot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.charid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.buyslot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.itemname = row[3] ? row[3] : "";
|
||||
e.quantity = static_cast<int32_t>(atoi(row[4]));
|
||||
e.price = static_cast<int32_t>(atoi(row[5]));
|
||||
e.quantity = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.price = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -304,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Buyer e{};
|
||||
|
||||
e.charid = static_cast<int32_t>(atoi(row[0]));
|
||||
e.buyslot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.charid = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.buyslot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.itemname = row[3] ? row[3] : "";
|
||||
e.quantity = static_cast<int32_t>(atoi(row[4]));
|
||||
e.price = static_cast<int32_t>(atoi(row[5]));
|
||||
e.quantity = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.price = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -368,6 +369,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
char_create_combinations_id
|
||||
)
|
||||
);
|
||||
@@ -134,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharCreateCombinations e{};
|
||||
|
||||
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -274,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharCreateCombinations e{};
|
||||
|
||||
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -304,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharCreateCombinations e{};
|
||||
|
||||
e.allocation_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.start_zone = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.expansions_req = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.allocation_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.race = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.class_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.deity = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.start_zone = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.expansions_req = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -368,6 +369,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -160,8 +160,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
char_create_point_allocations_id
|
||||
)
|
||||
);
|
||||
@@ -170,21 +171,21 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharCreatePointAllocations e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -346,21 +347,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharCreatePointAllocations e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -385,21 +386,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharCreatePointAllocations e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.base_str = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.base_sta = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.base_dex = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.base_agi = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.base_int = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.base_wis = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.base_cha = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.alloc_str = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.alloc_sta = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.alloc_dex = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.alloc_agi = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.alloc_int = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.alloc_wis = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.alloc_cha = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.base_str = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.base_sta = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.base_dex = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.base_agi = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.base_int = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.base_wis = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.base_cha = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.alloc_str = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.alloc_sta = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.alloc_dex = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.alloc_agi = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.alloc_int = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.alloc_wis = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.alloc_cha = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -458,6 +459,90 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
char_recipe_list_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharRecipeList e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.recipe_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.madecount = static_cast<int32_t>(atoi(row[2]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.recipe_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.madecount = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -250,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharRecipeList e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.recipe_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.madecount = static_cast<int32_t>(atoi(row[2]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.recipe_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.madecount = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -277,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharRecipeList e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.recipe_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.madecount = static_cast<int32_t>(atoi(row[2]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.recipe_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.madecount = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -120,8 +120,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_activities_id
|
||||
)
|
||||
);
|
||||
@@ -130,11 +131,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterActivities e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.completed = static_cast<int8_t>(atoi(row[4]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.completed = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -266,11 +267,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterActivities e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.completed = static_cast<int8_t>(atoi(row[4]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.completed = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -295,11 +296,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterActivities e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.activityid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.donecount = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.completed = static_cast<int8_t>(atoi(row[4]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.activityid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.donecount = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.completed = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -358,6 +359,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterAltCurrencyRepository {
|
||||
public:
|
||||
struct CharacterAltCurrency {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterAltCurrency e{};
|
||||
|
||||
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAltCurrency e{};
|
||||
|
||||
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAltCurrency e{};
|
||||
|
||||
e.char_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.currency_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.amount = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.char_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.currency_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.amount = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterAlternateAbilitiesRepository {
|
||||
public:
|
||||
struct CharacterAlternateAbilities {
|
||||
@@ -128,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterAlternateAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -260,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAlternateAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -288,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAlternateAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.aa_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.aa_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint16_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.aa_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.aa_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint16_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterAurasRepository {
|
||||
public:
|
||||
struct CharacterAuras {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterAuras e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.slot = static_cast<int8_t>(atoi(row[1]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.slot = row[1] ? static_cast<int8_t>(atoi(row[1])) : 0;
|
||||
e.spell_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAuras e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.slot = static_cast<int8_t>(atoi(row[1]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.slot = row[1] ? static_cast<int8_t>(atoi(row[1])) : 0;
|
||||
e.spell_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterAuras e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.slot = static_cast<int8_t>(atoi(row[1]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.slot = row[1] ? static_cast<int8_t>(atoi(row[1])) : 0;
|
||||
e.spell_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterBandolierRepository {
|
||||
public:
|
||||
struct CharacterBandolier {
|
||||
@@ -136,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterBandolier e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.bandolier_name = row[5] ? row[5] : "";
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.bandolier_name = row[5] ? row[5] : "0";
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -276,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBandolier e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.bandolier_name = row[5] ? row[5] : "";
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.bandolier_name = row[5] ? row[5] : "0";
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -306,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBandolier e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.bandolier_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.bandolier_slot = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.bandolier_name = row[5] ? row[5] : "";
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.bandolier_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.bandolier_slot = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.icon = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.bandolier_name = row[5] ? row[5] : "0";
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterBindRepository {
|
||||
public:
|
||||
struct CharacterBind {
|
||||
@@ -144,14 +143,14 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterBind e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.heading = strtof(row[7], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.heading = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -291,14 +290,14 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBind e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.heading = strtof(row[7], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.heading = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -323,14 +322,14 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBind e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.instance_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.x = strtof(row[4], nullptr);
|
||||
e.y = strtof(row[5], nullptr);
|
||||
e.z = strtof(row[6], nullptr);
|
||||
e.heading = strtof(row[7], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.instance_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.x = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.z = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.heading = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterBuffsRepository {
|
||||
public:
|
||||
struct CharacterBuffs {
|
||||
@@ -180,23 +179,23 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterBuffs e{};
|
||||
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.caster_name = row[4] ? row[4] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
|
||||
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.dot_rune = static_cast<int32_t>(atoi(row[11]));
|
||||
e.caston_x = static_cast<int32_t>(atoi(row[12]));
|
||||
e.caston_y = static_cast<int32_t>(atoi(row[13]));
|
||||
e.caston_z = static_cast<int32_t>(atoi(row[14]));
|
||||
e.ExtraDIChance = static_cast<int32_t>(atoi(row[15]));
|
||||
e.instrument_mod = static_cast<int32_t>(atoi(row[16]));
|
||||
e.ticsremaining = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.dot_rune = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.caston_x = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.caston_y = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.caston_z = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.ExtraDIChance = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.instrument_mod = row[16] ? static_cast<int32_t>(atoi(row[16])) : 10;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -364,23 +363,23 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBuffs e{};
|
||||
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.caster_name = row[4] ? row[4] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
|
||||
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.dot_rune = static_cast<int32_t>(atoi(row[11]));
|
||||
e.caston_x = static_cast<int32_t>(atoi(row[12]));
|
||||
e.caston_y = static_cast<int32_t>(atoi(row[13]));
|
||||
e.caston_z = static_cast<int32_t>(atoi(row[14]));
|
||||
e.ExtraDIChance = static_cast<int32_t>(atoi(row[15]));
|
||||
e.instrument_mod = static_cast<int32_t>(atoi(row[16]));
|
||||
e.ticsremaining = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.dot_rune = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.caston_x = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.caston_y = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.caston_z = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.ExtraDIChance = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.instrument_mod = row[16] ? static_cast<int32_t>(atoi(row[16])) : 10;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -405,23 +404,23 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterBuffs e{};
|
||||
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.caster_name = row[4] ? row[4] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[5]));
|
||||
e.counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.numhits = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.melee_rune = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.magic_rune = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.persistent = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.dot_rune = static_cast<int32_t>(atoi(row[11]));
|
||||
e.caston_x = static_cast<int32_t>(atoi(row[12]));
|
||||
e.caston_y = static_cast<int32_t>(atoi(row[13]));
|
||||
e.caston_z = static_cast<int32_t>(atoi(row[14]));
|
||||
e.ExtraDIChance = static_cast<int32_t>(atoi(row[15]));
|
||||
e.instrument_mod = static_cast<int32_t>(atoi(row[16]));
|
||||
e.ticsremaining = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.numhits = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.melee_rune = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.magic_rune = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.persistent = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.dot_rune = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.caston_x = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.caston_y = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.caston_z = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.ExtraDIChance = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.instrument_mod = row[16] ? static_cast<int32_t>(atoi(row[16])) : 10;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -19,17 +19,21 @@
|
||||
class BaseCharacterCorpseItemsRepository {
|
||||
public:
|
||||
struct CharacterCorpseItems {
|
||||
uint32_t corpse_id;
|
||||
uint32_t equip_slot;
|
||||
uint32_t item_id;
|
||||
uint32_t charges;
|
||||
uint32_t aug_1;
|
||||
uint32_t aug_2;
|
||||
uint32_t aug_3;
|
||||
uint32_t aug_4;
|
||||
uint32_t aug_5;
|
||||
int32_t aug_6;
|
||||
int16_t attuned;
|
||||
uint32_t corpse_id;
|
||||
uint32_t equip_slot;
|
||||
uint32_t item_id;
|
||||
uint32_t charges;
|
||||
uint32_t aug_1;
|
||||
uint32_t aug_2;
|
||||
uint32_t aug_3;
|
||||
uint32_t aug_4;
|
||||
uint32_t aug_5;
|
||||
int32_t aug_6;
|
||||
int16_t attuned;
|
||||
std::string custom_data;
|
||||
uint32_t ornamenticon;
|
||||
uint32_t ornamentidfile;
|
||||
uint32_t ornament_hero_model;
|
||||
};
|
||||
|
||||
static std::string PrimaryKey()
|
||||
@@ -51,6 +55,10 @@ public:
|
||||
"aug_5",
|
||||
"aug_6",
|
||||
"attuned",
|
||||
"custom_data",
|
||||
"ornamenticon",
|
||||
"ornamentidfile",
|
||||
"ornament_hero_model",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -68,6 +76,10 @@ public:
|
||||
"aug_5",
|
||||
"aug_6",
|
||||
"attuned",
|
||||
"custom_data",
|
||||
"ornamenticon",
|
||||
"ornamentidfile",
|
||||
"ornament_hero_model",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -108,17 +120,21 @@ public:
|
||||
{
|
||||
CharacterCorpseItems e{};
|
||||
|
||||
e.corpse_id = 0;
|
||||
e.equip_slot = 0;
|
||||
e.item_id = 0;
|
||||
e.charges = 0;
|
||||
e.aug_1 = 0;
|
||||
e.aug_2 = 0;
|
||||
e.aug_3 = 0;
|
||||
e.aug_4 = 0;
|
||||
e.aug_5 = 0;
|
||||
e.aug_6 = 0;
|
||||
e.attuned = 0;
|
||||
e.corpse_id = 0;
|
||||
e.equip_slot = 0;
|
||||
e.item_id = 0;
|
||||
e.charges = 0;
|
||||
e.aug_1 = 0;
|
||||
e.aug_2 = 0;
|
||||
e.aug_3 = 0;
|
||||
e.aug_4 = 0;
|
||||
e.aug_5 = 0;
|
||||
e.aug_6 = 0;
|
||||
e.attuned = 0;
|
||||
e.custom_data = "";
|
||||
e.ornamenticon = 0;
|
||||
e.ornamentidfile = 0;
|
||||
e.ornament_hero_model = 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -144,8 +160,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_corpse_items_id
|
||||
)
|
||||
);
|
||||
@@ -154,17 +171,21 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterCorpseItems e{};
|
||||
|
||||
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.aug_6 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.attuned = static_cast<int16_t>(atoi(row[10]));
|
||||
e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.aug_6 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.attuned = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
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;
|
||||
}
|
||||
@@ -209,6 +230,10 @@ public:
|
||||
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[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(
|
||||
fmt::format(
|
||||
@@ -241,6 +266,10 @@ public:
|
||||
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(
|
||||
@@ -281,6 +310,10 @@ public:
|
||||
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) + ")");
|
||||
}
|
||||
@@ -314,17 +347,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCorpseItems e{};
|
||||
|
||||
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.aug_6 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.attuned = static_cast<int16_t>(atoi(row[10]));
|
||||
e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.aug_6 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.attuned = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
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);
|
||||
}
|
||||
@@ -349,17 +386,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCorpseItems e{};
|
||||
|
||||
e.corpse_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.equip_slot = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.charges = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.aug_1 = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.aug_2 = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.aug_3 = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.aug_4 = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.aug_5 = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.aug_6 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.attuned = static_cast<int16_t>(atoi(row[10]));
|
||||
e.corpse_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.equip_slot = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.charges = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.aug_1 = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.aug_2 = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.aug_3 = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.aug_4 = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.aug_5 = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.aug_6 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.attuned = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
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);
|
||||
}
|
||||
@@ -418,6 +459,90 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -288,8 +288,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_corpses_id
|
||||
)
|
||||
);
|
||||
@@ -298,53 +299,53 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterCorpses e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.charname = row[2] ? row[2] : "";
|
||||
e.zone_id = static_cast<int16_t>(atoi(row[3]));
|
||||
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.x = strtof(row[5], nullptr);
|
||||
e.y = strtof(row[6], nullptr);
|
||||
e.z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.zone_id = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
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.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
|
||||
e.is_buried = static_cast<int8_t>(atoi(row[12]));
|
||||
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[14]));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10));
|
||||
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10));
|
||||
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10));
|
||||
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10));
|
||||
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
|
||||
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.is_buried = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.was_at_graveyard = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.is_locked = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
|
||||
e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -601,53 +602,53 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCorpses e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.charname = row[2] ? row[2] : "";
|
||||
e.zone_id = static_cast<int16_t>(atoi(row[3]));
|
||||
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.x = strtof(row[5], nullptr);
|
||||
e.y = strtof(row[6], nullptr);
|
||||
e.z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.zone_id = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
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.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
|
||||
e.is_buried = static_cast<int8_t>(atoi(row[12]));
|
||||
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[14]));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10));
|
||||
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10));
|
||||
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10));
|
||||
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10));
|
||||
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
|
||||
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.is_buried = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.was_at_graveyard = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.is_locked = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
|
||||
e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -672,53 +673,53 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCorpses e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.charid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.charname = row[2] ? row[2] : "";
|
||||
e.zone_id = static_cast<int16_t>(atoi(row[3]));
|
||||
e.instance_id = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
|
||||
e.x = strtof(row[5], nullptr);
|
||||
e.y = strtof(row[6], nullptr);
|
||||
e.z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.zone_id = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.instance_id = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
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.is_rezzed = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
|
||||
e.is_buried = static_cast<int8_t>(atoi(row[12]));
|
||||
e.was_at_graveyard = static_cast<int8_t>(atoi(row[13]));
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[14]));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.size = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.race = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.gender = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.class_ = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[21], nullptr, 10));
|
||||
e.texture = static_cast<uint32_t>(strtoul(row[22], nullptr, 10));
|
||||
e.helm_texture = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[24], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[25], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[26], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[27], nullptr, 10));
|
||||
e.hair_color = static_cast<uint32_t>(strtoul(row[28], nullptr, 10));
|
||||
e.beard_color = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.hair_style = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[33], nullptr, 10));
|
||||
e.beard = static_cast<uint32_t>(strtoul(row[34], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[35], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[36], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.wc_1 = static_cast<uint32_t>(strtoul(row[38], nullptr, 10));
|
||||
e.wc_2 = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.wc_3 = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.wc_4 = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.wc_5 = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.wc_6 = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.wc_7 = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.wc_8 = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.wc_9 = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.guild_consent_id = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.is_rezzed = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.is_buried = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.was_at_graveyard = row[13] ? static_cast<int8_t>(atoi(row[13])) : 0;
|
||||
e.is_locked = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
|
||||
e.exp = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.size = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.level = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.race = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.gender = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.class_ = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.deity = row[21] ? static_cast<uint32_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.texture = row[22] ? static_cast<uint32_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.helm_texture = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.copper = row[24] ? static_cast<uint32_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.silver = row[25] ? static_cast<uint32_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.gold = row[26] ? static_cast<uint32_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.platinum = row[27] ? static_cast<uint32_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.hair_color = row[28] ? static_cast<uint32_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.beard_color = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.hair_style = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.face = row[33] ? static_cast<uint32_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.beard = row[34] ? static_cast<uint32_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[35] ? static_cast<uint32_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[36] ? static_cast<uint32_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.wc_1 = row[38] ? static_cast<uint32_t>(strtoul(row[38], nullptr, 10)) : 0;
|
||||
e.wc_2 = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.wc_3 = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.wc_4 = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.wc_5 = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.wc_6 = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.wc_7 = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.wc_8 = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.wc_9 = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -777,6 +778,154 @@ public:
|
||||
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
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterCurrencyRepository {
|
||||
public:
|
||||
struct CharacterCurrency {
|
||||
@@ -180,23 +179,23 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterCurrency e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -364,23 +363,23 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCurrency e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -405,23 +404,23 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterCurrency e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.platinum = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.gold = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.silver = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.copper = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.platinum_bank = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.gold_bank = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.silver_bank = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.copper_bank = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
|
||||
e.platinum_cursor = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
|
||||
e.gold_cursor = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
|
||||
e.silver_cursor = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
|
||||
e.copper_cursor = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
|
||||
e.radiant_crystals = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.career_radiant_crystals = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
|
||||
e.ebon_crystals = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.career_ebon_crystals = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.platinum = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.gold = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.silver = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.copper = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.platinum_bank = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.gold_bank = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.silver_bank = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.copper_bank = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
|
||||
e.platinum_cursor = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.gold_cursor = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
|
||||
e.silver_cursor = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
|
||||
e.copper_cursor = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.radiant_crystals = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.career_radiant_crystals = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.ebon_crystals = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.career_ebon_crystals = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterDataRepository {
|
||||
public:
|
||||
struct CharacterData {
|
||||
@@ -524,108 +523,108 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterData e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.account_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.account_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.last_name = row[3] ? row[3] : "";
|
||||
e.title = row[4] ? row[4] : "";
|
||||
e.suffix = row[5] ? row[5] : "";
|
||||
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.y = strtof(row[8], nullptr);
|
||||
e.x = strtof(row[9], nullptr);
|
||||
e.z = strtof(row[10], nullptr);
|
||||
e.heading = strtof(row[11], nullptr);
|
||||
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
|
||||
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
|
||||
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
|
||||
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
|
||||
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
|
||||
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
|
||||
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
|
||||
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
|
||||
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
|
||||
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.exp_enabled = static_cast<uint8_t>(strtoul(row[38], nullptr, 10));
|
||||
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.aa_exp = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.aa_points = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.points = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.cur_hp = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
|
||||
e.mana = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
|
||||
e.endurance = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
|
||||
e.intoxication = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
|
||||
e.str = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
|
||||
e.sta = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
|
||||
e.cha = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
|
||||
e.dex = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
|
||||
e.int_ = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
|
||||
e.agi = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
|
||||
e.wis = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
|
||||
e.zone_change_count = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
|
||||
e.toxicity = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
|
||||
e.hunger_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
|
||||
e.thirst_level = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
|
||||
e.ability_up = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
|
||||
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
|
||||
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
|
||||
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
|
||||
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
|
||||
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
|
||||
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
|
||||
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
|
||||
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
|
||||
e.tribute_points = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
|
||||
e.tribute_active = static_cast<uint32_t>(strtoul(row[72], nullptr, 10));
|
||||
e.pvp_status = static_cast<uint8_t>(strtoul(row[73], nullptr, 10));
|
||||
e.pvp_kills = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
|
||||
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
|
||||
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
|
||||
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
|
||||
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
|
||||
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
|
||||
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
|
||||
e.pvp2 = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
|
||||
e.pvp_type = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
|
||||
e.show_helm = static_cast<uint32_t>(strtoul(row[83], nullptr, 10));
|
||||
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
|
||||
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
|
||||
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
|
||||
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[87], nullptr, 10));
|
||||
e.RestTimer = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
|
||||
e.air_remaining = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
|
||||
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[90], nullptr, 10));
|
||||
e.lfp = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
|
||||
e.lfg = static_cast<uint8_t>(strtoul(row[92], nullptr, 10));
|
||||
e.zone_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.zone_instance = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.y = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.z = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.heading = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.gender = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.race = row[13] ? static_cast<uint16_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.class_ = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.level = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.deity = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.birthday = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.last_login = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.time_played = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.level2 = row[20] ? static_cast<uint8_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.anon = row[21] ? static_cast<uint8_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.gm = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.face = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.hair_color = row[24] ? static_cast<uint8_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.hair_style = row[25] ? static_cast<uint8_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.beard = row[26] ? static_cast<uint8_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.beard_color = row[27] ? static_cast<uint8_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[29] ? static_cast<uint8_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.ability_time_seconds = row[33] ? static_cast<uint8_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.ability_number = row[34] ? static_cast<uint8_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.ability_time_minutes = row[35] ? static_cast<uint8_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.ability_time_hours = row[36] ? static_cast<uint8_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.exp = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.exp_enabled = row[38] ? static_cast<uint8_t>(strtoul(row[38], nullptr, 10)) : 1;
|
||||
e.aa_points_spent = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.aa_exp = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.aa_points = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.group_leadership_exp = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.raid_leadership_exp = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.group_leadership_points = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.raid_leadership_points = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.points = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
e.cur_hp = row[47] ? static_cast<uint32_t>(strtoul(row[47], nullptr, 10)) : 0;
|
||||
e.mana = row[48] ? static_cast<uint32_t>(strtoul(row[48], nullptr, 10)) : 0;
|
||||
e.endurance = row[49] ? static_cast<uint32_t>(strtoul(row[49], nullptr, 10)) : 0;
|
||||
e.intoxication = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 0;
|
||||
e.str = row[51] ? static_cast<uint32_t>(strtoul(row[51], nullptr, 10)) : 0;
|
||||
e.sta = row[52] ? static_cast<uint32_t>(strtoul(row[52], nullptr, 10)) : 0;
|
||||
e.cha = row[53] ? static_cast<uint32_t>(strtoul(row[53], nullptr, 10)) : 0;
|
||||
e.dex = row[54] ? static_cast<uint32_t>(strtoul(row[54], nullptr, 10)) : 0;
|
||||
e.int_ = row[55] ? static_cast<uint32_t>(strtoul(row[55], nullptr, 10)) : 0;
|
||||
e.agi = row[56] ? static_cast<uint32_t>(strtoul(row[56], nullptr, 10)) : 0;
|
||||
e.wis = row[57] ? static_cast<uint32_t>(strtoul(row[57], nullptr, 10)) : 0;
|
||||
e.zone_change_count = row[58] ? static_cast<uint32_t>(strtoul(row[58], nullptr, 10)) : 0;
|
||||
e.toxicity = row[59] ? static_cast<uint32_t>(strtoul(row[59], nullptr, 10)) : 0;
|
||||
e.hunger_level = row[60] ? static_cast<uint32_t>(strtoul(row[60], nullptr, 10)) : 0;
|
||||
e.thirst_level = row[61] ? static_cast<uint32_t>(strtoul(row[61], nullptr, 10)) : 0;
|
||||
e.ability_up = row[62] ? static_cast<uint32_t>(strtoul(row[62], nullptr, 10)) : 0;
|
||||
e.ldon_points_guk = row[63] ? static_cast<uint32_t>(strtoul(row[63], nullptr, 10)) : 0;
|
||||
e.ldon_points_mir = row[64] ? static_cast<uint32_t>(strtoul(row[64], nullptr, 10)) : 0;
|
||||
e.ldon_points_mmc = row[65] ? static_cast<uint32_t>(strtoul(row[65], nullptr, 10)) : 0;
|
||||
e.ldon_points_ruj = row[66] ? static_cast<uint32_t>(strtoul(row[66], nullptr, 10)) : 0;
|
||||
e.ldon_points_tak = row[67] ? static_cast<uint32_t>(strtoul(row[67], nullptr, 10)) : 0;
|
||||
e.ldon_points_available = row[68] ? static_cast<uint32_t>(strtoul(row[68], nullptr, 10)) : 0;
|
||||
e.tribute_time_remaining = row[69] ? static_cast<uint32_t>(strtoul(row[69], nullptr, 10)) : 0;
|
||||
e.career_tribute_points = row[70] ? static_cast<uint32_t>(strtoul(row[70], nullptr, 10)) : 0;
|
||||
e.tribute_points = row[71] ? static_cast<uint32_t>(strtoul(row[71], nullptr, 10)) : 0;
|
||||
e.tribute_active = row[72] ? static_cast<uint32_t>(strtoul(row[72], nullptr, 10)) : 0;
|
||||
e.pvp_status = row[73] ? static_cast<uint8_t>(strtoul(row[73], nullptr, 10)) : 0;
|
||||
e.pvp_kills = row[74] ? static_cast<uint32_t>(strtoul(row[74], nullptr, 10)) : 0;
|
||||
e.pvp_deaths = row[75] ? static_cast<uint32_t>(strtoul(row[75], nullptr, 10)) : 0;
|
||||
e.pvp_current_points = row[76] ? static_cast<uint32_t>(strtoul(row[76], nullptr, 10)) : 0;
|
||||
e.pvp_career_points = row[77] ? static_cast<uint32_t>(strtoul(row[77], nullptr, 10)) : 0;
|
||||
e.pvp_best_kill_streak = row[78] ? static_cast<uint32_t>(strtoul(row[78], nullptr, 10)) : 0;
|
||||
e.pvp_worst_death_streak = row[79] ? static_cast<uint32_t>(strtoul(row[79], nullptr, 10)) : 0;
|
||||
e.pvp_current_kill_streak = row[80] ? static_cast<uint32_t>(strtoul(row[80], nullptr, 10)) : 0;
|
||||
e.pvp2 = row[81] ? static_cast<uint32_t>(strtoul(row[81], nullptr, 10)) : 0;
|
||||
e.pvp_type = row[82] ? static_cast<uint32_t>(strtoul(row[82], nullptr, 10)) : 0;
|
||||
e.show_helm = row[83] ? static_cast<uint32_t>(strtoul(row[83], nullptr, 10)) : 0;
|
||||
e.group_auto_consent = row[84] ? static_cast<uint8_t>(strtoul(row[84], nullptr, 10)) : 0;
|
||||
e.raid_auto_consent = row[85] ? static_cast<uint8_t>(strtoul(row[85], nullptr, 10)) : 0;
|
||||
e.guild_auto_consent = row[86] ? static_cast<uint8_t>(strtoul(row[86], nullptr, 10)) : 0;
|
||||
e.leadership_exp_on = row[87] ? static_cast<uint8_t>(strtoul(row[87], nullptr, 10)) : 0;
|
||||
e.RestTimer = row[88] ? static_cast<uint32_t>(strtoul(row[88], nullptr, 10)) : 0;
|
||||
e.air_remaining = row[89] ? static_cast<uint32_t>(strtoul(row[89], nullptr, 10)) : 0;
|
||||
e.autosplit_enabled = row[90] ? static_cast<uint32_t>(strtoul(row[90], nullptr, 10)) : 0;
|
||||
e.lfp = row[91] ? static_cast<uint8_t>(strtoul(row[91], nullptr, 10)) : 0;
|
||||
e.lfg = row[92] ? static_cast<uint8_t>(strtoul(row[92], nullptr, 10)) : 0;
|
||||
e.mailkey = row[93] ? row[93] : "";
|
||||
e.xtargets = static_cast<uint8_t>(strtoul(row[94], nullptr, 10));
|
||||
e.firstlogon = static_cast<int8_t>(atoi(row[95]));
|
||||
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
|
||||
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
|
||||
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
|
||||
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
|
||||
e.aa_points_old = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
|
||||
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[101], nullptr, 10));
|
||||
e.xtargets = row[94] ? static_cast<uint8_t>(strtoul(row[94], nullptr, 10)) : 5;
|
||||
e.firstlogon = row[95] ? static_cast<int8_t>(atoi(row[95])) : 0;
|
||||
e.e_aa_effects = row[96] ? static_cast<uint32_t>(strtoul(row[96], nullptr, 10)) : 0;
|
||||
e.e_percent_to_aa = row[97] ? static_cast<uint32_t>(strtoul(row[97], nullptr, 10)) : 0;
|
||||
e.e_expended_aa_spent = row[98] ? static_cast<uint32_t>(strtoul(row[98], nullptr, 10)) : 0;
|
||||
e.aa_points_spent_old = row[99] ? static_cast<uint32_t>(strtoul(row[99], nullptr, 10)) : 0;
|
||||
e.aa_points_old = row[100] ? static_cast<uint32_t>(strtoul(row[100], nullptr, 10)) : 0;
|
||||
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);
|
||||
|
||||
return e;
|
||||
@@ -1051,108 +1050,108 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterData e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.account_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.account_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.last_name = row[3] ? row[3] : "";
|
||||
e.title = row[4] ? row[4] : "";
|
||||
e.suffix = row[5] ? row[5] : "";
|
||||
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.y = strtof(row[8], nullptr);
|
||||
e.x = strtof(row[9], nullptr);
|
||||
e.z = strtof(row[10], nullptr);
|
||||
e.heading = strtof(row[11], nullptr);
|
||||
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
|
||||
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
|
||||
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
|
||||
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
|
||||
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
|
||||
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
|
||||
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
|
||||
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
|
||||
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
|
||||
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.exp_enabled = static_cast<uint8_t>(strtoul(row[38], nullptr, 10));
|
||||
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.aa_exp = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.aa_points = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.points = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.cur_hp = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
|
||||
e.mana = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
|
||||
e.endurance = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
|
||||
e.intoxication = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
|
||||
e.str = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
|
||||
e.sta = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
|
||||
e.cha = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
|
||||
e.dex = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
|
||||
e.int_ = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
|
||||
e.agi = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
|
||||
e.wis = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
|
||||
e.zone_change_count = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
|
||||
e.toxicity = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
|
||||
e.hunger_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
|
||||
e.thirst_level = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
|
||||
e.ability_up = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
|
||||
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
|
||||
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
|
||||
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
|
||||
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
|
||||
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
|
||||
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
|
||||
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
|
||||
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
|
||||
e.tribute_points = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
|
||||
e.tribute_active = static_cast<uint32_t>(strtoul(row[72], nullptr, 10));
|
||||
e.pvp_status = static_cast<uint8_t>(strtoul(row[73], nullptr, 10));
|
||||
e.pvp_kills = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
|
||||
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
|
||||
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
|
||||
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
|
||||
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
|
||||
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
|
||||
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
|
||||
e.pvp2 = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
|
||||
e.pvp_type = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
|
||||
e.show_helm = static_cast<uint32_t>(strtoul(row[83], nullptr, 10));
|
||||
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
|
||||
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
|
||||
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
|
||||
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[87], nullptr, 10));
|
||||
e.RestTimer = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
|
||||
e.air_remaining = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
|
||||
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[90], nullptr, 10));
|
||||
e.lfp = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
|
||||
e.lfg = static_cast<uint8_t>(strtoul(row[92], nullptr, 10));
|
||||
e.zone_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.zone_instance = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.y = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.z = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.heading = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.gender = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.race = row[13] ? static_cast<uint16_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.class_ = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.level = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.deity = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.birthday = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.last_login = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.time_played = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.level2 = row[20] ? static_cast<uint8_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.anon = row[21] ? static_cast<uint8_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.gm = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.face = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.hair_color = row[24] ? static_cast<uint8_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.hair_style = row[25] ? static_cast<uint8_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.beard = row[26] ? static_cast<uint8_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.beard_color = row[27] ? static_cast<uint8_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[29] ? static_cast<uint8_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.ability_time_seconds = row[33] ? static_cast<uint8_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.ability_number = row[34] ? static_cast<uint8_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.ability_time_minutes = row[35] ? static_cast<uint8_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.ability_time_hours = row[36] ? static_cast<uint8_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.exp = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.exp_enabled = row[38] ? static_cast<uint8_t>(strtoul(row[38], nullptr, 10)) : 1;
|
||||
e.aa_points_spent = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.aa_exp = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.aa_points = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.group_leadership_exp = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.raid_leadership_exp = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.group_leadership_points = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.raid_leadership_points = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.points = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
e.cur_hp = row[47] ? static_cast<uint32_t>(strtoul(row[47], nullptr, 10)) : 0;
|
||||
e.mana = row[48] ? static_cast<uint32_t>(strtoul(row[48], nullptr, 10)) : 0;
|
||||
e.endurance = row[49] ? static_cast<uint32_t>(strtoul(row[49], nullptr, 10)) : 0;
|
||||
e.intoxication = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 0;
|
||||
e.str = row[51] ? static_cast<uint32_t>(strtoul(row[51], nullptr, 10)) : 0;
|
||||
e.sta = row[52] ? static_cast<uint32_t>(strtoul(row[52], nullptr, 10)) : 0;
|
||||
e.cha = row[53] ? static_cast<uint32_t>(strtoul(row[53], nullptr, 10)) : 0;
|
||||
e.dex = row[54] ? static_cast<uint32_t>(strtoul(row[54], nullptr, 10)) : 0;
|
||||
e.int_ = row[55] ? static_cast<uint32_t>(strtoul(row[55], nullptr, 10)) : 0;
|
||||
e.agi = row[56] ? static_cast<uint32_t>(strtoul(row[56], nullptr, 10)) : 0;
|
||||
e.wis = row[57] ? static_cast<uint32_t>(strtoul(row[57], nullptr, 10)) : 0;
|
||||
e.zone_change_count = row[58] ? static_cast<uint32_t>(strtoul(row[58], nullptr, 10)) : 0;
|
||||
e.toxicity = row[59] ? static_cast<uint32_t>(strtoul(row[59], nullptr, 10)) : 0;
|
||||
e.hunger_level = row[60] ? static_cast<uint32_t>(strtoul(row[60], nullptr, 10)) : 0;
|
||||
e.thirst_level = row[61] ? static_cast<uint32_t>(strtoul(row[61], nullptr, 10)) : 0;
|
||||
e.ability_up = row[62] ? static_cast<uint32_t>(strtoul(row[62], nullptr, 10)) : 0;
|
||||
e.ldon_points_guk = row[63] ? static_cast<uint32_t>(strtoul(row[63], nullptr, 10)) : 0;
|
||||
e.ldon_points_mir = row[64] ? static_cast<uint32_t>(strtoul(row[64], nullptr, 10)) : 0;
|
||||
e.ldon_points_mmc = row[65] ? static_cast<uint32_t>(strtoul(row[65], nullptr, 10)) : 0;
|
||||
e.ldon_points_ruj = row[66] ? static_cast<uint32_t>(strtoul(row[66], nullptr, 10)) : 0;
|
||||
e.ldon_points_tak = row[67] ? static_cast<uint32_t>(strtoul(row[67], nullptr, 10)) : 0;
|
||||
e.ldon_points_available = row[68] ? static_cast<uint32_t>(strtoul(row[68], nullptr, 10)) : 0;
|
||||
e.tribute_time_remaining = row[69] ? static_cast<uint32_t>(strtoul(row[69], nullptr, 10)) : 0;
|
||||
e.career_tribute_points = row[70] ? static_cast<uint32_t>(strtoul(row[70], nullptr, 10)) : 0;
|
||||
e.tribute_points = row[71] ? static_cast<uint32_t>(strtoul(row[71], nullptr, 10)) : 0;
|
||||
e.tribute_active = row[72] ? static_cast<uint32_t>(strtoul(row[72], nullptr, 10)) : 0;
|
||||
e.pvp_status = row[73] ? static_cast<uint8_t>(strtoul(row[73], nullptr, 10)) : 0;
|
||||
e.pvp_kills = row[74] ? static_cast<uint32_t>(strtoul(row[74], nullptr, 10)) : 0;
|
||||
e.pvp_deaths = row[75] ? static_cast<uint32_t>(strtoul(row[75], nullptr, 10)) : 0;
|
||||
e.pvp_current_points = row[76] ? static_cast<uint32_t>(strtoul(row[76], nullptr, 10)) : 0;
|
||||
e.pvp_career_points = row[77] ? static_cast<uint32_t>(strtoul(row[77], nullptr, 10)) : 0;
|
||||
e.pvp_best_kill_streak = row[78] ? static_cast<uint32_t>(strtoul(row[78], nullptr, 10)) : 0;
|
||||
e.pvp_worst_death_streak = row[79] ? static_cast<uint32_t>(strtoul(row[79], nullptr, 10)) : 0;
|
||||
e.pvp_current_kill_streak = row[80] ? static_cast<uint32_t>(strtoul(row[80], nullptr, 10)) : 0;
|
||||
e.pvp2 = row[81] ? static_cast<uint32_t>(strtoul(row[81], nullptr, 10)) : 0;
|
||||
e.pvp_type = row[82] ? static_cast<uint32_t>(strtoul(row[82], nullptr, 10)) : 0;
|
||||
e.show_helm = row[83] ? static_cast<uint32_t>(strtoul(row[83], nullptr, 10)) : 0;
|
||||
e.group_auto_consent = row[84] ? static_cast<uint8_t>(strtoul(row[84], nullptr, 10)) : 0;
|
||||
e.raid_auto_consent = row[85] ? static_cast<uint8_t>(strtoul(row[85], nullptr, 10)) : 0;
|
||||
e.guild_auto_consent = row[86] ? static_cast<uint8_t>(strtoul(row[86], nullptr, 10)) : 0;
|
||||
e.leadership_exp_on = row[87] ? static_cast<uint8_t>(strtoul(row[87], nullptr, 10)) : 0;
|
||||
e.RestTimer = row[88] ? static_cast<uint32_t>(strtoul(row[88], nullptr, 10)) : 0;
|
||||
e.air_remaining = row[89] ? static_cast<uint32_t>(strtoul(row[89], nullptr, 10)) : 0;
|
||||
e.autosplit_enabled = row[90] ? static_cast<uint32_t>(strtoul(row[90], nullptr, 10)) : 0;
|
||||
e.lfp = row[91] ? static_cast<uint8_t>(strtoul(row[91], nullptr, 10)) : 0;
|
||||
e.lfg = row[92] ? static_cast<uint8_t>(strtoul(row[92], nullptr, 10)) : 0;
|
||||
e.mailkey = row[93] ? row[93] : "";
|
||||
e.xtargets = static_cast<uint8_t>(strtoul(row[94], nullptr, 10));
|
||||
e.firstlogon = static_cast<int8_t>(atoi(row[95]));
|
||||
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
|
||||
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
|
||||
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
|
||||
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
|
||||
e.aa_points_old = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
|
||||
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[101], nullptr, 10));
|
||||
e.xtargets = row[94] ? static_cast<uint8_t>(strtoul(row[94], nullptr, 10)) : 5;
|
||||
e.firstlogon = row[95] ? static_cast<int8_t>(atoi(row[95])) : 0;
|
||||
e.e_aa_effects = row[96] ? static_cast<uint32_t>(strtoul(row[96], nullptr, 10)) : 0;
|
||||
e.e_percent_to_aa = row[97] ? static_cast<uint32_t>(strtoul(row[97], nullptr, 10)) : 0;
|
||||
e.e_expended_aa_spent = row[98] ? static_cast<uint32_t>(strtoul(row[98], nullptr, 10)) : 0;
|
||||
e.aa_points_spent_old = row[99] ? static_cast<uint32_t>(strtoul(row[99], nullptr, 10)) : 0;
|
||||
e.aa_points_old = row[100] ? static_cast<uint32_t>(strtoul(row[100], nullptr, 10)) : 0;
|
||||
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);
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -1178,108 +1177,108 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterData e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.account_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.account_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
e.last_name = row[3] ? row[3] : "";
|
||||
e.title = row[4] ? row[4] : "";
|
||||
e.suffix = row[5] ? row[5] : "";
|
||||
e.zone_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.zone_instance = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
e.y = strtof(row[8], nullptr);
|
||||
e.x = strtof(row[9], nullptr);
|
||||
e.z = strtof(row[10], nullptr);
|
||||
e.heading = strtof(row[11], nullptr);
|
||||
e.gender = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
|
||||
e.race = static_cast<uint16_t>(strtoul(row[13], nullptr, 10));
|
||||
e.class_ = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
|
||||
e.level = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
|
||||
e.deity = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
|
||||
e.birthday = static_cast<uint32_t>(strtoul(row[17], nullptr, 10));
|
||||
e.last_login = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
|
||||
e.time_played = static_cast<uint32_t>(strtoul(row[19], nullptr, 10));
|
||||
e.level2 = static_cast<uint8_t>(strtoul(row[20], nullptr, 10));
|
||||
e.anon = static_cast<uint8_t>(strtoul(row[21], nullptr, 10));
|
||||
e.gm = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.face = static_cast<uint32_t>(strtoul(row[23], nullptr, 10));
|
||||
e.hair_color = static_cast<uint8_t>(strtoul(row[24], nullptr, 10));
|
||||
e.hair_style = static_cast<uint8_t>(strtoul(row[25], nullptr, 10));
|
||||
e.beard = static_cast<uint8_t>(strtoul(row[26], nullptr, 10));
|
||||
e.beard_color = static_cast<uint8_t>(strtoul(row[27], nullptr, 10));
|
||||
e.eye_color_1 = static_cast<uint8_t>(strtoul(row[28], nullptr, 10));
|
||||
e.eye_color_2 = static_cast<uint8_t>(strtoul(row[29], nullptr, 10));
|
||||
e.drakkin_heritage = static_cast<uint32_t>(strtoul(row[30], nullptr, 10));
|
||||
e.drakkin_tattoo = static_cast<uint32_t>(strtoul(row[31], nullptr, 10));
|
||||
e.drakkin_details = static_cast<uint32_t>(strtoul(row[32], nullptr, 10));
|
||||
e.ability_time_seconds = static_cast<uint8_t>(strtoul(row[33], nullptr, 10));
|
||||
e.ability_number = static_cast<uint8_t>(strtoul(row[34], nullptr, 10));
|
||||
e.ability_time_minutes = static_cast<uint8_t>(strtoul(row[35], nullptr, 10));
|
||||
e.ability_time_hours = static_cast<uint8_t>(strtoul(row[36], nullptr, 10));
|
||||
e.exp = static_cast<uint32_t>(strtoul(row[37], nullptr, 10));
|
||||
e.exp_enabled = static_cast<uint8_t>(strtoul(row[38], nullptr, 10));
|
||||
e.aa_points_spent = static_cast<uint32_t>(strtoul(row[39], nullptr, 10));
|
||||
e.aa_exp = static_cast<uint32_t>(strtoul(row[40], nullptr, 10));
|
||||
e.aa_points = static_cast<uint32_t>(strtoul(row[41], nullptr, 10));
|
||||
e.group_leadership_exp = static_cast<uint32_t>(strtoul(row[42], nullptr, 10));
|
||||
e.raid_leadership_exp = static_cast<uint32_t>(strtoul(row[43], nullptr, 10));
|
||||
e.group_leadership_points = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
|
||||
e.raid_leadership_points = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
|
||||
e.points = static_cast<uint32_t>(strtoul(row[46], nullptr, 10));
|
||||
e.cur_hp = static_cast<uint32_t>(strtoul(row[47], nullptr, 10));
|
||||
e.mana = static_cast<uint32_t>(strtoul(row[48], nullptr, 10));
|
||||
e.endurance = static_cast<uint32_t>(strtoul(row[49], nullptr, 10));
|
||||
e.intoxication = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
|
||||
e.str = static_cast<uint32_t>(strtoul(row[51], nullptr, 10));
|
||||
e.sta = static_cast<uint32_t>(strtoul(row[52], nullptr, 10));
|
||||
e.cha = static_cast<uint32_t>(strtoul(row[53], nullptr, 10));
|
||||
e.dex = static_cast<uint32_t>(strtoul(row[54], nullptr, 10));
|
||||
e.int_ = static_cast<uint32_t>(strtoul(row[55], nullptr, 10));
|
||||
e.agi = static_cast<uint32_t>(strtoul(row[56], nullptr, 10));
|
||||
e.wis = static_cast<uint32_t>(strtoul(row[57], nullptr, 10));
|
||||
e.zone_change_count = static_cast<uint32_t>(strtoul(row[58], nullptr, 10));
|
||||
e.toxicity = static_cast<uint32_t>(strtoul(row[59], nullptr, 10));
|
||||
e.hunger_level = static_cast<uint32_t>(strtoul(row[60], nullptr, 10));
|
||||
e.thirst_level = static_cast<uint32_t>(strtoul(row[61], nullptr, 10));
|
||||
e.ability_up = static_cast<uint32_t>(strtoul(row[62], nullptr, 10));
|
||||
e.ldon_points_guk = static_cast<uint32_t>(strtoul(row[63], nullptr, 10));
|
||||
e.ldon_points_mir = static_cast<uint32_t>(strtoul(row[64], nullptr, 10));
|
||||
e.ldon_points_mmc = static_cast<uint32_t>(strtoul(row[65], nullptr, 10));
|
||||
e.ldon_points_ruj = static_cast<uint32_t>(strtoul(row[66], nullptr, 10));
|
||||
e.ldon_points_tak = static_cast<uint32_t>(strtoul(row[67], nullptr, 10));
|
||||
e.ldon_points_available = static_cast<uint32_t>(strtoul(row[68], nullptr, 10));
|
||||
e.tribute_time_remaining = static_cast<uint32_t>(strtoul(row[69], nullptr, 10));
|
||||
e.career_tribute_points = static_cast<uint32_t>(strtoul(row[70], nullptr, 10));
|
||||
e.tribute_points = static_cast<uint32_t>(strtoul(row[71], nullptr, 10));
|
||||
e.tribute_active = static_cast<uint32_t>(strtoul(row[72], nullptr, 10));
|
||||
e.pvp_status = static_cast<uint8_t>(strtoul(row[73], nullptr, 10));
|
||||
e.pvp_kills = static_cast<uint32_t>(strtoul(row[74], nullptr, 10));
|
||||
e.pvp_deaths = static_cast<uint32_t>(strtoul(row[75], nullptr, 10));
|
||||
e.pvp_current_points = static_cast<uint32_t>(strtoul(row[76], nullptr, 10));
|
||||
e.pvp_career_points = static_cast<uint32_t>(strtoul(row[77], nullptr, 10));
|
||||
e.pvp_best_kill_streak = static_cast<uint32_t>(strtoul(row[78], nullptr, 10));
|
||||
e.pvp_worst_death_streak = static_cast<uint32_t>(strtoul(row[79], nullptr, 10));
|
||||
e.pvp_current_kill_streak = static_cast<uint32_t>(strtoul(row[80], nullptr, 10));
|
||||
e.pvp2 = static_cast<uint32_t>(strtoul(row[81], nullptr, 10));
|
||||
e.pvp_type = static_cast<uint32_t>(strtoul(row[82], nullptr, 10));
|
||||
e.show_helm = static_cast<uint32_t>(strtoul(row[83], nullptr, 10));
|
||||
e.group_auto_consent = static_cast<uint8_t>(strtoul(row[84], nullptr, 10));
|
||||
e.raid_auto_consent = static_cast<uint8_t>(strtoul(row[85], nullptr, 10));
|
||||
e.guild_auto_consent = static_cast<uint8_t>(strtoul(row[86], nullptr, 10));
|
||||
e.leadership_exp_on = static_cast<uint8_t>(strtoul(row[87], nullptr, 10));
|
||||
e.RestTimer = static_cast<uint32_t>(strtoul(row[88], nullptr, 10));
|
||||
e.air_remaining = static_cast<uint32_t>(strtoul(row[89], nullptr, 10));
|
||||
e.autosplit_enabled = static_cast<uint32_t>(strtoul(row[90], nullptr, 10));
|
||||
e.lfp = static_cast<uint8_t>(strtoul(row[91], nullptr, 10));
|
||||
e.lfg = static_cast<uint8_t>(strtoul(row[92], nullptr, 10));
|
||||
e.zone_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.zone_instance = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.y = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.z = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.heading = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.gender = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
|
||||
e.race = row[13] ? static_cast<uint16_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.class_ = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
|
||||
e.level = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
|
||||
e.deity = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
|
||||
e.birthday = row[17] ? static_cast<uint32_t>(strtoul(row[17], nullptr, 10)) : 0;
|
||||
e.last_login = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
|
||||
e.time_played = row[19] ? static_cast<uint32_t>(strtoul(row[19], nullptr, 10)) : 0;
|
||||
e.level2 = row[20] ? static_cast<uint8_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.anon = row[21] ? static_cast<uint8_t>(strtoul(row[21], nullptr, 10)) : 0;
|
||||
e.gm = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
e.face = row[23] ? static_cast<uint32_t>(strtoul(row[23], nullptr, 10)) : 0;
|
||||
e.hair_color = row[24] ? static_cast<uint8_t>(strtoul(row[24], nullptr, 10)) : 0;
|
||||
e.hair_style = row[25] ? static_cast<uint8_t>(strtoul(row[25], nullptr, 10)) : 0;
|
||||
e.beard = row[26] ? static_cast<uint8_t>(strtoul(row[26], nullptr, 10)) : 0;
|
||||
e.beard_color = row[27] ? static_cast<uint8_t>(strtoul(row[27], nullptr, 10)) : 0;
|
||||
e.eye_color_1 = row[28] ? static_cast<uint8_t>(strtoul(row[28], nullptr, 10)) : 0;
|
||||
e.eye_color_2 = row[29] ? static_cast<uint8_t>(strtoul(row[29], nullptr, 10)) : 0;
|
||||
e.drakkin_heritage = row[30] ? static_cast<uint32_t>(strtoul(row[30], nullptr, 10)) : 0;
|
||||
e.drakkin_tattoo = row[31] ? static_cast<uint32_t>(strtoul(row[31], nullptr, 10)) : 0;
|
||||
e.drakkin_details = row[32] ? static_cast<uint32_t>(strtoul(row[32], nullptr, 10)) : 0;
|
||||
e.ability_time_seconds = row[33] ? static_cast<uint8_t>(strtoul(row[33], nullptr, 10)) : 0;
|
||||
e.ability_number = row[34] ? static_cast<uint8_t>(strtoul(row[34], nullptr, 10)) : 0;
|
||||
e.ability_time_minutes = row[35] ? static_cast<uint8_t>(strtoul(row[35], nullptr, 10)) : 0;
|
||||
e.ability_time_hours = row[36] ? static_cast<uint8_t>(strtoul(row[36], nullptr, 10)) : 0;
|
||||
e.exp = row[37] ? static_cast<uint32_t>(strtoul(row[37], nullptr, 10)) : 0;
|
||||
e.exp_enabled = row[38] ? static_cast<uint8_t>(strtoul(row[38], nullptr, 10)) : 1;
|
||||
e.aa_points_spent = row[39] ? static_cast<uint32_t>(strtoul(row[39], nullptr, 10)) : 0;
|
||||
e.aa_exp = row[40] ? static_cast<uint32_t>(strtoul(row[40], nullptr, 10)) : 0;
|
||||
e.aa_points = row[41] ? static_cast<uint32_t>(strtoul(row[41], nullptr, 10)) : 0;
|
||||
e.group_leadership_exp = row[42] ? static_cast<uint32_t>(strtoul(row[42], nullptr, 10)) : 0;
|
||||
e.raid_leadership_exp = row[43] ? static_cast<uint32_t>(strtoul(row[43], nullptr, 10)) : 0;
|
||||
e.group_leadership_points = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
|
||||
e.raid_leadership_points = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 0;
|
||||
e.points = row[46] ? static_cast<uint32_t>(strtoul(row[46], nullptr, 10)) : 0;
|
||||
e.cur_hp = row[47] ? static_cast<uint32_t>(strtoul(row[47], nullptr, 10)) : 0;
|
||||
e.mana = row[48] ? static_cast<uint32_t>(strtoul(row[48], nullptr, 10)) : 0;
|
||||
e.endurance = row[49] ? static_cast<uint32_t>(strtoul(row[49], nullptr, 10)) : 0;
|
||||
e.intoxication = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 0;
|
||||
e.str = row[51] ? static_cast<uint32_t>(strtoul(row[51], nullptr, 10)) : 0;
|
||||
e.sta = row[52] ? static_cast<uint32_t>(strtoul(row[52], nullptr, 10)) : 0;
|
||||
e.cha = row[53] ? static_cast<uint32_t>(strtoul(row[53], nullptr, 10)) : 0;
|
||||
e.dex = row[54] ? static_cast<uint32_t>(strtoul(row[54], nullptr, 10)) : 0;
|
||||
e.int_ = row[55] ? static_cast<uint32_t>(strtoul(row[55], nullptr, 10)) : 0;
|
||||
e.agi = row[56] ? static_cast<uint32_t>(strtoul(row[56], nullptr, 10)) : 0;
|
||||
e.wis = row[57] ? static_cast<uint32_t>(strtoul(row[57], nullptr, 10)) : 0;
|
||||
e.zone_change_count = row[58] ? static_cast<uint32_t>(strtoul(row[58], nullptr, 10)) : 0;
|
||||
e.toxicity = row[59] ? static_cast<uint32_t>(strtoul(row[59], nullptr, 10)) : 0;
|
||||
e.hunger_level = row[60] ? static_cast<uint32_t>(strtoul(row[60], nullptr, 10)) : 0;
|
||||
e.thirst_level = row[61] ? static_cast<uint32_t>(strtoul(row[61], nullptr, 10)) : 0;
|
||||
e.ability_up = row[62] ? static_cast<uint32_t>(strtoul(row[62], nullptr, 10)) : 0;
|
||||
e.ldon_points_guk = row[63] ? static_cast<uint32_t>(strtoul(row[63], nullptr, 10)) : 0;
|
||||
e.ldon_points_mir = row[64] ? static_cast<uint32_t>(strtoul(row[64], nullptr, 10)) : 0;
|
||||
e.ldon_points_mmc = row[65] ? static_cast<uint32_t>(strtoul(row[65], nullptr, 10)) : 0;
|
||||
e.ldon_points_ruj = row[66] ? static_cast<uint32_t>(strtoul(row[66], nullptr, 10)) : 0;
|
||||
e.ldon_points_tak = row[67] ? static_cast<uint32_t>(strtoul(row[67], nullptr, 10)) : 0;
|
||||
e.ldon_points_available = row[68] ? static_cast<uint32_t>(strtoul(row[68], nullptr, 10)) : 0;
|
||||
e.tribute_time_remaining = row[69] ? static_cast<uint32_t>(strtoul(row[69], nullptr, 10)) : 0;
|
||||
e.career_tribute_points = row[70] ? static_cast<uint32_t>(strtoul(row[70], nullptr, 10)) : 0;
|
||||
e.tribute_points = row[71] ? static_cast<uint32_t>(strtoul(row[71], nullptr, 10)) : 0;
|
||||
e.tribute_active = row[72] ? static_cast<uint32_t>(strtoul(row[72], nullptr, 10)) : 0;
|
||||
e.pvp_status = row[73] ? static_cast<uint8_t>(strtoul(row[73], nullptr, 10)) : 0;
|
||||
e.pvp_kills = row[74] ? static_cast<uint32_t>(strtoul(row[74], nullptr, 10)) : 0;
|
||||
e.pvp_deaths = row[75] ? static_cast<uint32_t>(strtoul(row[75], nullptr, 10)) : 0;
|
||||
e.pvp_current_points = row[76] ? static_cast<uint32_t>(strtoul(row[76], nullptr, 10)) : 0;
|
||||
e.pvp_career_points = row[77] ? static_cast<uint32_t>(strtoul(row[77], nullptr, 10)) : 0;
|
||||
e.pvp_best_kill_streak = row[78] ? static_cast<uint32_t>(strtoul(row[78], nullptr, 10)) : 0;
|
||||
e.pvp_worst_death_streak = row[79] ? static_cast<uint32_t>(strtoul(row[79], nullptr, 10)) : 0;
|
||||
e.pvp_current_kill_streak = row[80] ? static_cast<uint32_t>(strtoul(row[80], nullptr, 10)) : 0;
|
||||
e.pvp2 = row[81] ? static_cast<uint32_t>(strtoul(row[81], nullptr, 10)) : 0;
|
||||
e.pvp_type = row[82] ? static_cast<uint32_t>(strtoul(row[82], nullptr, 10)) : 0;
|
||||
e.show_helm = row[83] ? static_cast<uint32_t>(strtoul(row[83], nullptr, 10)) : 0;
|
||||
e.group_auto_consent = row[84] ? static_cast<uint8_t>(strtoul(row[84], nullptr, 10)) : 0;
|
||||
e.raid_auto_consent = row[85] ? static_cast<uint8_t>(strtoul(row[85], nullptr, 10)) : 0;
|
||||
e.guild_auto_consent = row[86] ? static_cast<uint8_t>(strtoul(row[86], nullptr, 10)) : 0;
|
||||
e.leadership_exp_on = row[87] ? static_cast<uint8_t>(strtoul(row[87], nullptr, 10)) : 0;
|
||||
e.RestTimer = row[88] ? static_cast<uint32_t>(strtoul(row[88], nullptr, 10)) : 0;
|
||||
e.air_remaining = row[89] ? static_cast<uint32_t>(strtoul(row[89], nullptr, 10)) : 0;
|
||||
e.autosplit_enabled = row[90] ? static_cast<uint32_t>(strtoul(row[90], nullptr, 10)) : 0;
|
||||
e.lfp = row[91] ? static_cast<uint8_t>(strtoul(row[91], nullptr, 10)) : 0;
|
||||
e.lfg = row[92] ? static_cast<uint8_t>(strtoul(row[92], nullptr, 10)) : 0;
|
||||
e.mailkey = row[93] ? row[93] : "";
|
||||
e.xtargets = static_cast<uint8_t>(strtoul(row[94], nullptr, 10));
|
||||
e.firstlogon = static_cast<int8_t>(atoi(row[95]));
|
||||
e.e_aa_effects = static_cast<uint32_t>(strtoul(row[96], nullptr, 10));
|
||||
e.e_percent_to_aa = static_cast<uint32_t>(strtoul(row[97], nullptr, 10));
|
||||
e.e_expended_aa_spent = static_cast<uint32_t>(strtoul(row[98], nullptr, 10));
|
||||
e.aa_points_spent_old = static_cast<uint32_t>(strtoul(row[99], nullptr, 10));
|
||||
e.aa_points_old = static_cast<uint32_t>(strtoul(row[100], nullptr, 10));
|
||||
e.e_last_invsnapshot = static_cast<uint32_t>(strtoul(row[101], nullptr, 10));
|
||||
e.xtargets = row[94] ? static_cast<uint8_t>(strtoul(row[94], nullptr, 10)) : 5;
|
||||
e.firstlogon = row[95] ? static_cast<int8_t>(atoi(row[95])) : 0;
|
||||
e.e_aa_effects = row[96] ? static_cast<uint32_t>(strtoul(row[96], nullptr, 10)) : 0;
|
||||
e.e_percent_to_aa = row[97] ? static_cast<uint32_t>(strtoul(row[97], nullptr, 10)) : 0;
|
||||
e.e_expended_aa_spent = row[98] ? static_cast<uint32_t>(strtoul(row[98], nullptr, 10)) : 0;
|
||||
e.aa_points_spent_old = row[99] ? static_cast<uint32_t>(strtoul(row[99], nullptr, 10)) : 0;
|
||||
e.aa_points_old = row[100] ? static_cast<uint32_t>(strtoul(row[100], nullptr, 10)) : 0;
|
||||
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);
|
||||
|
||||
all_entries.push_back(e);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterDisciplinesRepository {
|
||||
public:
|
||||
struct CharacterDisciplines {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterDisciplines e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterDisciplines e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterDisciplines e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.disc_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.disc_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -120,8 +120,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_exp_modifiers_id
|
||||
)
|
||||
);
|
||||
@@ -130,11 +131,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterExpModifiers e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.instance_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.aa_modifier = strtof(row[3], nullptr);
|
||||
e.exp_modifier = strtof(row[4], nullptr);
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.instance_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
|
||||
e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -266,11 +267,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpModifiers e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.instance_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.aa_modifier = strtof(row[3], nullptr);
|
||||
e.exp_modifier = strtof(row[4], nullptr);
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.instance_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
|
||||
e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -295,11 +296,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpModifiers e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.instance_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.aa_modifier = strtof(row[3], nullptr);
|
||||
e.exp_modifier = strtof(row[4], nullptr);
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.instance_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : -1;
|
||||
e.aa_modifier = row[3] ? strtof(row[3], nullptr) : 0;
|
||||
e.exp_modifier = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -358,6 +359,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -128,8 +128,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_expedition_lockouts_id
|
||||
)
|
||||
);
|
||||
@@ -138,12 +139,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.expedition_name = row[2] ? row[2] : "";
|
||||
e.event_name = row[3] ? row[3] : "";
|
||||
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] : "";
|
||||
|
||||
return e;
|
||||
@@ -281,12 +282,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.expedition_name = row[2] ? row[2] : "";
|
||||
e.event_name = row[3] ? row[3] : "";
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -312,12 +313,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.expedition_name = row[2] ? row[2] : "";
|
||||
e.event_name = row[3] ? row[3] : "";
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -377,6 +378,74 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_inspect_messages_id
|
||||
)
|
||||
);
|
||||
@@ -118,7 +119,7 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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] : "";
|
||||
|
||||
return e;
|
||||
@@ -242,7 +243,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -268,7 +269,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -136,8 +136,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_instance_safereturns_id
|
||||
)
|
||||
);
|
||||
@@ -146,15 +147,15 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterInstanceSafereturns e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.safe_x = strtof(row[5], nullptr);
|
||||
e.safe_y = strtof(row[6], nullptr);
|
||||
e.safe_z = strtof(row[7], nullptr);
|
||||
e.safe_heading = strtof(row[8], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_zone_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.instance_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.safe_zone_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -297,15 +298,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterInstanceSafereturns e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.safe_x = strtof(row[5], nullptr);
|
||||
e.safe_y = strtof(row[6], nullptr);
|
||||
e.safe_z = strtof(row[7], nullptr);
|
||||
e.safe_heading = strtof(row[8], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_zone_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.instance_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.safe_zone_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -330,15 +331,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterInstanceSafereturns e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.instance_zone_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.safe_zone_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.safe_x = strtof(row[5], nullptr);
|
||||
e.safe_y = strtof(row[6], nullptr);
|
||||
e.safe_z = strtof(row[7], nullptr);
|
||||
e.safe_heading = strtof(row[8], nullptr);
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.instance_zone_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.instance_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.safe_zone_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.safe_x = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.safe_y = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.safe_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.safe_heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -397,6 +398,78 @@ public:
|
||||
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
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterItemRecastRepository {
|
||||
public:
|
||||
struct CharacterItemRecast {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterItemRecast e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterItemRecast e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterItemRecast e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.recast_type = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.timestamp = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.recast_type = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.timestamp = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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_LANGUAGES_REPOSITORY_H
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_languages_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterLanguages e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -249,9 +250,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterLanguages e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -276,9 +277,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterLanguages e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.lang_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.lang_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -337,6 +338,66 @@ public:
|
||||
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 CharacterLanguages &e
|
||||
)
|
||||
{
|
||||
std::vector<std::string> v;
|
||||
|
||||
v.push_back(std::to_string(e.id));
|
||||
v.push_back(std::to_string(e.lang_id));
|
||||
v.push_back(std::to_string(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<CharacterLanguages> &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.lang_id));
|
||||
v.push_back(std::to_string(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_CHARACTER_LANGUAGES_REPOSITORY_H
|
||||
|
||||
@@ -16,13 +16,12 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterLeadershipAbilitiesRepository {
|
||||
public:
|
||||
struct CharacterLeadershipAbilities {
|
||||
uint32_t id;
|
||||
uint16_t slot;
|
||||
uint16_t rank;
|
||||
uint16_t rank_;
|
||||
};
|
||||
|
||||
static std::string PrimaryKey()
|
||||
@@ -35,7 +34,7 @@ public:
|
||||
return {
|
||||
"id",
|
||||
"slot",
|
||||
"rank",
|
||||
"`rank`",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -44,7 +43,7 @@ public:
|
||||
return {
|
||||
"id",
|
||||
"slot",
|
||||
"rank",
|
||||
"`rank`",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -85,9 +84,9 @@ public:
|
||||
{
|
||||
CharacterLeadershipAbilities e{};
|
||||
|
||||
e.id = 0;
|
||||
e.slot = 0;
|
||||
e.rank = 0;
|
||||
e.id = 0;
|
||||
e.slot = 0;
|
||||
e.rank_ = 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterLeadershipAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.rank_ = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -162,7 +161,7 @@ public:
|
||||
|
||||
v.push_back(columns[0] + " = " + std::to_string(e.id));
|
||||
v.push_back(columns[1] + " = " + std::to_string(e.slot));
|
||||
v.push_back(columns[2] + " = " + std::to_string(e.rank));
|
||||
v.push_back(columns[2] + " = " + std::to_string(e.rank_));
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
@@ -186,7 +185,7 @@ public:
|
||||
|
||||
v.push_back(std::to_string(e.id));
|
||||
v.push_back(std::to_string(e.slot));
|
||||
v.push_back(std::to_string(e.rank));
|
||||
v.push_back(std::to_string(e.rank_));
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
@@ -218,7 +217,7 @@ public:
|
||||
|
||||
v.push_back(std::to_string(e.id));
|
||||
v.push_back(std::to_string(e.slot));
|
||||
v.push_back(std::to_string(e.rank));
|
||||
v.push_back(std::to_string(e.rank_));
|
||||
|
||||
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterLeadershipAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.rank_ = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterLeadershipAbilities e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.rank = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.rank_ = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -358,7 +357,7 @@ public:
|
||||
|
||||
v.push_back(std::to_string(e.id));
|
||||
v.push_back(std::to_string(e.slot));
|
||||
v.push_back(std::to_string(e.rank));
|
||||
v.push_back(std::to_string(e.rank_));
|
||||
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
@@ -383,7 +382,7 @@ public:
|
||||
|
||||
v.push_back(std::to_string(e.id));
|
||||
v.push_back(std::to_string(e.slot));
|
||||
v.push_back(std::to_string(e.rank));
|
||||
v.push_back(std::to_string(e.rank_));
|
||||
|
||||
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterMaterialRepository {
|
||||
public:
|
||||
struct CharacterMaterial {
|
||||
@@ -140,13 +139,13 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterMaterial e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -283,13 +282,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterMaterial e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -314,13 +313,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterMaterial e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.blue = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.green = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.red = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
|
||||
e.use_tint = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
|
||||
e.color = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.blue = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.green = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.red = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.use_tint = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.color = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterMemmedSpellsRepository {
|
||||
public:
|
||||
struct CharacterMemmedSpells {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterMemmedSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -252,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterMemmedSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -279,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterMemmedSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_peqzone_flags_id
|
||||
)
|
||||
);
|
||||
@@ -118,8 +119,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterPeqzoneFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -242,8 +243,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPeqzoneFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -268,8 +269,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPeqzoneFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterPetBuffsRepository {
|
||||
public:
|
||||
struct CharacterPetBuffs {
|
||||
@@ -156,17 +155,17 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterPetBuffs e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.caster_level = static_cast<int8_t>(atoi(row[4]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.caster_level = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
e.castername = row[5] ? row[5] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[6]));
|
||||
e.counters = static_cast<int32_t>(atoi(row[7]));
|
||||
e.numhits = static_cast<int32_t>(atoi(row[8]));
|
||||
e.rune = static_cast<int32_t>(atoi(row[9]));
|
||||
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.ticsremaining = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.counters = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.numhits = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.rune = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -316,17 +315,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetBuffs e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.caster_level = static_cast<int8_t>(atoi(row[4]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.caster_level = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
e.castername = row[5] ? row[5] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[6]));
|
||||
e.counters = static_cast<int32_t>(atoi(row[7]));
|
||||
e.numhits = static_cast<int32_t>(atoi(row[8]));
|
||||
e.rune = static_cast<int32_t>(atoi(row[9]));
|
||||
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.ticsremaining = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.counters = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.numhits = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.rune = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -351,17 +350,17 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetBuffs e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.caster_level = static_cast<int8_t>(atoi(row[4]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.spell_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.caster_level = row[4] ? static_cast<int8_t>(atoi(row[4])) : 0;
|
||||
e.castername = row[5] ? row[5] : "";
|
||||
e.ticsremaining = static_cast<int32_t>(atoi(row[6]));
|
||||
e.counters = static_cast<int32_t>(atoi(row[7]));
|
||||
e.numhits = static_cast<int32_t>(atoi(row[8]));
|
||||
e.rune = static_cast<int32_t>(atoi(row[9]));
|
||||
e.instrument_mod = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
|
||||
e.ticsremaining = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.counters = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.numhits = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.rune = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.instrument_mod = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 10;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterPetInfoRepository {
|
||||
public:
|
||||
struct CharacterPetInfo {
|
||||
@@ -148,15 +147,15 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterPetInfo e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.petname = row[2] ? row[2] : "";
|
||||
e.petpower = static_cast<int32_t>(atoi(row[3]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.hp = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mana = static_cast<int32_t>(atoi(row[6]));
|
||||
e.size = strtof(row[7], nullptr);
|
||||
e.taunting = static_cast<int8_t>(atoi(row[8]));
|
||||
e.petpower = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.spell_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mana = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.size = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.taunting = row[8] ? static_cast<int8_t>(atoi(row[8])) : 1;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -300,15 +299,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetInfo e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.petname = row[2] ? row[2] : "";
|
||||
e.petpower = static_cast<int32_t>(atoi(row[3]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.hp = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mana = static_cast<int32_t>(atoi(row[6]));
|
||||
e.size = strtof(row[7], nullptr);
|
||||
e.taunting = static_cast<int8_t>(atoi(row[8]));
|
||||
e.petpower = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.spell_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mana = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.size = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.taunting = row[8] ? static_cast<int8_t>(atoi(row[8])) : 1;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -333,15 +332,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetInfo e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.petname = row[2] ? row[2] : "";
|
||||
e.petpower = static_cast<int32_t>(atoi(row[3]));
|
||||
e.spell_id = static_cast<int32_t>(atoi(row[4]));
|
||||
e.hp = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mana = static_cast<int32_t>(atoi(row[6]));
|
||||
e.size = strtof(row[7], nullptr);
|
||||
e.taunting = static_cast<int8_t>(atoi(row[8]));
|
||||
e.petpower = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.spell_id = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mana = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.size = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.taunting = row[8] ? static_cast<int8_t>(atoi(row[8])) : 1;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterPetInventoryRepository {
|
||||
public:
|
||||
struct CharacterPetInventory {
|
||||
@@ -128,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterPetInventory e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.item_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -260,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetInventory e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.item_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -288,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPetInventory e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.pet = static_cast<int32_t>(atoi(row[1]));
|
||||
e.slot = static_cast<int32_t>(atoi(row[2]));
|
||||
e.item_id = static_cast<int32_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.pet = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.slot = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.item_id = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterPotionbeltRepository {
|
||||
public:
|
||||
struct CharacterPotionbelt {
|
||||
@@ -128,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterPotionbelt e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -260,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPotionbelt e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -288,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterPotionbelt e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.potion_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.icon = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.potion_id = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.item_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.icon = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterSkillsRepository {
|
||||
public:
|
||||
struct CharacterSkills {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterSkills e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -251,9 +250,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterSkills e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -278,9 +277,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterSkills e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.skill_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.skill_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterSpellsRepository {
|
||||
public:
|
||||
struct CharacterSpells {
|
||||
@@ -124,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -251,9 +250,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -278,9 +277,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterSpells e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.slot_id = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spell_id = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.slot_id = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.spell_id = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterStatsRecordRepository {
|
||||
public:
|
||||
struct CharacterStatsRecord {
|
||||
@@ -408,78 +407,78 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterStatsRecord e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.status = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int32_t>(atoi(row[3]));
|
||||
e.class_ = static_cast<int32_t>(atoi(row[4]));
|
||||
e.race = static_cast<int32_t>(atoi(row[5]));
|
||||
e.aa_points = static_cast<int32_t>(atoi(row[6]));
|
||||
e.hp = strtoll(row[7], nullptr, 10);
|
||||
e.mana = strtoll(row[8], nullptr, 10);
|
||||
e.endurance = strtoll(row[9], nullptr, 10);
|
||||
e.ac = static_cast<int32_t>(atoi(row[10]));
|
||||
e.strength = static_cast<int32_t>(atoi(row[11]));
|
||||
e.stamina = static_cast<int32_t>(atoi(row[12]));
|
||||
e.dexterity = static_cast<int32_t>(atoi(row[13]));
|
||||
e.agility = static_cast<int32_t>(atoi(row[14]));
|
||||
e.intelligence = static_cast<int32_t>(atoi(row[15]));
|
||||
e.wisdom = static_cast<int32_t>(atoi(row[16]));
|
||||
e.charisma = static_cast<int32_t>(atoi(row[17]));
|
||||
e.magic_resist = static_cast<int32_t>(atoi(row[18]));
|
||||
e.fire_resist = static_cast<int32_t>(atoi(row[19]));
|
||||
e.cold_resist = static_cast<int32_t>(atoi(row[20]));
|
||||
e.poison_resist = static_cast<int32_t>(atoi(row[21]));
|
||||
e.disease_resist = static_cast<int32_t>(atoi(row[22]));
|
||||
e.corruption_resist = static_cast<int32_t>(atoi(row[23]));
|
||||
e.heroic_strength = static_cast<int32_t>(atoi(row[24]));
|
||||
e.heroic_stamina = static_cast<int32_t>(atoi(row[25]));
|
||||
e.heroic_dexterity = static_cast<int32_t>(atoi(row[26]));
|
||||
e.heroic_agility = static_cast<int32_t>(atoi(row[27]));
|
||||
e.heroic_intelligence = static_cast<int32_t>(atoi(row[28]));
|
||||
e.heroic_wisdom = static_cast<int32_t>(atoi(row[29]));
|
||||
e.heroic_charisma = static_cast<int32_t>(atoi(row[30]));
|
||||
e.heroic_magic_resist = static_cast<int32_t>(atoi(row[31]));
|
||||
e.heroic_fire_resist = static_cast<int32_t>(atoi(row[32]));
|
||||
e.heroic_cold_resist = static_cast<int32_t>(atoi(row[33]));
|
||||
e.heroic_poison_resist = static_cast<int32_t>(atoi(row[34]));
|
||||
e.heroic_disease_resist = static_cast<int32_t>(atoi(row[35]));
|
||||
e.heroic_corruption_resist = static_cast<int32_t>(atoi(row[36]));
|
||||
e.haste = static_cast<int32_t>(atoi(row[37]));
|
||||
e.accuracy = static_cast<int32_t>(atoi(row[38]));
|
||||
e.attack = static_cast<int32_t>(atoi(row[39]));
|
||||
e.avoidance = static_cast<int32_t>(atoi(row[40]));
|
||||
e.clairvoyance = static_cast<int32_t>(atoi(row[41]));
|
||||
e.combat_effects = static_cast<int32_t>(atoi(row[42]));
|
||||
e.damage_shield_mitigation = static_cast<int32_t>(atoi(row[43]));
|
||||
e.damage_shield = static_cast<int32_t>(atoi(row[44]));
|
||||
e.dot_shielding = static_cast<int32_t>(atoi(row[45]));
|
||||
e.hp_regen = static_cast<int32_t>(atoi(row[46]));
|
||||
e.mana_regen = static_cast<int32_t>(atoi(row[47]));
|
||||
e.endurance_regen = static_cast<int32_t>(atoi(row[48]));
|
||||
e.shielding = static_cast<int32_t>(atoi(row[49]));
|
||||
e.spell_damage = static_cast<int32_t>(atoi(row[50]));
|
||||
e.spell_shielding = static_cast<int32_t>(atoi(row[51]));
|
||||
e.strikethrough = static_cast<int32_t>(atoi(row[52]));
|
||||
e.stun_resist = static_cast<int32_t>(atoi(row[53]));
|
||||
e.backstab = static_cast<int32_t>(atoi(row[54]));
|
||||
e.wind = static_cast<int32_t>(atoi(row[55]));
|
||||
e.brass = static_cast<int32_t>(atoi(row[56]));
|
||||
e.string = static_cast<int32_t>(atoi(row[57]));
|
||||
e.percussion = static_cast<int32_t>(atoi(row[58]));
|
||||
e.singing = static_cast<int32_t>(atoi(row[59]));
|
||||
e.baking = static_cast<int32_t>(atoi(row[60]));
|
||||
e.alchemy = static_cast<int32_t>(atoi(row[61]));
|
||||
e.tailoring = static_cast<int32_t>(atoi(row[62]));
|
||||
e.blacksmithing = static_cast<int32_t>(atoi(row[63]));
|
||||
e.fletching = static_cast<int32_t>(atoi(row[64]));
|
||||
e.brewing = static_cast<int32_t>(atoi(row[65]));
|
||||
e.jewelry = static_cast<int32_t>(atoi(row[66]));
|
||||
e.pottery = static_cast<int32_t>(atoi(row[67]));
|
||||
e.research = static_cast<int32_t>(atoi(row[68]));
|
||||
e.alcohol = static_cast<int32_t>(atoi(row[69]));
|
||||
e.fishing = static_cast<int32_t>(atoi(row[70]));
|
||||
e.tinkering = static_cast<int32_t>(atoi(row[71]));
|
||||
e.status = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.class_ = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.race = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.aa_points = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
|
||||
e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
|
||||
e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
|
||||
e.ac = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.strength = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.stamina = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.dexterity = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.agility = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.intelligence = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.wisdom = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
|
||||
e.charisma = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.magic_resist = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.fire_resist = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.cold_resist = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
|
||||
e.poison_resist = row[21] ? static_cast<int32_t>(atoi(row[21])) : 0;
|
||||
e.disease_resist = row[22] ? static_cast<int32_t>(atoi(row[22])) : 0;
|
||||
e.corruption_resist = row[23] ? static_cast<int32_t>(atoi(row[23])) : 0;
|
||||
e.heroic_strength = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
|
||||
e.heroic_stamina = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.heroic_dexterity = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.heroic_agility = row[27] ? static_cast<int32_t>(atoi(row[27])) : 0;
|
||||
e.heroic_intelligence = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
|
||||
e.heroic_wisdom = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
|
||||
e.heroic_charisma = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
|
||||
e.heroic_magic_resist = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.heroic_fire_resist = row[32] ? static_cast<int32_t>(atoi(row[32])) : 0;
|
||||
e.heroic_cold_resist = row[33] ? static_cast<int32_t>(atoi(row[33])) : 0;
|
||||
e.heroic_poison_resist = row[34] ? static_cast<int32_t>(atoi(row[34])) : 0;
|
||||
e.heroic_disease_resist = row[35] ? static_cast<int32_t>(atoi(row[35])) : 0;
|
||||
e.heroic_corruption_resist = row[36] ? static_cast<int32_t>(atoi(row[36])) : 0;
|
||||
e.haste = row[37] ? static_cast<int32_t>(atoi(row[37])) : 0;
|
||||
e.accuracy = row[38] ? static_cast<int32_t>(atoi(row[38])) : 0;
|
||||
e.attack = row[39] ? static_cast<int32_t>(atoi(row[39])) : 0;
|
||||
e.avoidance = row[40] ? static_cast<int32_t>(atoi(row[40])) : 0;
|
||||
e.clairvoyance = row[41] ? static_cast<int32_t>(atoi(row[41])) : 0;
|
||||
e.combat_effects = row[42] ? static_cast<int32_t>(atoi(row[42])) : 0;
|
||||
e.damage_shield_mitigation = row[43] ? static_cast<int32_t>(atoi(row[43])) : 0;
|
||||
e.damage_shield = row[44] ? static_cast<int32_t>(atoi(row[44])) : 0;
|
||||
e.dot_shielding = row[45] ? static_cast<int32_t>(atoi(row[45])) : 0;
|
||||
e.hp_regen = row[46] ? static_cast<int32_t>(atoi(row[46])) : 0;
|
||||
e.mana_regen = row[47] ? static_cast<int32_t>(atoi(row[47])) : 0;
|
||||
e.endurance_regen = row[48] ? static_cast<int32_t>(atoi(row[48])) : 0;
|
||||
e.shielding = row[49] ? static_cast<int32_t>(atoi(row[49])) : 0;
|
||||
e.spell_damage = row[50] ? static_cast<int32_t>(atoi(row[50])) : 0;
|
||||
e.spell_shielding = row[51] ? static_cast<int32_t>(atoi(row[51])) : 0;
|
||||
e.strikethrough = row[52] ? static_cast<int32_t>(atoi(row[52])) : 0;
|
||||
e.stun_resist = row[53] ? static_cast<int32_t>(atoi(row[53])) : 0;
|
||||
e.backstab = row[54] ? static_cast<int32_t>(atoi(row[54])) : 0;
|
||||
e.wind = row[55] ? static_cast<int32_t>(atoi(row[55])) : 0;
|
||||
e.brass = row[56] ? static_cast<int32_t>(atoi(row[56])) : 0;
|
||||
e.string = row[57] ? static_cast<int32_t>(atoi(row[57])) : 0;
|
||||
e.percussion = row[58] ? static_cast<int32_t>(atoi(row[58])) : 0;
|
||||
e.singing = row[59] ? static_cast<int32_t>(atoi(row[59])) : 0;
|
||||
e.baking = row[60] ? static_cast<int32_t>(atoi(row[60])) : 0;
|
||||
e.alchemy = row[61] ? static_cast<int32_t>(atoi(row[61])) : 0;
|
||||
e.tailoring = row[62] ? static_cast<int32_t>(atoi(row[62])) : 0;
|
||||
e.blacksmithing = row[63] ? static_cast<int32_t>(atoi(row[63])) : 0;
|
||||
e.fletching = row[64] ? static_cast<int32_t>(atoi(row[64])) : 0;
|
||||
e.brewing = row[65] ? static_cast<int32_t>(atoi(row[65])) : 0;
|
||||
e.jewelry = row[66] ? static_cast<int32_t>(atoi(row[66])) : 0;
|
||||
e.pottery = row[67] ? static_cast<int32_t>(atoi(row[67])) : 0;
|
||||
e.research = row[68] ? static_cast<int32_t>(atoi(row[68])) : 0;
|
||||
e.alcohol = row[69] ? static_cast<int32_t>(atoi(row[69])) : 0;
|
||||
e.fishing = row[70] ? static_cast<int32_t>(atoi(row[70])) : 0;
|
||||
e.tinkering = row[71] ? static_cast<int32_t>(atoi(row[71])) : 0;
|
||||
e.created_at = strtoll(row[72] ? row[72] : "-1", nullptr, 10);
|
||||
e.updated_at = strtoll(row[73] ? row[73] : "-1", nullptr, 10);
|
||||
|
||||
@@ -820,78 +819,78 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterStatsRecord e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.status = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int32_t>(atoi(row[3]));
|
||||
e.class_ = static_cast<int32_t>(atoi(row[4]));
|
||||
e.race = static_cast<int32_t>(atoi(row[5]));
|
||||
e.aa_points = static_cast<int32_t>(atoi(row[6]));
|
||||
e.hp = strtoll(row[7], nullptr, 10);
|
||||
e.mana = strtoll(row[8], nullptr, 10);
|
||||
e.endurance = strtoll(row[9], nullptr, 10);
|
||||
e.ac = static_cast<int32_t>(atoi(row[10]));
|
||||
e.strength = static_cast<int32_t>(atoi(row[11]));
|
||||
e.stamina = static_cast<int32_t>(atoi(row[12]));
|
||||
e.dexterity = static_cast<int32_t>(atoi(row[13]));
|
||||
e.agility = static_cast<int32_t>(atoi(row[14]));
|
||||
e.intelligence = static_cast<int32_t>(atoi(row[15]));
|
||||
e.wisdom = static_cast<int32_t>(atoi(row[16]));
|
||||
e.charisma = static_cast<int32_t>(atoi(row[17]));
|
||||
e.magic_resist = static_cast<int32_t>(atoi(row[18]));
|
||||
e.fire_resist = static_cast<int32_t>(atoi(row[19]));
|
||||
e.cold_resist = static_cast<int32_t>(atoi(row[20]));
|
||||
e.poison_resist = static_cast<int32_t>(atoi(row[21]));
|
||||
e.disease_resist = static_cast<int32_t>(atoi(row[22]));
|
||||
e.corruption_resist = static_cast<int32_t>(atoi(row[23]));
|
||||
e.heroic_strength = static_cast<int32_t>(atoi(row[24]));
|
||||
e.heroic_stamina = static_cast<int32_t>(atoi(row[25]));
|
||||
e.heroic_dexterity = static_cast<int32_t>(atoi(row[26]));
|
||||
e.heroic_agility = static_cast<int32_t>(atoi(row[27]));
|
||||
e.heroic_intelligence = static_cast<int32_t>(atoi(row[28]));
|
||||
e.heroic_wisdom = static_cast<int32_t>(atoi(row[29]));
|
||||
e.heroic_charisma = static_cast<int32_t>(atoi(row[30]));
|
||||
e.heroic_magic_resist = static_cast<int32_t>(atoi(row[31]));
|
||||
e.heroic_fire_resist = static_cast<int32_t>(atoi(row[32]));
|
||||
e.heroic_cold_resist = static_cast<int32_t>(atoi(row[33]));
|
||||
e.heroic_poison_resist = static_cast<int32_t>(atoi(row[34]));
|
||||
e.heroic_disease_resist = static_cast<int32_t>(atoi(row[35]));
|
||||
e.heroic_corruption_resist = static_cast<int32_t>(atoi(row[36]));
|
||||
e.haste = static_cast<int32_t>(atoi(row[37]));
|
||||
e.accuracy = static_cast<int32_t>(atoi(row[38]));
|
||||
e.attack = static_cast<int32_t>(atoi(row[39]));
|
||||
e.avoidance = static_cast<int32_t>(atoi(row[40]));
|
||||
e.clairvoyance = static_cast<int32_t>(atoi(row[41]));
|
||||
e.combat_effects = static_cast<int32_t>(atoi(row[42]));
|
||||
e.damage_shield_mitigation = static_cast<int32_t>(atoi(row[43]));
|
||||
e.damage_shield = static_cast<int32_t>(atoi(row[44]));
|
||||
e.dot_shielding = static_cast<int32_t>(atoi(row[45]));
|
||||
e.hp_regen = static_cast<int32_t>(atoi(row[46]));
|
||||
e.mana_regen = static_cast<int32_t>(atoi(row[47]));
|
||||
e.endurance_regen = static_cast<int32_t>(atoi(row[48]));
|
||||
e.shielding = static_cast<int32_t>(atoi(row[49]));
|
||||
e.spell_damage = static_cast<int32_t>(atoi(row[50]));
|
||||
e.spell_shielding = static_cast<int32_t>(atoi(row[51]));
|
||||
e.strikethrough = static_cast<int32_t>(atoi(row[52]));
|
||||
e.stun_resist = static_cast<int32_t>(atoi(row[53]));
|
||||
e.backstab = static_cast<int32_t>(atoi(row[54]));
|
||||
e.wind = static_cast<int32_t>(atoi(row[55]));
|
||||
e.brass = static_cast<int32_t>(atoi(row[56]));
|
||||
e.string = static_cast<int32_t>(atoi(row[57]));
|
||||
e.percussion = static_cast<int32_t>(atoi(row[58]));
|
||||
e.singing = static_cast<int32_t>(atoi(row[59]));
|
||||
e.baking = static_cast<int32_t>(atoi(row[60]));
|
||||
e.alchemy = static_cast<int32_t>(atoi(row[61]));
|
||||
e.tailoring = static_cast<int32_t>(atoi(row[62]));
|
||||
e.blacksmithing = static_cast<int32_t>(atoi(row[63]));
|
||||
e.fletching = static_cast<int32_t>(atoi(row[64]));
|
||||
e.brewing = static_cast<int32_t>(atoi(row[65]));
|
||||
e.jewelry = static_cast<int32_t>(atoi(row[66]));
|
||||
e.pottery = static_cast<int32_t>(atoi(row[67]));
|
||||
e.research = static_cast<int32_t>(atoi(row[68]));
|
||||
e.alcohol = static_cast<int32_t>(atoi(row[69]));
|
||||
e.fishing = static_cast<int32_t>(atoi(row[70]));
|
||||
e.tinkering = static_cast<int32_t>(atoi(row[71]));
|
||||
e.status = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.class_ = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.race = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.aa_points = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
|
||||
e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
|
||||
e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
|
||||
e.ac = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.strength = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.stamina = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.dexterity = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.agility = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.intelligence = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.wisdom = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
|
||||
e.charisma = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.magic_resist = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.fire_resist = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.cold_resist = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
|
||||
e.poison_resist = row[21] ? static_cast<int32_t>(atoi(row[21])) : 0;
|
||||
e.disease_resist = row[22] ? static_cast<int32_t>(atoi(row[22])) : 0;
|
||||
e.corruption_resist = row[23] ? static_cast<int32_t>(atoi(row[23])) : 0;
|
||||
e.heroic_strength = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
|
||||
e.heroic_stamina = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.heroic_dexterity = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.heroic_agility = row[27] ? static_cast<int32_t>(atoi(row[27])) : 0;
|
||||
e.heroic_intelligence = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
|
||||
e.heroic_wisdom = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
|
||||
e.heroic_charisma = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
|
||||
e.heroic_magic_resist = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.heroic_fire_resist = row[32] ? static_cast<int32_t>(atoi(row[32])) : 0;
|
||||
e.heroic_cold_resist = row[33] ? static_cast<int32_t>(atoi(row[33])) : 0;
|
||||
e.heroic_poison_resist = row[34] ? static_cast<int32_t>(atoi(row[34])) : 0;
|
||||
e.heroic_disease_resist = row[35] ? static_cast<int32_t>(atoi(row[35])) : 0;
|
||||
e.heroic_corruption_resist = row[36] ? static_cast<int32_t>(atoi(row[36])) : 0;
|
||||
e.haste = row[37] ? static_cast<int32_t>(atoi(row[37])) : 0;
|
||||
e.accuracy = row[38] ? static_cast<int32_t>(atoi(row[38])) : 0;
|
||||
e.attack = row[39] ? static_cast<int32_t>(atoi(row[39])) : 0;
|
||||
e.avoidance = row[40] ? static_cast<int32_t>(atoi(row[40])) : 0;
|
||||
e.clairvoyance = row[41] ? static_cast<int32_t>(atoi(row[41])) : 0;
|
||||
e.combat_effects = row[42] ? static_cast<int32_t>(atoi(row[42])) : 0;
|
||||
e.damage_shield_mitigation = row[43] ? static_cast<int32_t>(atoi(row[43])) : 0;
|
||||
e.damage_shield = row[44] ? static_cast<int32_t>(atoi(row[44])) : 0;
|
||||
e.dot_shielding = row[45] ? static_cast<int32_t>(atoi(row[45])) : 0;
|
||||
e.hp_regen = row[46] ? static_cast<int32_t>(atoi(row[46])) : 0;
|
||||
e.mana_regen = row[47] ? static_cast<int32_t>(atoi(row[47])) : 0;
|
||||
e.endurance_regen = row[48] ? static_cast<int32_t>(atoi(row[48])) : 0;
|
||||
e.shielding = row[49] ? static_cast<int32_t>(atoi(row[49])) : 0;
|
||||
e.spell_damage = row[50] ? static_cast<int32_t>(atoi(row[50])) : 0;
|
||||
e.spell_shielding = row[51] ? static_cast<int32_t>(atoi(row[51])) : 0;
|
||||
e.strikethrough = row[52] ? static_cast<int32_t>(atoi(row[52])) : 0;
|
||||
e.stun_resist = row[53] ? static_cast<int32_t>(atoi(row[53])) : 0;
|
||||
e.backstab = row[54] ? static_cast<int32_t>(atoi(row[54])) : 0;
|
||||
e.wind = row[55] ? static_cast<int32_t>(atoi(row[55])) : 0;
|
||||
e.brass = row[56] ? static_cast<int32_t>(atoi(row[56])) : 0;
|
||||
e.string = row[57] ? static_cast<int32_t>(atoi(row[57])) : 0;
|
||||
e.percussion = row[58] ? static_cast<int32_t>(atoi(row[58])) : 0;
|
||||
e.singing = row[59] ? static_cast<int32_t>(atoi(row[59])) : 0;
|
||||
e.baking = row[60] ? static_cast<int32_t>(atoi(row[60])) : 0;
|
||||
e.alchemy = row[61] ? static_cast<int32_t>(atoi(row[61])) : 0;
|
||||
e.tailoring = row[62] ? static_cast<int32_t>(atoi(row[62])) : 0;
|
||||
e.blacksmithing = row[63] ? static_cast<int32_t>(atoi(row[63])) : 0;
|
||||
e.fletching = row[64] ? static_cast<int32_t>(atoi(row[64])) : 0;
|
||||
e.brewing = row[65] ? static_cast<int32_t>(atoi(row[65])) : 0;
|
||||
e.jewelry = row[66] ? static_cast<int32_t>(atoi(row[66])) : 0;
|
||||
e.pottery = row[67] ? static_cast<int32_t>(atoi(row[67])) : 0;
|
||||
e.research = row[68] ? static_cast<int32_t>(atoi(row[68])) : 0;
|
||||
e.alcohol = row[69] ? static_cast<int32_t>(atoi(row[69])) : 0;
|
||||
e.fishing = row[70] ? static_cast<int32_t>(atoi(row[70])) : 0;
|
||||
e.tinkering = row[71] ? static_cast<int32_t>(atoi(row[71])) : 0;
|
||||
e.created_at = strtoll(row[72] ? row[72] : "-1", nullptr, 10);
|
||||
e.updated_at = strtoll(row[73] ? row[73] : "-1", nullptr, 10);
|
||||
|
||||
@@ -918,78 +917,78 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterStatsRecord e{};
|
||||
|
||||
e.character_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.status = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int32_t>(atoi(row[3]));
|
||||
e.class_ = static_cast<int32_t>(atoi(row[4]));
|
||||
e.race = static_cast<int32_t>(atoi(row[5]));
|
||||
e.aa_points = static_cast<int32_t>(atoi(row[6]));
|
||||
e.hp = strtoll(row[7], nullptr, 10);
|
||||
e.mana = strtoll(row[8], nullptr, 10);
|
||||
e.endurance = strtoll(row[9], nullptr, 10);
|
||||
e.ac = static_cast<int32_t>(atoi(row[10]));
|
||||
e.strength = static_cast<int32_t>(atoi(row[11]));
|
||||
e.stamina = static_cast<int32_t>(atoi(row[12]));
|
||||
e.dexterity = static_cast<int32_t>(atoi(row[13]));
|
||||
e.agility = static_cast<int32_t>(atoi(row[14]));
|
||||
e.intelligence = static_cast<int32_t>(atoi(row[15]));
|
||||
e.wisdom = static_cast<int32_t>(atoi(row[16]));
|
||||
e.charisma = static_cast<int32_t>(atoi(row[17]));
|
||||
e.magic_resist = static_cast<int32_t>(atoi(row[18]));
|
||||
e.fire_resist = static_cast<int32_t>(atoi(row[19]));
|
||||
e.cold_resist = static_cast<int32_t>(atoi(row[20]));
|
||||
e.poison_resist = static_cast<int32_t>(atoi(row[21]));
|
||||
e.disease_resist = static_cast<int32_t>(atoi(row[22]));
|
||||
e.corruption_resist = static_cast<int32_t>(atoi(row[23]));
|
||||
e.heroic_strength = static_cast<int32_t>(atoi(row[24]));
|
||||
e.heroic_stamina = static_cast<int32_t>(atoi(row[25]));
|
||||
e.heroic_dexterity = static_cast<int32_t>(atoi(row[26]));
|
||||
e.heroic_agility = static_cast<int32_t>(atoi(row[27]));
|
||||
e.heroic_intelligence = static_cast<int32_t>(atoi(row[28]));
|
||||
e.heroic_wisdom = static_cast<int32_t>(atoi(row[29]));
|
||||
e.heroic_charisma = static_cast<int32_t>(atoi(row[30]));
|
||||
e.heroic_magic_resist = static_cast<int32_t>(atoi(row[31]));
|
||||
e.heroic_fire_resist = static_cast<int32_t>(atoi(row[32]));
|
||||
e.heroic_cold_resist = static_cast<int32_t>(atoi(row[33]));
|
||||
e.heroic_poison_resist = static_cast<int32_t>(atoi(row[34]));
|
||||
e.heroic_disease_resist = static_cast<int32_t>(atoi(row[35]));
|
||||
e.heroic_corruption_resist = static_cast<int32_t>(atoi(row[36]));
|
||||
e.haste = static_cast<int32_t>(atoi(row[37]));
|
||||
e.accuracy = static_cast<int32_t>(atoi(row[38]));
|
||||
e.attack = static_cast<int32_t>(atoi(row[39]));
|
||||
e.avoidance = static_cast<int32_t>(atoi(row[40]));
|
||||
e.clairvoyance = static_cast<int32_t>(atoi(row[41]));
|
||||
e.combat_effects = static_cast<int32_t>(atoi(row[42]));
|
||||
e.damage_shield_mitigation = static_cast<int32_t>(atoi(row[43]));
|
||||
e.damage_shield = static_cast<int32_t>(atoi(row[44]));
|
||||
e.dot_shielding = static_cast<int32_t>(atoi(row[45]));
|
||||
e.hp_regen = static_cast<int32_t>(atoi(row[46]));
|
||||
e.mana_regen = static_cast<int32_t>(atoi(row[47]));
|
||||
e.endurance_regen = static_cast<int32_t>(atoi(row[48]));
|
||||
e.shielding = static_cast<int32_t>(atoi(row[49]));
|
||||
e.spell_damage = static_cast<int32_t>(atoi(row[50]));
|
||||
e.spell_shielding = static_cast<int32_t>(atoi(row[51]));
|
||||
e.strikethrough = static_cast<int32_t>(atoi(row[52]));
|
||||
e.stun_resist = static_cast<int32_t>(atoi(row[53]));
|
||||
e.backstab = static_cast<int32_t>(atoi(row[54]));
|
||||
e.wind = static_cast<int32_t>(atoi(row[55]));
|
||||
e.brass = static_cast<int32_t>(atoi(row[56]));
|
||||
e.string = static_cast<int32_t>(atoi(row[57]));
|
||||
e.percussion = static_cast<int32_t>(atoi(row[58]));
|
||||
e.singing = static_cast<int32_t>(atoi(row[59]));
|
||||
e.baking = static_cast<int32_t>(atoi(row[60]));
|
||||
e.alchemy = static_cast<int32_t>(atoi(row[61]));
|
||||
e.tailoring = static_cast<int32_t>(atoi(row[62]));
|
||||
e.blacksmithing = static_cast<int32_t>(atoi(row[63]));
|
||||
e.fletching = static_cast<int32_t>(atoi(row[64]));
|
||||
e.brewing = static_cast<int32_t>(atoi(row[65]));
|
||||
e.jewelry = static_cast<int32_t>(atoi(row[66]));
|
||||
e.pottery = static_cast<int32_t>(atoi(row[67]));
|
||||
e.research = static_cast<int32_t>(atoi(row[68]));
|
||||
e.alcohol = static_cast<int32_t>(atoi(row[69]));
|
||||
e.fishing = static_cast<int32_t>(atoi(row[70]));
|
||||
e.tinkering = static_cast<int32_t>(atoi(row[71]));
|
||||
e.status = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.class_ = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.race = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.aa_points = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.hp = row[7] ? strtoll(row[7], nullptr, 10) : 0;
|
||||
e.mana = row[8] ? strtoll(row[8], nullptr, 10) : 0;
|
||||
e.endurance = row[9] ? strtoll(row[9], nullptr, 10) : 0;
|
||||
e.ac = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
|
||||
e.strength = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.stamina = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.dexterity = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.agility = row[14] ? static_cast<int32_t>(atoi(row[14])) : 0;
|
||||
e.intelligence = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.wisdom = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
|
||||
e.charisma = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.magic_resist = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.fire_resist = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.cold_resist = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
|
||||
e.poison_resist = row[21] ? static_cast<int32_t>(atoi(row[21])) : 0;
|
||||
e.disease_resist = row[22] ? static_cast<int32_t>(atoi(row[22])) : 0;
|
||||
e.corruption_resist = row[23] ? static_cast<int32_t>(atoi(row[23])) : 0;
|
||||
e.heroic_strength = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
|
||||
e.heroic_stamina = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.heroic_dexterity = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.heroic_agility = row[27] ? static_cast<int32_t>(atoi(row[27])) : 0;
|
||||
e.heroic_intelligence = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
|
||||
e.heroic_wisdom = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
|
||||
e.heroic_charisma = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
|
||||
e.heroic_magic_resist = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.heroic_fire_resist = row[32] ? static_cast<int32_t>(atoi(row[32])) : 0;
|
||||
e.heroic_cold_resist = row[33] ? static_cast<int32_t>(atoi(row[33])) : 0;
|
||||
e.heroic_poison_resist = row[34] ? static_cast<int32_t>(atoi(row[34])) : 0;
|
||||
e.heroic_disease_resist = row[35] ? static_cast<int32_t>(atoi(row[35])) : 0;
|
||||
e.heroic_corruption_resist = row[36] ? static_cast<int32_t>(atoi(row[36])) : 0;
|
||||
e.haste = row[37] ? static_cast<int32_t>(atoi(row[37])) : 0;
|
||||
e.accuracy = row[38] ? static_cast<int32_t>(atoi(row[38])) : 0;
|
||||
e.attack = row[39] ? static_cast<int32_t>(atoi(row[39])) : 0;
|
||||
e.avoidance = row[40] ? static_cast<int32_t>(atoi(row[40])) : 0;
|
||||
e.clairvoyance = row[41] ? static_cast<int32_t>(atoi(row[41])) : 0;
|
||||
e.combat_effects = row[42] ? static_cast<int32_t>(atoi(row[42])) : 0;
|
||||
e.damage_shield_mitigation = row[43] ? static_cast<int32_t>(atoi(row[43])) : 0;
|
||||
e.damage_shield = row[44] ? static_cast<int32_t>(atoi(row[44])) : 0;
|
||||
e.dot_shielding = row[45] ? static_cast<int32_t>(atoi(row[45])) : 0;
|
||||
e.hp_regen = row[46] ? static_cast<int32_t>(atoi(row[46])) : 0;
|
||||
e.mana_regen = row[47] ? static_cast<int32_t>(atoi(row[47])) : 0;
|
||||
e.endurance_regen = row[48] ? static_cast<int32_t>(atoi(row[48])) : 0;
|
||||
e.shielding = row[49] ? static_cast<int32_t>(atoi(row[49])) : 0;
|
||||
e.spell_damage = row[50] ? static_cast<int32_t>(atoi(row[50])) : 0;
|
||||
e.spell_shielding = row[51] ? static_cast<int32_t>(atoi(row[51])) : 0;
|
||||
e.strikethrough = row[52] ? static_cast<int32_t>(atoi(row[52])) : 0;
|
||||
e.stun_resist = row[53] ? static_cast<int32_t>(atoi(row[53])) : 0;
|
||||
e.backstab = row[54] ? static_cast<int32_t>(atoi(row[54])) : 0;
|
||||
e.wind = row[55] ? static_cast<int32_t>(atoi(row[55])) : 0;
|
||||
e.brass = row[56] ? static_cast<int32_t>(atoi(row[56])) : 0;
|
||||
e.string = row[57] ? static_cast<int32_t>(atoi(row[57])) : 0;
|
||||
e.percussion = row[58] ? static_cast<int32_t>(atoi(row[58])) : 0;
|
||||
e.singing = row[59] ? static_cast<int32_t>(atoi(row[59])) : 0;
|
||||
e.baking = row[60] ? static_cast<int32_t>(atoi(row[60])) : 0;
|
||||
e.alchemy = row[61] ? static_cast<int32_t>(atoi(row[61])) : 0;
|
||||
e.tailoring = row[62] ? static_cast<int32_t>(atoi(row[62])) : 0;
|
||||
e.blacksmithing = row[63] ? static_cast<int32_t>(atoi(row[63])) : 0;
|
||||
e.fletching = row[64] ? static_cast<int32_t>(atoi(row[64])) : 0;
|
||||
e.brewing = row[65] ? static_cast<int32_t>(atoi(row[65])) : 0;
|
||||
e.jewelry = row[66] ? static_cast<int32_t>(atoi(row[66])) : 0;
|
||||
e.pottery = row[67] ? static_cast<int32_t>(atoi(row[67])) : 0;
|
||||
e.research = row[68] ? static_cast<int32_t>(atoi(row[68])) : 0;
|
||||
e.alcohol = row[69] ? static_cast<int32_t>(atoi(row[69])) : 0;
|
||||
e.fishing = row[70] ? static_cast<int32_t>(atoi(row[70])) : 0;
|
||||
e.tinkering = row[71] ? static_cast<int32_t>(atoi(row[71])) : 0;
|
||||
e.created_at = strtoll(row[72] ? row[72] : "-1", nullptr, 10);
|
||||
e.updated_at = strtoll(row[73] ? row[73] : "-1", nullptr, 10);
|
||||
|
||||
@@ -1050,6 +1049,208 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_task_timers_id
|
||||
)
|
||||
);
|
||||
@@ -134,11 +135,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterTaskTimers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.timer_type = static_cast<int32_t>(atoi(row[3]));
|
||||
e.timer_group = static_cast<int32_t>(atoi(row[4]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.timer_type = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.timer_group = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
|
||||
|
||||
return e;
|
||||
@@ -273,11 +274,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTaskTimers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.timer_type = static_cast<int32_t>(atoi(row[3]));
|
||||
e.timer_group = static_cast<int32_t>(atoi(row[4]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.timer_type = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.timer_group = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -303,11 +304,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTaskTimers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.task_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.timer_type = static_cast<int32_t>(atoi(row[3]));
|
||||
e.timer_group = static_cast<int32_t>(atoi(row[4]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.task_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.timer_type = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.timer_group = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.expire_time = strtoll(row[5] ? row[5] : "-1", nullptr, 10);
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -367,6 +368,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
character_tasks_id
|
||||
)
|
||||
);
|
||||
@@ -134,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[3]));
|
||||
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.type = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.was_rewarded = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -274,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[3]));
|
||||
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.type = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.was_rewarded = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -304,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.slot = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.type = static_cast<int8_t>(atoi(row[3]));
|
||||
e.acceptedtime = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
|
||||
e.was_rewarded = static_cast<int8_t>(atoi(row[5]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.taskid = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.slot = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.type = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
e.acceptedtime = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
|
||||
e.was_rewarded = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -368,6 +369,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterTributeRepository {
|
||||
public:
|
||||
struct CharacterTribute {
|
||||
@@ -128,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CharacterTribute e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -259,10 +258,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTribute e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -287,10 +286,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CharacterTribute e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.tier = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.tribute = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.character_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.tier = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.tribute = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -349,6 +348,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseChatchannelReservedNamesRepository {
|
||||
public:
|
||||
struct ChatchannelReservedNames {
|
||||
@@ -120,7 +119,7 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
ChatchannelReservedNames e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
|
||||
return e;
|
||||
@@ -243,7 +242,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ChatchannelReservedNames e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -269,7 +268,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ChatchannelReservedNames e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -329,6 +328,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseChatchannelsRepository {
|
||||
public:
|
||||
struct Chatchannels {
|
||||
@@ -132,11 +131,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Chatchannels e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.owner = row[2] ? row[2] : "";
|
||||
e.password = row[3] ? row[3] : "";
|
||||
e.minstatus = static_cast<int32_t>(atoi(row[4]));
|
||||
e.minstatus = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -267,11 +266,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Chatchannels e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.owner = row[2] ? row[2] : "";
|
||||
e.password = row[3] ? row[3] : "";
|
||||
e.minstatus = static_cast<int32_t>(atoi(row[4]));
|
||||
e.minstatus = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -296,11 +295,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Chatchannels e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.owner = row[2] ? row[2] : "";
|
||||
e.password = row[3] ? row[3] : "";
|
||||
e.minstatus = static_cast<int32_t>(atoi(row[4]));
|
||||
e.minstatus = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -359,6 +358,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCommandSubsettingsRepository {
|
||||
public:
|
||||
struct CommandSubsettings {
|
||||
@@ -132,10 +131,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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.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] : "";
|
||||
|
||||
return e;
|
||||
@@ -267,10 +266,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -296,10 +295,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -359,6 +358,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -120,8 +120,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
completed_shared_task_activity_state_id
|
||||
)
|
||||
);
|
||||
@@ -130,9 +131,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CompletedSharedTaskActivityState e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.activity_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.done_count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.activity_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.done_count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completed_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
|
||||
@@ -266,9 +267,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTaskActivityState e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.activity_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.done_count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.activity_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.done_count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completed_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
|
||||
@@ -295,9 +296,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTaskActivityState e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.activity_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.done_count = static_cast<int32_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.activity_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.done_count = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.updated_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completed_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
|
||||
@@ -358,6 +359,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
completed_shared_task_members_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CompletedSharedTaskMembers e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.character_id = strtoll(row[1], nullptr, 10);
|
||||
e.is_leader = static_cast<int8_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
|
||||
e.is_leader = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -250,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTaskMembers e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.character_id = strtoll(row[1], nullptr, 10);
|
||||
e.is_leader = static_cast<int8_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
|
||||
e.is_leader = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -277,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTaskMembers e{};
|
||||
|
||||
e.shared_task_id = strtoll(row[0], nullptr, 10);
|
||||
e.character_id = strtoll(row[1], nullptr, 10);
|
||||
e.is_leader = static_cast<int8_t>(atoi(row[2]));
|
||||
e.shared_task_id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.character_id = row[1] ? strtoll(row[1], nullptr, 10) : 0;
|
||||
e.is_leader = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
completed_shared_tasks_id
|
||||
)
|
||||
);
|
||||
@@ -134,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CompletedSharedTasks e{};
|
||||
|
||||
e.id = strtoll(row[0], nullptr, 10);
|
||||
e.task_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.task_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
|
||||
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completion_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[5]));
|
||||
e.is_locked = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -274,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTasks e{};
|
||||
|
||||
e.id = strtoll(row[0], nullptr, 10);
|
||||
e.task_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.task_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
|
||||
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completion_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[5]));
|
||||
e.is_locked = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -304,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedSharedTasks e{};
|
||||
|
||||
e.id = strtoll(row[0], nullptr, 10);
|
||||
e.task_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? strtoll(row[0], nullptr, 10) : 0;
|
||||
e.task_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.accepted_time = strtoll(row[2] ? row[2] : "-1", nullptr, 10);
|
||||
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
e.completion_time = strtoll(row[4] ? row[4] : "-1", nullptr, 10);
|
||||
e.is_locked = static_cast<int8_t>(atoi(row[5]));
|
||||
e.is_locked = row[5] ? static_cast<int8_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -368,6 +369,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
completed_tasks_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
CompletedTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.activityid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.activityid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -258,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.activityid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.activityid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -286,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
CompletedTasks e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.completedtime = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.taskid = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.activityid = static_cast<int32_t>(atoi(row[3]));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.completedtime = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.taskid = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.activityid = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -348,6 +349,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
content_flags_id
|
||||
)
|
||||
);
|
||||
@@ -126,9 +127,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
ContentFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.flag_name = row[1] ? row[1] : "";
|
||||
e.enabled = static_cast<int8_t>(atoi(row[2]));
|
||||
e.enabled = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.notes = row[3] ? row[3] : "";
|
||||
|
||||
return e;
|
||||
@@ -257,9 +258,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ContentFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.flag_name = row[1] ? row[1] : "";
|
||||
e.enabled = static_cast<int8_t>(atoi(row[2]));
|
||||
e.enabled = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.notes = row[3] ? row[3] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -285,9 +286,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ContentFlags e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.flag_name = row[1] ? row[1] : "";
|
||||
e.enabled = static_cast<int8_t>(atoi(row[2]));
|
||||
e.enabled = row[2] ? static_cast<int8_t>(atoi(row[2])) : 0;
|
||||
e.notes = row[3] ? row[3] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -347,6 +348,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -108,8 +108,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
damageshieldtypes_id
|
||||
)
|
||||
);
|
||||
@@ -118,8 +119,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Damageshieldtypes e{};
|
||||
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -242,8 +243,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Damageshieldtypes e{};
|
||||
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -268,8 +269,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Damageshieldtypes e{};
|
||||
|
||||
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -328,6 +329,64 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
#include <cereal/cereal.hpp>
|
||||
|
||||
class BaseDataBucketsRepository {
|
||||
public:
|
||||
struct DataBuckets {
|
||||
@@ -155,13 +154,13 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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.value = row[2] ? row[2] : "";
|
||||
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = strtoll(row[4], nullptr, 10);
|
||||
e.npc_id = strtoll(row[5], nullptr, 10);
|
||||
e.bot_id = strtoll(row[6], nullptr, 10);
|
||||
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
|
||||
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
|
||||
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -298,13 +297,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.value = row[2] ? row[2] : "";
|
||||
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = strtoll(row[4], nullptr, 10);
|
||||
e.npc_id = strtoll(row[5], nullptr, 10);
|
||||
e.bot_id = strtoll(row[6], nullptr, 10);
|
||||
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
|
||||
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
|
||||
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -329,13 +328,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.value = row[2] ? row[2] : "";
|
||||
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
|
||||
e.character_id = strtoll(row[4], nullptr, 10);
|
||||
e.npc_id = strtoll(row[5], nullptr, 10);
|
||||
e.bot_id = strtoll(row[6], nullptr, 10);
|
||||
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
|
||||
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
|
||||
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -394,6 +393,74 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
db_str_id
|
||||
)
|
||||
);
|
||||
@@ -122,8 +123,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
DbStr e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.value = row[2] ? row[2] : "";
|
||||
|
||||
return e;
|
||||
@@ -250,8 +251,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DbStr e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.value = row[2] ? row[2] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -277,8 +278,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DbStr e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.type = static_cast<int32_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.value = row[2] ? row[2] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -120,8 +120,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
discord_webhooks_id
|
||||
)
|
||||
);
|
||||
@@ -130,7 +131,7 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
DiscordWebhooks e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.webhook_name = row[1] ? row[1] : "";
|
||||
e.webhook_url = row[2] ? row[2] : "";
|
||||
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
@@ -265,7 +266,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DiscordWebhooks e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.webhook_name = row[1] ? row[1] : "";
|
||||
e.webhook_url = row[2] ? row[2] : "";
|
||||
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
@@ -294,7 +295,7 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DiscordWebhooks e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.webhook_name = row[1] ? row[1] : "";
|
||||
e.webhook_url = row[2] ? row[2] : "";
|
||||
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
|
||||
@@ -357,6 +358,70 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
discovered_items_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
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.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_status = static_cast<int32_t>(atoi(row[3]));
|
||||
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -258,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_status = static_cast<int32_t>(atoi(row[3]));
|
||||
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -286,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
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.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.account_status = static_cast<int32_t>(atoi(row[3]));
|
||||
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -348,6 +349,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -244,8 +244,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
doors_id
|
||||
)
|
||||
);
|
||||
@@ -254,40 +255,40 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Doors e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.doorid = static_cast<int16_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
|
||||
e.zone = row[2] ? row[2] : "";
|
||||
e.version = static_cast<int16_t>(atoi(row[3]));
|
||||
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.pos_y = strtof(row[5], nullptr);
|
||||
e.pos_x = strtof(row[6], nullptr);
|
||||
e.pos_z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.opentype = static_cast<int16_t>(atoi(row[9]));
|
||||
e.guild = static_cast<int16_t>(atoi(row[10]));
|
||||
e.lockpick = static_cast<int16_t>(atoi(row[11]));
|
||||
e.keyitem = static_cast<int32_t>(atoi(row[12]));
|
||||
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
|
||||
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
|
||||
e.triggertype = static_cast<int16_t>(atoi(row[15]));
|
||||
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
|
||||
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
|
||||
e.door_param = static_cast<int32_t>(atoi(row[18]));
|
||||
e.dest_zone = row[19] ? row[19] : "";
|
||||
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.dest_x = strtof(row[21], nullptr);
|
||||
e.dest_y = strtof(row[22], nullptr);
|
||||
e.dest_z = strtof(row[23], nullptr);
|
||||
e.dest_heading = strtof(row[24], nullptr);
|
||||
e.invert_state = static_cast<int32_t>(atoi(row[25]));
|
||||
e.incline = static_cast<int32_t>(atoi(row[26]));
|
||||
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
|
||||
e.buffer = strtof(row[28], nullptr);
|
||||
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
|
||||
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
|
||||
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
|
||||
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
|
||||
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
|
||||
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
|
||||
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
|
||||
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.dest_zone = row[19] ? row[19] : "NONE";
|
||||
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
|
||||
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
|
||||
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
|
||||
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
|
||||
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
|
||||
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
|
||||
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
|
||||
e.content_flags = row[34] ? row[34] : "";
|
||||
e.content_flags_disabled = row[35] ? row[35] : "";
|
||||
|
||||
@@ -513,40 +514,40 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Doors e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.doorid = static_cast<int16_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
|
||||
e.zone = row[2] ? row[2] : "";
|
||||
e.version = static_cast<int16_t>(atoi(row[3]));
|
||||
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.pos_y = strtof(row[5], nullptr);
|
||||
e.pos_x = strtof(row[6], nullptr);
|
||||
e.pos_z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.opentype = static_cast<int16_t>(atoi(row[9]));
|
||||
e.guild = static_cast<int16_t>(atoi(row[10]));
|
||||
e.lockpick = static_cast<int16_t>(atoi(row[11]));
|
||||
e.keyitem = static_cast<int32_t>(atoi(row[12]));
|
||||
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
|
||||
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
|
||||
e.triggertype = static_cast<int16_t>(atoi(row[15]));
|
||||
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
|
||||
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
|
||||
e.door_param = static_cast<int32_t>(atoi(row[18]));
|
||||
e.dest_zone = row[19] ? row[19] : "";
|
||||
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.dest_x = strtof(row[21], nullptr);
|
||||
e.dest_y = strtof(row[22], nullptr);
|
||||
e.dest_z = strtof(row[23], nullptr);
|
||||
e.dest_heading = strtof(row[24], nullptr);
|
||||
e.invert_state = static_cast<int32_t>(atoi(row[25]));
|
||||
e.incline = static_cast<int32_t>(atoi(row[26]));
|
||||
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
|
||||
e.buffer = strtof(row[28], nullptr);
|
||||
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
|
||||
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
|
||||
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
|
||||
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
|
||||
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
|
||||
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
|
||||
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
|
||||
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.dest_zone = row[19] ? row[19] : "NONE";
|
||||
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
|
||||
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
|
||||
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
|
||||
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
|
||||
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
|
||||
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
|
||||
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
|
||||
e.content_flags = row[34] ? row[34] : "";
|
||||
e.content_flags_disabled = row[35] ? row[35] : "";
|
||||
|
||||
@@ -573,40 +574,40 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Doors e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.doorid = static_cast<int16_t>(atoi(row[1]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
|
||||
e.zone = row[2] ? row[2] : "";
|
||||
e.version = static_cast<int16_t>(atoi(row[3]));
|
||||
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.pos_y = strtof(row[5], nullptr);
|
||||
e.pos_x = strtof(row[6], nullptr);
|
||||
e.pos_z = strtof(row[7], nullptr);
|
||||
e.heading = strtof(row[8], nullptr);
|
||||
e.opentype = static_cast<int16_t>(atoi(row[9]));
|
||||
e.guild = static_cast<int16_t>(atoi(row[10]));
|
||||
e.lockpick = static_cast<int16_t>(atoi(row[11]));
|
||||
e.keyitem = static_cast<int32_t>(atoi(row[12]));
|
||||
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
|
||||
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
|
||||
e.triggertype = static_cast<int16_t>(atoi(row[15]));
|
||||
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
|
||||
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
|
||||
e.door_param = static_cast<int32_t>(atoi(row[18]));
|
||||
e.dest_zone = row[19] ? row[19] : "";
|
||||
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
|
||||
e.dest_x = strtof(row[21], nullptr);
|
||||
e.dest_y = strtof(row[22], nullptr);
|
||||
e.dest_z = strtof(row[23], nullptr);
|
||||
e.dest_heading = strtof(row[24], nullptr);
|
||||
e.invert_state = static_cast<int32_t>(atoi(row[25]));
|
||||
e.incline = static_cast<int32_t>(atoi(row[26]));
|
||||
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
|
||||
e.buffer = strtof(row[28], nullptr);
|
||||
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
|
||||
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
|
||||
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
|
||||
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
|
||||
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
|
||||
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
|
||||
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
|
||||
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
|
||||
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
|
||||
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
|
||||
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
|
||||
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
|
||||
e.dest_zone = row[19] ? row[19] : "NONE";
|
||||
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
|
||||
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
|
||||
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
|
||||
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
|
||||
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
|
||||
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
|
||||
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
|
||||
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
|
||||
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
|
||||
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
|
||||
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
|
||||
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
|
||||
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
|
||||
e.content_flags = row[34] ? row[34] : "";
|
||||
e.content_flags_disabled = row[35] ? row[35] : "";
|
||||
|
||||
@@ -667,6 +668,132 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
dynamic_zone_members_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
DynamicZoneMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -249,9 +250,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZoneMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -276,9 +277,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZoneMembers e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -337,6 +338,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -188,8 +188,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
dynamic_zone_templates_id
|
||||
)
|
||||
);
|
||||
@@ -198,28 +199,28 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
DynamicZoneTemplates e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.name = row[3] ? row[3] : "";
|
||||
e.min_players = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_players = static_cast<int32_t>(atoi(row[5]));
|
||||
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
|
||||
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
|
||||
e.compass_x = strtof(row[9], nullptr);
|
||||
e.compass_y = strtof(row[10], nullptr);
|
||||
e.compass_z = strtof(row[11], nullptr);
|
||||
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.return_x = strtof(row[13], nullptr);
|
||||
e.return_y = strtof(row[14], nullptr);
|
||||
e.return_z = strtof(row[15], nullptr);
|
||||
e.return_h = strtof(row[16], nullptr);
|
||||
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_h = strtof(row[21], nullptr);
|
||||
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -401,28 +402,28 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZoneTemplates e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.name = row[3] ? row[3] : "";
|
||||
e.min_players = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_players = static_cast<int32_t>(atoi(row[5]));
|
||||
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
|
||||
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
|
||||
e.compass_x = strtof(row[9], nullptr);
|
||||
e.compass_y = strtof(row[10], nullptr);
|
||||
e.compass_z = strtof(row[11], nullptr);
|
||||
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.return_x = strtof(row[13], nullptr);
|
||||
e.return_y = strtof(row[14], nullptr);
|
||||
e.return_z = strtof(row[15], nullptr);
|
||||
e.return_h = strtof(row[16], nullptr);
|
||||
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_h = strtof(row[21], nullptr);
|
||||
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -447,28 +448,28 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZoneTemplates e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.zone_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.zone_version = static_cast<int32_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.name = row[3] ? row[3] : "";
|
||||
e.min_players = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_players = static_cast<int32_t>(atoi(row[5]));
|
||||
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
|
||||
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
|
||||
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
|
||||
e.compass_x = strtof(row[9], nullptr);
|
||||
e.compass_y = strtof(row[10], nullptr);
|
||||
e.compass_z = strtof(row[11], nullptr);
|
||||
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
|
||||
e.return_x = strtof(row[13], nullptr);
|
||||
e.return_y = strtof(row[14], nullptr);
|
||||
e.return_z = strtof(row[15], nullptr);
|
||||
e.return_h = strtof(row[16], nullptr);
|
||||
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_h = strtof(row[21], nullptr);
|
||||
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
|
||||
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
|
||||
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
|
||||
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -527,6 +528,104 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -192,8 +192,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
dynamic_zones_id
|
||||
)
|
||||
);
|
||||
@@ -202,29 +203,29 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
DynamicZones e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.uuid = row[3] ? row[3] : "";
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
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_x = strtof(row[10], nullptr);
|
||||
e.compass_y = strtof(row[11], nullptr);
|
||||
e.compass_z = strtof(row[12], nullptr);
|
||||
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.safe_return_x = strtof(row[14], nullptr);
|
||||
e.safe_return_y = strtof(row[15], nullptr);
|
||||
e.safe_return_z = strtof(row[16], nullptr);
|
||||
e.safe_return_heading = strtof(row[17], nullptr);
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_heading = strtof(row[21], nullptr);
|
||||
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -409,29 +410,29 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZones e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.uuid = row[3] ? row[3] : "";
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
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_x = strtof(row[10], nullptr);
|
||||
e.compass_y = strtof(row[11], nullptr);
|
||||
e.compass_z = strtof(row[12], nullptr);
|
||||
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.safe_return_x = strtof(row[14], nullptr);
|
||||
e.safe_return_y = strtof(row[15], nullptr);
|
||||
e.safe_return_z = strtof(row[16], nullptr);
|
||||
e.safe_return_heading = strtof(row[17], nullptr);
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_heading = strtof(row[21], nullptr);
|
||||
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -456,29 +457,29 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
DynamicZones e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.instance_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
|
||||
e.uuid = row[3] ? row[3] : "";
|
||||
e.name = row[4] ? row[4] : "";
|
||||
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
|
||||
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
|
||||
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
|
||||
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_x = strtof(row[10], nullptr);
|
||||
e.compass_y = strtof(row[11], nullptr);
|
||||
e.compass_z = strtof(row[12], nullptr);
|
||||
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
|
||||
e.safe_return_x = strtof(row[14], nullptr);
|
||||
e.safe_return_y = strtof(row[15], nullptr);
|
||||
e.safe_return_z = strtof(row[16], nullptr);
|
||||
e.safe_return_heading = strtof(row[17], nullptr);
|
||||
e.zone_in_x = strtof(row[18], nullptr);
|
||||
e.zone_in_y = strtof(row[19], nullptr);
|
||||
e.zone_in_z = strtof(row[20], nullptr);
|
||||
e.zone_in_heading = strtof(row[21], nullptr);
|
||||
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
|
||||
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
|
||||
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
|
||||
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
|
||||
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
|
||||
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
|
||||
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
|
||||
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
|
||||
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
|
||||
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
|
||||
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
|
||||
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
|
||||
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -537,6 +538,106 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
expedition_lockouts_id
|
||||
)
|
||||
);
|
||||
@@ -134,11 +135,11 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
ExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.event_name = row[2] ? row[2] : "";
|
||||
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] : "";
|
||||
|
||||
return e;
|
||||
@@ -273,11 +274,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.event_name = row[2] ? row[2] : "";
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -303,11 +304,11 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
ExpeditionLockouts e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.event_name = row[2] ? row[2] : "";
|
||||
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] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -367,6 +368,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
expeditions_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Expeditions e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
|
||||
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -257,10 +258,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Expeditions e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
|
||||
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -285,10 +286,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Expeditions e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
|
||||
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
|
||||
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -347,6 +348,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -184,8 +184,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
faction_association_id
|
||||
)
|
||||
);
|
||||
@@ -194,27 +195,27 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
FactionAssociation e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id_1 = static_cast<int32_t>(atoi(row[1]));
|
||||
e.mod_1 = strtof(row[2], nullptr);
|
||||
e.id_2 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.mod_2 = strtof(row[4], nullptr);
|
||||
e.id_3 = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mod_3 = strtof(row[6], nullptr);
|
||||
e.id_4 = static_cast<int32_t>(atoi(row[7]));
|
||||
e.mod_4 = strtof(row[8], nullptr);
|
||||
e.id_5 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.mod_5 = strtof(row[10], nullptr);
|
||||
e.id_6 = static_cast<int32_t>(atoi(row[11]));
|
||||
e.mod_6 = strtof(row[12], nullptr);
|
||||
e.id_7 = static_cast<int32_t>(atoi(row[13]));
|
||||
e.mod_7 = strtof(row[14], nullptr);
|
||||
e.id_8 = static_cast<int32_t>(atoi(row[15]));
|
||||
e.mod_8 = strtof(row[16], nullptr);
|
||||
e.id_9 = static_cast<int32_t>(atoi(row[17]));
|
||||
e.mod_9 = strtof(row[18], nullptr);
|
||||
e.id_10 = static_cast<int32_t>(atoi(row[19]));
|
||||
e.mod_10 = strtof(row[20], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
|
||||
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -394,27 +395,27 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionAssociation e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id_1 = static_cast<int32_t>(atoi(row[1]));
|
||||
e.mod_1 = strtof(row[2], nullptr);
|
||||
e.id_2 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.mod_2 = strtof(row[4], nullptr);
|
||||
e.id_3 = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mod_3 = strtof(row[6], nullptr);
|
||||
e.id_4 = static_cast<int32_t>(atoi(row[7]));
|
||||
e.mod_4 = strtof(row[8], nullptr);
|
||||
e.id_5 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.mod_5 = strtof(row[10], nullptr);
|
||||
e.id_6 = static_cast<int32_t>(atoi(row[11]));
|
||||
e.mod_6 = strtof(row[12], nullptr);
|
||||
e.id_7 = static_cast<int32_t>(atoi(row[13]));
|
||||
e.mod_7 = strtof(row[14], nullptr);
|
||||
e.id_8 = static_cast<int32_t>(atoi(row[15]));
|
||||
e.mod_8 = strtof(row[16], nullptr);
|
||||
e.id_9 = static_cast<int32_t>(atoi(row[17]));
|
||||
e.mod_9 = strtof(row[18], nullptr);
|
||||
e.id_10 = static_cast<int32_t>(atoi(row[19]));
|
||||
e.mod_10 = strtof(row[20], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
|
||||
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -439,27 +440,27 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionAssociation e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id_1 = static_cast<int32_t>(atoi(row[1]));
|
||||
e.mod_1 = strtof(row[2], nullptr);
|
||||
e.id_2 = static_cast<int32_t>(atoi(row[3]));
|
||||
e.mod_2 = strtof(row[4], nullptr);
|
||||
e.id_3 = static_cast<int32_t>(atoi(row[5]));
|
||||
e.mod_3 = strtof(row[6], nullptr);
|
||||
e.id_4 = static_cast<int32_t>(atoi(row[7]));
|
||||
e.mod_4 = strtof(row[8], nullptr);
|
||||
e.id_5 = static_cast<int32_t>(atoi(row[9]));
|
||||
e.mod_5 = strtof(row[10], nullptr);
|
||||
e.id_6 = static_cast<int32_t>(atoi(row[11]));
|
||||
e.mod_6 = strtof(row[12], nullptr);
|
||||
e.id_7 = static_cast<int32_t>(atoi(row[13]));
|
||||
e.mod_7 = strtof(row[14], nullptr);
|
||||
e.id_8 = static_cast<int32_t>(atoi(row[15]));
|
||||
e.mod_8 = strtof(row[16], nullptr);
|
||||
e.id_9 = static_cast<int32_t>(atoi(row[17]));
|
||||
e.mod_9 = strtof(row[18], nullptr);
|
||||
e.id_10 = static_cast<int32_t>(atoi(row[19]));
|
||||
e.mod_10 = strtof(row[20], nullptr);
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
|
||||
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
|
||||
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
|
||||
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
|
||||
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
|
||||
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
|
||||
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
|
||||
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
|
||||
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
|
||||
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
|
||||
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
|
||||
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
|
||||
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
|
||||
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
|
||||
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
|
||||
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
|
||||
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
|
||||
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -518,6 +519,102 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -124,8 +124,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
faction_base_data_id
|
||||
)
|
||||
);
|
||||
@@ -134,12 +135,12 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
FactionBaseData e{};
|
||||
|
||||
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
|
||||
e.min = static_cast<int16_t>(atoi(row[1]));
|
||||
e.max = static_cast<int16_t>(atoi(row[2]));
|
||||
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
|
||||
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
|
||||
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
|
||||
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
|
||||
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
|
||||
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
|
||||
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -274,12 +275,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionBaseData e{};
|
||||
|
||||
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
|
||||
e.min = static_cast<int16_t>(atoi(row[1]));
|
||||
e.max = static_cast<int16_t>(atoi(row[2]));
|
||||
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
|
||||
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
|
||||
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
|
||||
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
|
||||
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
|
||||
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
|
||||
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -304,12 +305,12 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionBaseData e{};
|
||||
|
||||
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
|
||||
e.min = static_cast<int16_t>(atoi(row[1]));
|
||||
e.max = static_cast<int16_t>(atoi(row[2]));
|
||||
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
|
||||
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
|
||||
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
|
||||
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
|
||||
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
|
||||
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
|
||||
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -368,6 +369,72 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
faction_list_mod_id
|
||||
)
|
||||
);
|
||||
@@ -126,9 +127,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
FactionListMod e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mod = static_cast<int16_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.mod_name = row[3] ? row[3] : "";
|
||||
|
||||
return e;
|
||||
@@ -257,9 +258,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionListMod e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mod = static_cast<int16_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.mod_name = row[3] ? row[3] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -285,9 +286,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionListMod e{};
|
||||
|
||||
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
|
||||
e.mod = static_cast<int16_t>(atoi(row[2]));
|
||||
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
|
||||
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.mod_name = row[3] ? row[3] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -347,6 +348,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
faction_list_id
|
||||
)
|
||||
);
|
||||
@@ -122,9 +123,9 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
FactionList e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.base = static_cast<int16_t>(atoi(row[2]));
|
||||
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -250,9 +251,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionList e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.base = static_cast<int16_t>(atoi(row[2]));
|
||||
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -277,9 +278,9 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionList e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.name = row[1] ? row[1] : "";
|
||||
e.base = static_cast<int16_t>(atoi(row[2]));
|
||||
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -116,8 +116,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
faction_values_id
|
||||
)
|
||||
);
|
||||
@@ -126,10 +127,10 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
FactionValues e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.faction_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.current_value = static_cast<int16_t>(atoi(row[2]));
|
||||
e.temp = static_cast<int8_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
|
||||
return e;
|
||||
}
|
||||
@@ -258,10 +259,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionValues e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.faction_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.current_value = static_cast<int16_t>(atoi(row[2]));
|
||||
e.temp = static_cast<int8_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -286,10 +287,10 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
FactionValues e{};
|
||||
|
||||
e.char_id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.faction_id = static_cast<int32_t>(atoi(row[1]));
|
||||
e.current_value = static_cast<int16_t>(atoi(row[2]));
|
||||
e.temp = static_cast<int8_t>(atoi(row[3]));
|
||||
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
|
||||
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
|
||||
|
||||
all_entries.push_back(e);
|
||||
}
|
||||
@@ -348,6 +349,68 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -144,8 +144,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
fishing_id
|
||||
)
|
||||
);
|
||||
@@ -154,15 +155,15 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Fishing e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.skill_level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.npc_id = static_cast<int32_t>(atoi(row[5]));
|
||||
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
|
||||
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
|
||||
e.content_flags = row[9] ? row[9] : "";
|
||||
e.content_flags_disabled = row[10] ? row[10] : "";
|
||||
|
||||
@@ -313,15 +314,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Fishing e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.skill_level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.npc_id = static_cast<int32_t>(atoi(row[5]));
|
||||
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
|
||||
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
|
||||
e.content_flags = row[9] ? row[9] : "";
|
||||
e.content_flags_disabled = row[10] ? row[10] : "";
|
||||
|
||||
@@ -348,15 +349,15 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Fishing e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.skill_level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.npc_id = static_cast<int32_t>(atoi(row[5]));
|
||||
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
|
||||
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
|
||||
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
|
||||
e.content_flags = row[9] ? row[9] : "";
|
||||
e.content_flags_disabled = row[10] ? row[10] : "";
|
||||
|
||||
@@ -417,6 +418,82 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -136,8 +136,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
forage_id
|
||||
)
|
||||
);
|
||||
@@ -146,13 +147,13 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Forage e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
|
||||
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
|
||||
e.content_flags = row[7] ? row[7] : "";
|
||||
e.content_flags_disabled = row[8] ? row[8] : "";
|
||||
|
||||
@@ -297,13 +298,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Forage e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
|
||||
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
|
||||
e.content_flags = row[7] ? row[7] : "";
|
||||
e.content_flags_disabled = row[8] ? row[8] : "";
|
||||
|
||||
@@ -330,13 +331,13 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Forage e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.zoneid = static_cast<int32_t>(atoi(row[1]));
|
||||
e.Itemid = static_cast<int32_t>(atoi(row[2]));
|
||||
e.level = static_cast<int16_t>(atoi(row[3]));
|
||||
e.chance = static_cast<int16_t>(atoi(row[4]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
|
||||
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
|
||||
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
|
||||
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
|
||||
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
|
||||
e.content_flags = row[7] ? row[7] : "";
|
||||
e.content_flags_disabled = row[8] ? row[8] : "";
|
||||
|
||||
@@ -397,6 +398,78 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
friends_id
|
||||
)
|
||||
);
|
||||
@@ -122,8 +123,8 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
Friends e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
|
||||
return e;
|
||||
@@ -250,8 +251,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Friends e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -277,8 +278,8 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
Friends e{};
|
||||
|
||||
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
|
||||
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
|
||||
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
|
||||
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
|
||||
e.name = row[2] ? row[2] : "";
|
||||
|
||||
all_entries.push_back(e);
|
||||
@@ -338,6 +339,66 @@ public:
|
||||
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
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Any modifications to base repositories are to be made by the generator only
|
||||
*
|
||||
* @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
|
||||
@@ -168,8 +168,9 @@ public:
|
||||
{
|
||||
auto results = db.QueryDatabase(
|
||||
fmt::format(
|
||||
"{} WHERE id = {} LIMIT 1",
|
||||
"{} WHERE {} = {} LIMIT 1",
|
||||
BaseSelect(),
|
||||
PrimaryKey(),
|
||||
global_loot_id
|
||||
)
|
||||
);
|
||||
@@ -178,21 +179,21 @@ public:
|
||||
if (results.RowCount() == 1) {
|
||||
GlobalLoot e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.description = row[1] ? row[1] : "";
|
||||
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.enabled = static_cast<int8_t>(atoi(row[3]));
|
||||
e.min_level = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_level = static_cast<int32_t>(atoi(row[5]));
|
||||
e.rare = static_cast<int8_t>(atoi(row[6]));
|
||||
e.raid = static_cast<int8_t>(atoi(row[7]));
|
||||
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
|
||||
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
|
||||
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
|
||||
e.race = row[8] ? row[8] : "";
|
||||
e.class_ = row[9] ? row[9] : "";
|
||||
e.bodytype = row[10] ? row[10] : "";
|
||||
e.zone = row[11] ? row[11] : "";
|
||||
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
|
||||
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
|
||||
e.content_flags = row[15] ? row[15] : "";
|
||||
e.content_flags_disabled = row[16] ? row[16] : "";
|
||||
|
||||
@@ -361,21 +362,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
GlobalLoot e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.description = row[1] ? row[1] : "";
|
||||
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.enabled = static_cast<int8_t>(atoi(row[3]));
|
||||
e.min_level = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_level = static_cast<int32_t>(atoi(row[5]));
|
||||
e.rare = static_cast<int8_t>(atoi(row[6]));
|
||||
e.raid = static_cast<int8_t>(atoi(row[7]));
|
||||
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
|
||||
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
|
||||
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
|
||||
e.race = row[8] ? row[8] : "";
|
||||
e.class_ = row[9] ? row[9] : "";
|
||||
e.bodytype = row[10] ? row[10] : "";
|
||||
e.zone = row[11] ? row[11] : "";
|
||||
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
|
||||
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
|
||||
e.content_flags = row[15] ? row[15] : "";
|
||||
e.content_flags_disabled = row[16] ? row[16] : "";
|
||||
|
||||
@@ -402,21 +403,21 @@ public:
|
||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||
GlobalLoot e{};
|
||||
|
||||
e.id = static_cast<int32_t>(atoi(row[0]));
|
||||
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
|
||||
e.description = row[1] ? row[1] : "";
|
||||
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
|
||||
e.enabled = static_cast<int8_t>(atoi(row[3]));
|
||||
e.min_level = static_cast<int32_t>(atoi(row[4]));
|
||||
e.max_level = static_cast<int32_t>(atoi(row[5]));
|
||||
e.rare = static_cast<int8_t>(atoi(row[6]));
|
||||
e.raid = static_cast<int8_t>(atoi(row[7]));
|
||||
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
|
||||
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
|
||||
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
|
||||
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
|
||||
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
|
||||
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
|
||||
e.race = row[8] ? row[8] : "";
|
||||
e.class_ = row[9] ? row[9] : "";
|
||||
e.bodytype = row[10] ? row[10] : "";
|
||||
e.zone = row[11] ? row[11] : "";
|
||||
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
|
||||
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
|
||||
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
|
||||
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
|
||||
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
|
||||
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
|
||||
e.content_flags = row[15] ? row[15] : "";
|
||||
e.content_flags_disabled = row[16] ? row[16] : "";
|
||||
|
||||
@@ -477,6 +478,94 @@ public:
|
||||
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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user