Compare commits

...

103 Commits

Author SHA1 Message Date
Alex King 7c982df0e3 [Release] 22.43.3 (#4034)
### API

* Add lock_status method to world API ([#4028](https://github.com/EQEmu/Server/pull/4028)) @Akkadius 2024-01-29

### Alternate Currency

* Convert Load of Alternate Currencies to Repositories ([#3993](https://github.com/EQEmu/Server/pull/3993)) @Kinglykrab 2024-01-29

### Beacon

* Cleanup Beacons Code ([#4024](https://github.com/EQEmu/Server/pull/4024)) @Kinglykrab 2024-01-29

### Bots

* Convert Bot Database Methods to Repositories ([#4023](https://github.com/EQEmu/Server/pull/4023)) @Kinglykrab 2024-01-29
* Missing boolean returns on DeletePetStats and SaveInspectMessage ([#4031](https://github.com/EQEmu/Server/pull/4031)) @joligario 2024-01-30

### Code

* Add Raid Loot Type Constants ([#4022](https://github.com/EQEmu/Server/pull/4022)) @Kinglykrab 2024-01-29
* Cleanup cross-zone/world-wide OPCode handling ([#4003](https://github.com/EQEmu/Server/pull/4003)) @Kinglykrab 2024-01-29

### Commands

* Cleanup #petitems Command ([#4005](https://github.com/EQEmu/Server/pull/4005)) @Kinglykrab 2024-01-29

### Crash Fix

* Fix Possible Crash in HateList::Find ([#4027](https://github.com/EQEmu/Server/pull/4027)) @Kinglykrab 2024-01-28

### Fixes

* Fix NPC After Death Emotes ([#4021](https://github.com/EQEmu/Server/pull/4021)) @Kinglykrab 2024-01-29
* Fix database loading routines ([#4030](https://github.com/EQEmu/Server/pull/4030)) @Akkadius 2024-01-29
* Fix issue in character_corpses Repository Query ([#4029](https://github.com/EQEmu/Server/pull/4029)) @Kinglykrab 2024-01-29
* Limit Pet Taunt Distance ([#4018](https://github.com/EQEmu/Server/pull/4018)) @fryguy503 2024-01-26
* Limit Player Taunt Distance ([#4019](https://github.com/EQEmu/Server/pull/4019)) @fryguy503 2024-01-26
* Patch for recent change to DEATH ([#4032](https://github.com/EQEmu/Server/pull/4032)) @noudess 2024-01-30
* spawn_conditions map was being emptied by mistake ([#4033](https://github.com/EQEmu/Server/pull/4033)) @noudess 2024-01-30

### Grids

* Convert Grid/Grid Entries to Repositories ([#4011](https://github.com/EQEmu/Server/pull/4011)) @Kinglykrab 2024-01-29

### Mercenaries

* Add expansion settings update to Mercs:Enable ([#4001](https://github.com/EQEmu/Server/pull/4001)) @Kinglykrab 2024-01-29

### Merchants

* Convert Merchant Load to Repositories ([#4007](https://github.com/EQEmu/Server/pull/4007)) @Kinglykrab 2024-01-29

### Pets

* Convert Load of Pets Beastlord Data to Repositories ([#3995](https://github.com/EQEmu/Server/pull/3995)) @Kinglykrab 2024-01-29

### Quests

* Use separate variable for quest idle override. ([#4026](https://github.com/EQEmu/Server/pull/4026)) @noudess 2024-01-27

### Rules

* Add rules for cross-zone/world-wide casts to affect Bots/Mercenaries/Pets ([#4002](https://github.com/EQEmu/Server/pull/4002)) @Kinglykrab 2024-01-29

### Spawn2

* Convert Spawn2 Methods to Repositories ([#4014](https://github.com/EQEmu/Server/pull/4014)) @Kinglykrab 2024-01-29

### Traps

* Convert Load/Set of Traps to Repositories ([#3994](https://github.com/EQEmu/Server/pull/3994)) @Kinglykrab 2024-01-29

### Zone

* Convert Fishing/Foraging to Repositories ([#4008](https://github.com/EQEmu/Server/pull/4008)) @Kinglykrab 2024-01-30
2024-01-30 19:26:50 -05:00
Paul Coene fa783c3c6b [Bug Fix] spawn_conditions map was being emptied by mistake (#4033) 2024-01-30 18:48:28 -05:00
Paul Coene 5377bb3f49 [Bug Fix] Patch for recent change to DEATH (#4032) 2024-01-30 17:10:45 -05:00
JJ f98c79fdba [Bots] Missing boolean returns on DeletePetStats and SaveInspectMessage (#4031) 2024-01-30 12:07:02 -05:00
Alex King ae79022e06 [Zone] Convert Fishing/Foraging to Repositories (#4008)
* [Zone] Convert Fishing/Foraging to Repositories

# Notes
- Convert `LoadFishing()` and `LoadForage()` to repositories.

* Update forage.cpp

* Cleanup
2024-01-30 05:55:09 -05:00
Chris Miles bc59882a65 [Hotfix] Fix database loading routines (#4030) 2024-01-29 00:14:33 -06:00
Alex King 2e0ed82986 [Grids] Convert Grid/Grid Entries to Repositories (#4011)
* [Grids] Convert Grid/Grid Entries to Repositories

- Convert `AddWaypoint()`, `AddWaypointForSpawn()`, `DeleteWaypoint()`, `GetHighestWaypoint()`, `GetRandomWaypointFromGrid()`, `GridExistsInZone()`, and `ModifyGrid()` to repositories.

* Update grid.cpp

* Update questmgr.cpp

* Update waypoints.cpp

* Update waypoints.cpp
2024-01-28 23:37:34 -06:00
Alex King 8e3218aaf7 [Cleanup] Cleanup cross-zone/world-wide OPCode handling (#4003)
* [Cleanup] Cleanup cross-zone/world-wide OPCode handling

# Notes
- Cleans up the logic greatly for cross-zone/world-wide methods since we were doing extraneous status checks and needlessly allocating memory for variables.

* Update worldserver.cpp
2024-01-28 23:07:27 -06:00
Alex King 9276966418 [Rules] Add rules for cross-zone/world-wide casts to affect Bots/Mercenaries/Pets (#4002)
* [Rules] Add rules for cross-zone/world-wide casts to affect bots/mercenaries/pets

# Notes
- These rules allow operators to have cross-zone/world-wide casts/removals of spells affect bots, mercenaries, and/or pets.
- Adds `World:AllowWorldWideSpellsOnBots`.
- Adds `World:AllowWorldWideSpellsOnMercs`.
- Adds `World:AllowWorldWideSpellsOnPets`.
- Adds `Zone:AllowCrossZoneSpellsOnBots`.
- Adds `Zone:AllowCrossZoneSpellsOnMercs`.
- Adds `Zone:AllowCrossZoneSpellsOnPets`.

* Consolidate to 3 rules
2024-01-28 23:06:21 -06:00
Alex King b89772ca91 [Pets] Convert Load of Pets Beastlord Data to Repositories (#3995)
* [Pets] Convert Load of Pets Beastlord Data to Repositories

# Notes
- Convert `GetBeastlordPetData()` to repositories.
- Add support for `unsigned` versions of `float`, `double`, and `decimal`, without this we defaulted to `std::string`, such as with `pets_beastlord_data`.

* Update repository-generator.pl

---------

Co-authored-by: Chris Miles <akkadius1@gmail.com>
2024-01-28 23:05:43 -06:00
Alex King a1f2a21c99 [Bug Fix] Fix NPC After Death Emotes (#4021)
* [Bug Fix] Fix NPC After Death Emotes

- `DoNPCEmote` was being called on the corpse, not the NPC, so it wasn't working for some reason despite it working for years.
- Cleaned up some other logic and variable names in `NPC::Death` while I was in there.

* Update attack.cpp

* Update npc.cpp

* Update attack.cpp

* Update attack.cpp
2024-01-29 00:03:34 -05:00
Alex King 1cb72642ac [Traps] Convert Load/Set of Traps to Repositories (#3994)
# Notes
- Convert `LoadTraps()` and `SetTrapData()` to repositories.
2024-01-28 22:38:21 -06:00
Alex King a38fd8f986 [Alternate Currency] Convert Load of Alternate Currencies to Repositories (#3993)
# Notes
- Convert `LoadAlternateCurrencies()` to repositories.
2024-01-28 22:36:26 -06:00
Alex King 337b6f38e0 [Mercenaries] Add expansion settings update to Mercs:Enable (#4001)
# Notes
- Adds an expansion settings update to the `Mercs:Enable` command, only updates if the expansion setting isn't already `-1` or doesn't already contain the bitmask for Seeds of Destruction (16384).
- This will enable Mercenary Liaisons spawning properly in Plane of Knowledge for the hiring of mercenaries.
2024-01-28 21:58:58 -06:00
Alex King b4414d3052 [Merchants] Convert Merchant Load to Repositories (#4007)
* [Merchants] Convert Merchant Load to Repositories

# Notes
- Convert `GetMerchantDataForZoneLoad()` to repositories.

# Images
## Load

* Change to LoadMerchants()
2024-01-28 21:55:59 -06:00
Alex King bfeeb0ce05 [Commands] Cleanup #petitems Command (#4005)
- Adds support to `#petitems` to allow you to target bot's pets to view their items, defaults to your pet if you have one.
- If you have no pet or no bot pet targeted it won't function.
2024-01-28 21:55:35 -06:00
Alex King e640e3cad3 [Cleanup] Add Raid Loot Type Constants (#4022)
* [Cleanup] Add Raid Loot Type Constants

# Notes
- Add constants for Raid loot types.

* [Cleanup] Add Raid Loot Type Constants

# Notes
- Add constants for Raid loot types.
2024-01-28 21:45:32 -06:00
Alex King c09a3a5bba [Spawn2] Convert Spawn2 Methods to Repositories (#4014)
* [Spawn2] Convert Spawn2 Methods to Repositories

# Notes
- Convert `CreateSpawn2()`, `GetCondition()`, `LoadSpawnConditions()`, `LoadSpawnEvent()`, `UpdateSpawnCondition()`, and `UpdateSpawnEvent()` to repositories.

# Images

* Update spawn2.cpp
2024-01-28 20:24:33 -06:00
Alex King ce907c9519 [Bots] Convert Bot Database Methods to Repositories (#4023)
* [Bots] Convert Bot Database Methods to Repositories

* Final push.

* Cleanup.

* Cleanup.

* Update bot_database.cpp

* Update bot_database.cpp

* Update bot_database.cpp

* Update bot_database.cpp

* Update bot_database.cpp
2024-01-28 20:23:31 -06:00
Alex King 7a770e0e08 [Beacon] Cleanup Beacons Code (#4024)
# Notes
- Use constants where possible.
- Change `resist_adjust` parameter in `Beacon::AELocationSpell` from `resist_adjust` to `in_resist_adjust` so we're not possibly causing parameter shadowing.
2024-01-28 20:20:09 -06:00
Chris Miles 97c3205657 [API] Add lock_status method to world API (#4028) 2024-01-28 20:18:32 -06:00
Alex King ff2e56abc7 [Bug Fix] Fix issue in character_corpses Repository Query (#4029)
* [Bug Fix] Fix issue in character_corpses Repository Query

# Notes
- Query had an extra ` inside of it, causing it to fail.

* Update character_corpses_repository.h
2024-01-28 20:18:24 -06:00
Alex King 9ee16f8bf7 [Crash Fix] Fix Possible Crash in HateList::Find (#4027)
# Notes
- We were not doing any pointer validation, so we were causing crashes in some cases.
- Example: http://spire.akkadius.com/dev/release/22.43.2?id=19163
2024-01-28 02:44:04 -06:00
Paul Coene 5b43bf4a5e [Quests] Use separate variable for quest idle override. (#4026)
* [Quests] Use separate variable for quest idle override.

* Fix missing zone->
2024-01-27 14:09:00 -05:00
Fryguy 4c769c46b3 [Bug Fix] Limit Player Taunt Distance (#4019)
* [Bug Fix] Player Taunt Distance

Previously this was not regulated on the server side and allowed players to exploit situations where the client did not enforce Z distance checks.

Rule Name: MaximumTauntDistance
Rule Default: 150

Calculation is Rule Squared

* remove `this`
2024-01-26 15:44:05 -05:00
Fryguy 8a87e00b66 [Bug Fix] Limit Pet Taunt Distance (#4018)
* [Bug Fix] Limit pet taunt distance

Previously this was not regulated and allowed players to exploit unlimited taunt distance.

Rule Name: PetTauntRange
Rule Default: 150

Calculation is Rule Squared.

* Remove `this`
2024-01-26 15:43:20 -05:00
Alex King 0ebc7f9bb6 [Release] 22.43.2 (#4017)
### 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
2024-01-25 16:30:50 -06:00
Alex King 9ac25338bb [Crash Fix] Fix crash when creating Frogloks/Drakkin (#4016)
* [Crash Fix] Fix crash when creating Frogloks/Drakkin

# Notes
- https://github.com/EQEmu/Server/pull/3920 introduced an issue where we were using `uchar` for `race_selection` and `class_selection` which was not functioning properly within `IsPlayerRace()`.

* Update client.cpp
2024-01-25 06:19:59 -05:00
Alex King e9285fd2ca [Instances] Convert Instance Quest Methods to Repositories (#4012)
* [Instances] Convert Instance Quest Methods to Repositories

# Notes
- Convert `UpdateInstanceTimer()` and `GetInstanceTimerByID()` to repositories.
- Cleanup other instance methods.

* Update questmgr.cpp
2024-01-25 05:50:10 -05:00
Alex King 5b85f89c21 [Cleanup] Cleanup position methods (#4015)
# Notes
- Cleanup logic.
2024-01-24 22:47:24 -06:00
Paul Coene 7fed8fc8c8 [Bug Fix] Fixes to zone idle while empty changes. (#4006) 2024-01-22 19:33:00 -05:00
Alex King 26769f40d9 [Commands] Add #npcedit set_grid [Grid ID] to #npcedit (#4004)
* [Commands] Add #npcedit grid_id to #npcedit

# Notes
- Adds `#npcedit grid_id [Grid ID]` to `#npcedit`.

* set_grid
2024-01-22 17:49:18 -05:00
regneq f6148b9b8d [Quest] QuestReward should now summon item to the inventory instead of the cursor. (#3996)
* [forage rule feature] add a rule to disabled using common_food_ids from the list in forage.cpp.  currently set to enabled.

* [Quest] change QuestReward summonitem to SummonItemToInventory.

* add closing brackets in QuestReward functions.
2024-01-22 17:35:15 -05:00
Chris Miles ca1299bf1d [Database] Increase max spawngroup name from 50 to 200 (#3991) 2024-01-22 17:34:54 -05:00
Chris Miles 3fb24dc0a3 [Logging] Force Info category to be always on in file/console logs (#3990) 2024-01-22 17:34:48 -05:00
Chris Miles dcd7bffa54 [Zoning] Additional logs for zoning under instance checks (#3989) 2024-01-22 17:34:41 -05:00
Alex King 5298abe6bc [Bug Fix] Fix Mercenaries Buffs/Zoning Issues (#4000)
# Notes
- Mercenaries were disappearing on zoning because they were saving to slot `1` and being loaded from slot `0`.
- Mercenaries were not displaying properly in group window because of this as well.
- Mercenary buffs were saving even when they did not have any buffs.
2024-01-22 17:34:28 -05:00
dariusuknuis fbc2b7c152 [Bot] ^mez command spell list fix (#3998)
This change will allow necros to cast mez spells when ^mez command is used.
2024-01-19 16:39:14 -05:00
Paul Coene 86705000b0 Push discpline messages under melee->disciplines (#3987)
* Push discpline messages under melee->disciplines

* Added safe_delete()

* Remove fryguy's new message code and fix existing instead
2024-01-19 08:55:26 -05:00
Fryguy 748e37dbdf [Crash Fix] Reverting PR #3877 (#3997)
Reports of #3877 causing crashes on windows. No reports on Linux, but reverting for safety.
2024-01-17 18:22:11 -05:00
Paul Coene 27256215b8 [Messages] Fix disciple message added by previous patch. (#3986) 2024-01-15 14:01:24 -05:00
Chris Miles 59cbe1a152 [Database] Drop item_tick if exists tweak in manifest (#3985) 2024-01-14 23:14:15 -05:00
Chris Miles 3e50427bb7 [Repositories] Add rank to reserved words (#3982)
* [Repositories] Add `rank` to reserved words

* Update zonedb.cpp

* Guild Ranks

---------

Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
2024-01-14 20:58:03 -05:00
Paul Coene 883b3b5826 [Spawn2] Spawn condition value should default spawn_conditions value (#3980)
* [Spawn2] Spawn condition value should default to value in spawn_conditions table

* Formatting changes and {}
2024-01-14 13:50:05 -05:00
Fryguy 135ee6b2b7 [Bug Fix] Reversed logic on InLiquid (#3979)
Thank you @noudness for catching this. Reversed logic on InLiquid check for falling damage.
2024-01-14 11:22:48 -05:00
Akkadius 906879ce2e [Repositories] Revert #3976 - fix character corpses 2024-01-14 03:30:00 -06:00
Chris Miles 8b7aba2769 [Release] 22.43.0 (#3978) 2024-01-14 00:12:26 -06:00
Chris Miles 9303255caa [Database] Drop deprecated item_tick table (#3977) 2024-01-14 00:10:21 -06:00
Chris Miles 14509fcc4e [Repositories] Fix datetime zero-value save behavior (#3976) 2024-01-14 00:10:13 -06:00
JJ e40267b9b8 [Merchants] Change database structure for merchant slots (#3974)
* [Merchants] Change database structure for merchant slots
The `slot` field should be unsigned int. The temp slot is currently limited to 127. The client will limit the visible slots.

* Update version.h
2024-01-13 20:58:46 -05:00
Alex King f3073b463f [Release] 22.42.1 (#3973)
### 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
2024-01-13 20:09:01 -05:00
Alex King 5ad4129312 [Bug Fix] Fix zone database update manifest (#3972)
* [Bug Fix] Fix zone database update manifest

# Notes
- Missing comma.

* Update database_update_manifest.cpp
2024-01-13 18:15:01 -05:00
Paul Coene 4b5b29b165 [Bug Fix] quest::processmobswhilezoneempty() fix. (#3971) 2024-01-13 09:37:22 -05:00
Alex King 3b7a138de4 [Release] 22.42.0 (#3970)
### 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
2024-01-13 01:31:56 -06:00
Alex King 742b437f2c [Zones] Convert IDLE_WHEN_EMPTY to a Zone Column (#3891)
* [Rules] Convert IDLE_WHEN_EMPTY to a rule

# Notes
- Converts `IDLE_WHEN_EMPTY` to `Zone:ZonesIdleWhenEmpty` so that we can change this on the fly or on a zone-by-zone basis instead of having to recompile to do this.
- Especially helpful for those using release binaries that do not compile their own source.

* Convert to zone column.

* Update ruletypes.h

* Update ruletypes.h

* Update entity.cpp

* Update entity.cpp

* Rename.

* Update database_update_manifest.cpp

* Update base_zone_repository.h

* Update zone.cpp

* seconds_before_idle

* Update database_update_manifest.cpp

* Getter/Setters/Private

* Update base_zone_repository.h

* IsIdle()/SetIsIdle()

* Update entity.cpp
2024-01-13 01:21:40 -06:00
Alex King d41bd8f963 [Zones] Convert Get/Set of Zone Timezone to Repositories (#3946)
* [Zones] Convert Get/Set of Zone Timezone to Repositories

- Convert `GetZoneTimezone()` and `SetZoneTimeZone()` to repositories.

* Update time_zone.cpp
2024-01-13 00:10:14 -06:00
Alex King 73a099c5ea [Character] Character EXP Modifiers in Memory (#3934)
* Cleanup

* Final push.

* Update zonedb.cpp

* Update zone.h

* Update exp.cpp

* Update zonedb.cpp

---------

Co-authored-by: Chris Miles <akkadius1@gmail.com>
2024-01-13 00:03:36 -06:00
Alex King 77c0eb3998 [Character] Convert Character Corpses to Repositories (#3941)
* asdsa

* Final push

* Update character_corpses_repository.h

* Update character_corpses_repository.h

* Update zonedb.cpp

* Update zonedb.cpp

* Final push

* Update character_corpses_repository.h
2024-01-13 00:02:44 -06:00
Alex King 5d1c59c95f [Merchants] Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories (#3945)
* [Merchants] Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories

- Convert `ClearMerchantTemp()`, `DeleteMerchantTemp()`, and `SaveMerchantTemp()` to repositories.

* Update merchantlist_temp_repository.h
2024-01-12 23:47:25 -06:00
Fryguy 1d7f39c13b [Feature] Add Lore Item Trade Error (#3932)
* DRAFT: [Feature] Add Lore Item Trade Error

I had lots of feedback from players to add feedback when doing player to player trades to include what items were causing the trade block.

I quickly added this check, however if multiple lore items are being traded, this will only output the first. So far it has worked well, but not sure if we want to:

- Expand this to list all lore items in the trade.
- Enable this by default and do not provide a rule?

* Credit to @KinglyKrab for the assist on making this output a list.

Ruled this off but enabled by default.
2024-01-12 23:43:57 -06:00
Alex King 1bb8678abe [Cleanup] Remove GroupCount() and RaidGroupCount() (#3943)
# Notes
- These are unused.
2024-01-12 23:41:21 -06:00
Alex King 47968774d9 [Cleanup] Remove unused Grid methods (#3944)
# Notes
- Remove `AssignGrid()`, `GetGridType()`, `GetGridType2()`, and `GetWaypoints()` as they are unused.
2024-01-12 23:41:06 -06:00
Alex King d7dc717249 [Mercenaries] Convert Mercenaries to Repositories (#3947)
* [Mercenaries] Convert Mercenaries to Repositories

- Convert all Mercenary methods to repositories aside from inner join queries that cannot be converted.

* Update base_merc_subtypes_repository.h

* Update base_merc_subtypes_repository.h

* Regenerate repositories
2024-01-12 23:40:26 -06:00
Alex King 32659426ba [AAs] Convert Loading of AAs to Repositories (#3963)
* [AAs] Convert Loading of AAs to Repositories

- Convert `LoadAlternateAdvancementAbilities()` to repositories.
- Regenerate repositories since a column was added to `aa_ability`.

* Update aa.cpp

* Update aa.cpp
2024-01-12 23:38:13 -06:00
Alex King 238c9fe667 [Global Loot] Convert Global Loot to Repositories (#3962)
* [Global Loot] Convert Global Loot to Repositories

# Notes
- Convert `LoadGlobalLoot()` to repositories.

* Update repository-generator.pl

* Final push.

* Update loottables.cpp

---------

Co-authored-by: Akkadius <akkadius1@gmail.com>
2024-01-12 23:37:26 -06:00
Alex King b9f997015a [Horses] Convert Horses to Repositories (#3965)
* [Horses] Convert Horses to Repositories

# Notes
- Convert `BuildHorseType()` to repositories.
- Removed unused code, parameters, and member variables in horses.

* Update horse.cpp
2024-01-12 23:33:52 -06:00
Alex King 11e2a252e5 [Objects] Convert World Containers to Repositories (#3951)
* [Objects] Convert World Containers to Repositories

- Convert world containers to repositories.

* Update zonedb.cpp
2024-01-12 23:33:37 -06:00
Alex King fc627ed52d [NPCs] Convert Load of NPC Emotes to Repositories (#3954)
* [NPCs] Convert Load of NPC Emotes to Repositories

- Convert `LoadNPCEmotes()` to repositories.

* Cleanup
2024-01-12 23:33:11 -06:00
Alex King 4c028b85f0 [Auras] Convert Get of Auras to Repositories (#3964)
* [Auras] Convert Get of Auras to Repositories

# Notes
- Convert `GetAuraEntry()` to repositories.

* Update aura.cpp
2024-01-12 23:29:43 -06:00
Alex King f1d5e3eedf [Zones] Convert SaveZoneCFG to Repositories (#3950)
* [Zones] Convert SaveZoneCFG to Repositories

# Notes
- Convert `SaveZoneCFG()` to repositories.

* Comment

* safe_heading

* Update zone_data.cpp
2024-01-12 23:28:16 -06:00
Alex King d59531b16f [Item Ticks] Remove Item Ticks Code (#3955)
* [Items] Convert Load of Item Ticks to Repositories

- Convert `LoadItemTicks()` to repositories.

* Remove item tick code.

* Remove repository references.

* Update zone.h
2024-01-12 23:17:00 -06:00
Alex King e182d685d3 [Commands] Convert NPC Spawn Methods to Repositories (#3956)
* [Commands] Convert NPC Spawn Methods to Repositories

# Notes
- Convert `AddNewNPCSpawnGroupCommand()`, `AddNPCTypes()`, `AddSpawnFromSpawnGroup()`, `CreateNewNPCCommand()`, `DeleteSpawnLeaveInNPCTypeTable()`, `DeleteSpawnRemoveFromNPCTypeTable()`, `NPCSpawnDB()`, and `UpdateNPCTypeAppearance()`.

* Regenerate.

* Cleanup.
2024-01-12 23:02:19 -06:00
Alex King 6968a70310 [Cleanup] Cleanup Owner Related Mob Methods (#3960)
* [Cleanup] Cleanup Owner Related Mob Methods

# Notes
- Cleanup `GetOwner()`, `GetOwnerOrSelf()`, `GetUltimateOwner()`, `HasOwner()`, and `IsPet()` methods.

* Update mob.cpp
2024-01-12 22:59:30 -06:00
Alex King 06e8d258e4 [Objects] Convert Add/Delete/Update of Objects to Repositories (#3966)
* [Objects] Convert Add/Delete/Update of Objects to Repositories

- Convert `AddObject()`, `DeleteObject()`, and `UpdateObject()` to repositories.

* Update object_manipulation.cpp

* Update object_manipulation.cpp

* Update object_manipulation.cpp
2024-01-12 22:55:46 -06:00
Alex King 8cb15f9357 [Pets] Convert Pets to Repositories (#3968)
* [Pets] Convert Pets to Repositories

# Notes
- Convert `GetPoweredPetEntry()` to repositories.

* Update pets.cpp
2024-01-12 22:41:56 -06:00
Alex King eb33e5a064 [Ground Spawns] Convert Ground Spawns to Repositories (#3967)
# Notes
- Convert `LoadGroundSpawns()` to repositories.
2024-01-12 22:41:08 -06:00
Alex King 71f78b757e [Respawns] Convert Respawn Times to Repositories (#3949)
* [Respawns] Convert Respawn Times to Repositories

- Convert `respawn_times` based methods to repositories.

* Missed some.

* Comments
2024-01-12 22:38:31 -06:00
Chris Miles 818f833d04 [Repository] Add null integer column support, instance_list notes migration, regenerate repositories (#3969) 2024-01-12 22:23:55 -06:00
Alex King 1238a6ca68 [Traps] Convert Load of LDoN Traps/Trap Entries to Repositories (#3953)
- Convert `LoadLDoNTraps()` and `LoadLDoNTrapEntries()` to repositories.
2024-01-12 20:05:00 -05:00
Alex King 4afc1efb38 [Character] Convert Save of Character Languages to Repositories (#3948)
# Notes
- Convert `SaveCharacterLanguage()` to repositories.
- Was missed in the other languages changes.
2024-01-12 03:30:42 -06:00
Alex King 24eb40d231 [Experience Modifiers] Convert Load of Level Experience Modifiers to Repositories (#3952)
# Notes
- Convert `LoadLevelEXPMods()` to repositories.
2024-01-12 02:46:33 -06:00
Alex King 2475092ed9 [Cleanup] Cleanup AddCash() and RemoveCash() NPC Methods (#3957)
# Notes
- `AddCash()` was `uint16` in C++/Perl and `int` in Lua, fix these to `uint32`.
- Consolidate logic in `AddCash()`.
2024-01-12 01:53:01 -06:00
Alex King 53d6e449c2 [Cleanup] Cleanup ChangeSize() (#3959)
# Notes
- Use `EQ::Clamp()` for logic instead of basic comparsions.
- Rename restriction parameter to `unrestricted`.
2024-01-12 01:51:02 -06:00
Alex King b61649a2a0 [Cleanup] Cleanup RandomizeFeatures() (#3958)
# Notes
- Uses pre-defined constants and cleanup code.
- Move `IsPlayerRace()` check so it's an early return instead of using an `else`.
2024-01-12 01:50:06 -06:00
Alex King ef635cb257 [Bug Fix] Fix Issue with SetFlyMode() (#3961)
# Notes
- Variable and parameter had the same name, meaning this could fail.
2024-01-12 01:35:30 -06:00
Fryguy 62b5f8a488 [Rules] Classic Spell Data SPA Calc variability (#3931)
* [Rules] Classic Spell Data SPA Calc variability

When  using lucy imports of older more classic data, they lack the limit values which provides Focus Random Effectiveness.

Example:

Bazu Plauge (6472) went from a 40 limit to 0 limit on the 2006 lucy import.

Lucy does have limit value data, but it appears the affected SPAs sony handled in source vs in spell data.

* Requested Changes
2024-01-09 05:49:10 -05:00
Fryguy d0e069f4f8 [Bug Fix] Rampage Number of Hits Limit (#3929)
* [Bug Fix] Rampage Number of Hits Limit

Rampage should Hit 1-2 times (Primary / Secondary) should not be Triple/Quadable

* requested name convention changes
2024-01-09 05:48:45 -05:00
Fryguy 1b5b22eeca [Rule] Classic Tracking Skillups (#3923)
* [Rule] Classic Tracking Skillups

Rule: TrackingAutoRefreshSkillUps
Default: True

Disable rule to prevent skillups from happening on auto refresh of tracking window.

* typo
2024-01-09 05:48:35 -05:00
Fryguy 66d9371714 [Bug Fix] Increase Precision in CheckDoubleAttack (#3928)
* [Bug Fix] Increase percision on CheckDoubleAttack.

On DA Checks where class was a non skill based DA Attacker (Bard or BST with granted DA) The DA check was too steep and should not have been dividing by 500 but rather 100. Also adjusted logic percision to use floats so loss of data does not occur.

* logging var names update

* Update attack.cpp

---------

Co-authored-by: Alex King <89047260+Kinglykrab@users.noreply.github.com>
2024-01-08 22:34:41 -06:00
Fryguy 0418dc4aa3 [Bug Fix] Attack Corpse Skill Up Fix (#3924)
* [Bug] Attack Corpse Skillup Fix

Occasions where a corpse will allow skillups from attacks being turned on (even if no damage)

* requested changes
2024-01-08 22:32:18 -06:00
Fryguy f12c87a04a [Feat] Alt Sinister Strike Formula (#3921)
I have been informed that this was proven to be false, but the AA is pretty useless without some adjustment.

Adding this as a rule to allow server owners to adjust as needed.

Update Sinister Strikes
tapatalk.com/groups/monklybusiness43508/leksikon-s-half-assed-guide-to-monkly-aas-oow-incl-t510-s20.html?sid=a9c7745f287f3e89301c960c20f33248

Sinister Strikes:
19 Delay weapon -- Gives a 5 damage bonus to all hits
20 Delay weapon -- Gives a 6 damage bonus to all hits
24 Delay weapon -- Gives a 7 damage bonus to all hits
Given Quarm hammer with maxed non-GoD AAs:
0.7 HPS offhand = 4.9 DPS increase.
2024-01-08 22:31:04 -06:00
Fryguy 97dbf85a4c [Bug Fix] Limit MeleeMitigationEffect to defender if only client. (#3918)
* [Bug] Limit MeleeMitigationEffect to defender if only client.

* Fix MeleeMitigation to properly Add (Substract due to negative values).

* defender fix
2024-01-08 22:30:29 -06:00
Fryguy 46a0cf6b02 [Rule] Separate Tradeskill Max Train from Research. (#3916)
* [Rule] Seperate Tradeskill Max Train from Research.

Different eras had different rules on the max gm trainable skill for Research.

* Phrasing
2024-01-08 22:29:57 -06:00
Fryguy 8f34bd998f [Rule] Add rule for bard aggro cap (#3909)
BardAggroCap - Default 40

Allows adjustment of per song bard aggro cap.
2024-01-08 22:29:24 -06:00
Fryguy 98928aee74 [Rule] Allow GMs to silently summon (#3910)
* [Rule] Allow GMs to silently summon

Disable to silently summon players with #summon.

Converted SummonPC to a MessageString

* Implementing an automatic detection of gm hidden mode and silent summoning.
2024-01-08 22:28:50 -06:00
Fryguy e6dc980315 [Bug Fix] Harm Touch Critical Ratio (#3915)
* [Bug] HT Crit Ratio

This is used to tune and bring HT Crits more in line with the correct values as proven in screenshots.

* requested changes

* mistakenly kept mob::
2024-01-08 22:27:56 -06:00
Fryguy ec465616b4 [Feature] Rule: UseLiveBlockedMessage Bard Spam (#3933)
When using `UseLiveBlockedMessage` rule, bard will get massively spammed when doing aoe songs that are blocked. Not sure it is resonable to try and filter out all stacking messages from songs, but rather just block bards as a whole. I can not think of many cases where bards care of songs land or not when using this rule.
2024-01-08 22:26:10 -06:00
Fryguy 23de0119ff [Bug Fix] Undead Should Never Flee (#3926)
* [Bug Fix] Undead Should Never Flee

Added a hard return on Undead Body Types. They should never flee under any circumstance.

* space
2024-01-08 22:24:57 -06:00
hg f59b4feb94 [Tasks] Add Support for Task Window Element Groups (#3902)
Elements that share a group are placed in the same list section and
separated from other groups with a divider.

Live appears to only use this for optional elements in some tasks and
when used each optional always gets its own group. This might indicate
it's done automatically under certain criteria to ensure optionals are
never grouped with non-optionals regardless of index.

Since groups are available in captures and there's very few tasks that
use this, we don't need to worry about trying to replicate any automatic
behavior since this allows more customization.
2024-01-08 23:24:41 -05:00
Fryguy e035660150 [Crash Fix] Character Creation Class/Race out of Range. (#3920)
* [Crash Fix] Character Creation Class/Race out of Range.

Known bug to crash the world server from character creation.

You can send a packet with a manual race or class entry below 0 or above 255 will cause world crash.

* Requested changes

* Compile fixes and logging change

* Fixed compile issues
2024-01-08 23:24:15 -05:00
Fryguy 472dd71d7f [Rules] Bash Two Hander use Shoulders (#3925)
Rule: BashTwoHanderUseShoulderAC
Default: False

Allows server operators to choose if they want two handed bash to utilize the shoulder armor or not.

Rule: BashACBonusDivisor
Default: 25.0

Allows adjustment for bash AC value contributions. Lower to increase damage.
2024-01-08 23:23:51 -05:00
Fryguy 409b6bf424 [Bug Fix] IsOfClientBotMerc() for Discipline Messages (#3940) 2024-01-08 23:23:09 -05:00
Alex King 9da713a830 [Bug Fix] Remove duplicate character_data repository in zonedb.cpp (#3935)
# Notes
- Must have been a typo from one of my commits where they overlapped in functionality.
2024-01-08 23:22:42 -05:00
350 changed files with 32590 additions and 15833 deletions
+296
View File
@@ -1,3 +1,299 @@
## [22.43.3] - 1/30/2024
### API
* Add lock_status method to world API ([#4028](https://github.com/EQEmu/Server/pull/4028)) @Akkadius 2024-01-29
### Alternate Currency
* Convert Load of Alternate Currencies to Repositories ([#3993](https://github.com/EQEmu/Server/pull/3993)) @Kinglykrab 2024-01-29
### Beacon
* Cleanup Beacons Code ([#4024](https://github.com/EQEmu/Server/pull/4024)) @Kinglykrab 2024-01-29
### Bots
* Convert Bot Database Methods to Repositories ([#4023](https://github.com/EQEmu/Server/pull/4023)) @Kinglykrab 2024-01-29
* Missing boolean returns on DeletePetStats and SaveInspectMessage ([#4031](https://github.com/EQEmu/Server/pull/4031)) @joligario 2024-01-30
### Code
* Add Raid Loot Type Constants ([#4022](https://github.com/EQEmu/Server/pull/4022)) @Kinglykrab 2024-01-29
* Cleanup cross-zone/world-wide OPCode handling ([#4003](https://github.com/EQEmu/Server/pull/4003)) @Kinglykrab 2024-01-29
### Commands
* Cleanup #petitems Command ([#4005](https://github.com/EQEmu/Server/pull/4005)) @Kinglykrab 2024-01-29
### Crash Fix
* Fix Possible Crash in HateList::Find ([#4027](https://github.com/EQEmu/Server/pull/4027)) @Kinglykrab 2024-01-28
### Fixes
* Fix NPC After Death Emotes ([#4021](https://github.com/EQEmu/Server/pull/4021)) @Kinglykrab 2024-01-29
* Fix database loading routines ([#4030](https://github.com/EQEmu/Server/pull/4030)) @Akkadius 2024-01-29
* Fix issue in character_corpses Repository Query ([#4029](https://github.com/EQEmu/Server/pull/4029)) @Kinglykrab 2024-01-29
* Limit Pet Taunt Distance ([#4018](https://github.com/EQEmu/Server/pull/4018)) @fryguy503 2024-01-26
* Limit Player Taunt Distance ([#4019](https://github.com/EQEmu/Server/pull/4019)) @fryguy503 2024-01-26
* Patch for recent change to DEATH ([#4032](https://github.com/EQEmu/Server/pull/4032)) @noudess 2024-01-30
* spawn_conditions map was being emptied by mistake ([#4033](https://github.com/EQEmu/Server/pull/4033)) @noudess 2024-01-30
### Grids
* Convert Grid/Grid Entries to Repositories ([#4011](https://github.com/EQEmu/Server/pull/4011)) @Kinglykrab 2024-01-29
### Mercenaries
* Add expansion settings update to Mercs:Enable ([#4001](https://github.com/EQEmu/Server/pull/4001)) @Kinglykrab 2024-01-29
### Merchants
* Convert Merchant Load to Repositories ([#4007](https://github.com/EQEmu/Server/pull/4007)) @Kinglykrab 2024-01-29
### Pets
* Convert Load of Pets Beastlord Data to Repositories ([#3995](https://github.com/EQEmu/Server/pull/3995)) @Kinglykrab 2024-01-29
### Quests
* Use separate variable for quest idle override. ([#4026](https://github.com/EQEmu/Server/pull/4026)) @noudess 2024-01-27
### Rules
* Add rules for cross-zone/world-wide casts to affect Bots/Mercenaries/Pets ([#4002](https://github.com/EQEmu/Server/pull/4002)) @Kinglykrab 2024-01-29
### Spawn2
* Convert Spawn2 Methods to Repositories ([#4014](https://github.com/EQEmu/Server/pull/4014)) @Kinglykrab 2024-01-29
### Traps
* Convert Load/Set of Traps to Repositories ([#3994](https://github.com/EQEmu/Server/pull/3994)) @Kinglykrab 2024-01-29
### Zone
* Convert Fishing/Foraging to Repositories ([#4008](https://github.com/EQEmu/Server/pull/4008)) @Kinglykrab 2024-01-30
## [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
-2
View File
@@ -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
View File
@@ -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) {
+80 -1
View File
@@ -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,
@@ -104,6 +104,25 @@ ALTER TABLE `bot_timers`
DROP PRIMARY KEY;
ALTER TABLE `bot_timers`
ADD PRIMARY KEY (`bot_id`, `timer_id`, `spell_id`, `item_id`);
)"
},
ManifestEntry{
.version = 9042,
.description = "2024_01_27_delete_bot_foreign_keys.sql",
.check = "SHOW CREATE TABLE `bot_stances`",
.condition = "contains",
.match = "FOREIGN",
.sql = R"(
ALTER TABLE `bot_buffs` DROP FOREIGN KEY `FK_bot_buffs_1`;
ALTER TABLE `bot_heal_rotations` DROP FOREIGN KEY `FK_bot_heal_rotations`;
ALTER TABLE `bot_heal_rotation_members` DROP FOREIGN KEY `FK_bot_heal_rotation_members_1`;
ALTER TABLE `bot_heal_rotation_members` DROP FOREIGN KEY `FK_bot_heal_rotation_members_2`;
ALTER TABLE `bot_heal_rotation_targets` DROP FOREIGN KEY `FK_bot_heal_rotation_targets`;
ALTER TABLE `bot_inventories` DROP FOREIGN KEY `FK_bot_inventories_1`;
ALTER TABLE `bot_pets` DROP FOREIGN KEY `FK_bot_pets_1`;
ALTER TABLE `bot_pet_buffs` DROP FOREIGN KEY `FK_bot_pet_buffs_1`;
ALTER TABLE `bot_pet_inventories` DROP FOREIGN KEY `FK_bot_pet_inventories_1`;
ALTER TABLE `bot_stances` DROP FOREIGN KEY `FK_bot_stances_1`;
)"
}
// -- template; copy/paste this when you need to create a new entry
+2 -1
View File
@@ -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();
}
+1
View File
@@ -350,6 +350,7 @@ namespace EQ
};
enum EmoteTypes : uint8 {
Say,
Emote,
Shout,
Proximity
+7
View File
@@ -1120,4 +1120,11 @@ enum MoneySubtypes
SharedBank // Platinum Only
};
namespace RaidLootType {
constexpr uint32 LeaderOnly = 1;
constexpr uint32 LeaderAndGroupLeadersOnly = 2;
constexpr uint32 LeaderSelected = 3;
constexpr uint32 EntireRaid = 4;
}
#endif /*COMMON_EQ_CONSTANTS_H*/
+10 -4
View File
@@ -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{
+2
View File
@@ -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;
}
-5
View File
@@ -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
+3 -3
View File
@@ -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{
+3 -3
View File
@@ -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{
+3 -3
View File
@@ -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{
+3 -3
View File
@@ -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{
+4 -4
View File
@@ -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{
+3 -3
View File
@@ -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
+109 -32
View File
@@ -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_BOT_BUFFS_REPOSITORY_H
@@ -180,8 +180,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_buffs_id
)
);
@@ -190,26 +191,26 @@ public:
if (results.RowCount() == 1) {
BotBuffs e{};
e.buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.duration_formula = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.tics_remaining = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.poison_counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.disease_counters = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.curse_counters = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.corruption_counters = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.numhits = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
e.melee_rune = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.magic_rune = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.dot_rune = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.persistent = static_cast<int8_t>(atoi(row[14]));
e.caston_x = static_cast<int32_t>(atoi(row[15]));
e.caston_y = static_cast<int32_t>(atoi(row[16]));
e.caston_z = static_cast<int32_t>(atoi(row[17]));
e.extra_di_chance = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.instrument_mod = static_cast<int32_t>(atoi(row[19]));
e.buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration_formula = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tics_remaining = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.poison_counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.disease_counters = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.curse_counters = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.corruption_counters = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.numhits = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.melee_rune = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.magic_rune = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.dot_rune = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.persistent = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
e.caston_x = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.caston_y = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
e.caston_z = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.extra_di_chance = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.instrument_mod = row[19] ? static_cast<int32_t>(atoi(row[19])) : 10;
return e;
}
@@ -385,26 +386,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotBuffs e{};
e.buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.duration_formula = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.tics_remaining = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.poison_counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.disease_counters = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.curse_counters = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.corruption_counters = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.numhits = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
e.melee_rune = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.magic_rune = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.dot_rune = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.persistent = static_cast<int8_t>(atoi(row[14]));
e.caston_x = static_cast<int32_t>(atoi(row[15]));
e.caston_y = static_cast<int32_t>(atoi(row[16]));
e.caston_z = static_cast<int32_t>(atoi(row[17]));
e.extra_di_chance = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.instrument_mod = static_cast<int32_t>(atoi(row[19]));
e.buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration_formula = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tics_remaining = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.poison_counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.disease_counters = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.curse_counters = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.corruption_counters = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.numhits = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.melee_rune = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.magic_rune = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.dot_rune = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.persistent = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
e.caston_x = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.caston_y = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
e.caston_z = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.extra_di_chance = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.instrument_mod = row[19] ? static_cast<int32_t>(atoi(row[19])) : 10;
all_entries.push_back(e);
}
@@ -429,26 +430,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotBuffs e{};
e.buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.duration_formula = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.tics_remaining = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.poison_counters = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.disease_counters = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.curse_counters = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.corruption_counters = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.numhits = static_cast<uint32_t>(strtoul(row[10], nullptr, 10));
e.melee_rune = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.magic_rune = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.dot_rune = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.persistent = static_cast<int8_t>(atoi(row[14]));
e.caston_x = static_cast<int32_t>(atoi(row[15]));
e.caston_y = static_cast<int32_t>(atoi(row[16]));
e.caston_z = static_cast<int32_t>(atoi(row[17]));
e.extra_di_chance = static_cast<uint32_t>(strtoul(row[18], nullptr, 10));
e.instrument_mod = static_cast<int32_t>(atoi(row[19]));
e.buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration_formula = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.tics_remaining = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.poison_counters = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.disease_counters = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.curse_counters = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.corruption_counters = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.numhits = row[10] ? static_cast<uint32_t>(strtoul(row[10], nullptr, 10)) : 0;
e.melee_rune = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.magic_rune = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.dot_rune = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.persistent = row[14] ? static_cast<int8_t>(atoi(row[14])) : 0;
e.caston_x = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.caston_y = row[16] ? static_cast<int32_t>(atoi(row[16])) : 0;
e.caston_z = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.extra_di_chance = row[18] ? static_cast<uint32_t>(strtoul(row[18], nullptr, 10)) : 0;
e.instrument_mod = row[19] ? static_cast<int32_t>(atoi(row[19])) : 10;
all_entries.push_back(e);
}
@@ -507,6 +508,100 @@ 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 BotBuffs &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.buffs_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.caster_level));
v.push_back(std::to_string(e.duration_formula));
v.push_back(std::to_string(e.tics_remaining));
v.push_back(std::to_string(e.poison_counters));
v.push_back(std::to_string(e.disease_counters));
v.push_back(std::to_string(e.curse_counters));
v.push_back(std::to_string(e.corruption_counters));
v.push_back(std::to_string(e.numhits));
v.push_back(std::to_string(e.melee_rune));
v.push_back(std::to_string(e.magic_rune));
v.push_back(std::to_string(e.dot_rune));
v.push_back(std::to_string(e.persistent));
v.push_back(std::to_string(e.caston_x));
v.push_back(std::to_string(e.caston_y));
v.push_back(std::to_string(e.caston_z));
v.push_back(std::to_string(e.extra_di_chance));
v.push_back(std::to_string(e.instrument_mod));
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<BotBuffs> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.buffs_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.caster_level));
v.push_back(std::to_string(e.duration_formula));
v.push_back(std::to_string(e.tics_remaining));
v.push_back(std::to_string(e.poison_counters));
v.push_back(std::to_string(e.disease_counters));
v.push_back(std::to_string(e.curse_counters));
v.push_back(std::to_string(e.corruption_counters));
v.push_back(std::to_string(e.numhits));
v.push_back(std::to_string(e.melee_rune));
v.push_back(std::to_string(e.magic_rune));
v.push_back(std::to_string(e.dot_rune));
v.push_back(std::to_string(e.persistent));
v.push_back(std::to_string(e.caston_x));
v.push_back(std::to_string(e.caston_y));
v.push_back(std::to_string(e.caston_z));
v.push_back(std::to_string(e.extra_di_chance));
v.push_back(std::to_string(e.instrument_mod));
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_BOT_BUFFS_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_BOT_CREATE_COMBINATIONS_REPOSITORY_H
@@ -108,8 +108,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_create_combinations_id
)
);
@@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) {
BotCreateCombinations e{};
e.race = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.race = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.classes = 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) {
BotCreateCombinations e{};
e.race = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.race = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.classes = 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) {
BotCreateCombinations e{};
e.race = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.race = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.classes = 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 BotCreateCombinations &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.classes));
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<BotCreateCombinations> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.classes));
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_BOT_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_BOT_DATA_REPOSITORY_H
@@ -278,7 +278,7 @@ public:
e.expansion_bitmask = -1;
e.enforce_spell_settings = 0;
e.archery_setting = 0;
e.caster_range = 0;
e.caster_range = 300;
return e;
}
@@ -315,57 +315,57 @@ public:
if (results.RowCount() == 1) {
BotData e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.owner_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spells_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.owner_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spells_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.last_name = row[4] ? row[4] : "";
e.title = row[5] ? row[5] : "";
e.suffix = row[6] ? row[6] : "";
e.zone_id = static_cast<int16_t>(atoi(row[7]));
e.gender = static_cast<int8_t>(atoi(row[8]));
e.race = static_cast<int16_t>(atoi(row[9]));
e.class_ = static_cast<int8_t>(atoi(row[10]));
e.level = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.creation_day = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.last_spawn = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.time_spawned = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.size = strtof(row[16], nullptr);
e.face = static_cast<int32_t>(atoi(row[17]));
e.hair_color = static_cast<int32_t>(atoi(row[18]));
e.hair_style = static_cast<int32_t>(atoi(row[19]));
e.beard = static_cast<int32_t>(atoi(row[20]));
e.beard_color = static_cast<int32_t>(atoi(row[21]));
e.eye_color_1 = static_cast<int32_t>(atoi(row[22]));
e.eye_color_2 = static_cast<int32_t>(atoi(row[23]));
e.drakkin_heritage = static_cast<int32_t>(atoi(row[24]));
e.drakkin_tattoo = static_cast<int32_t>(atoi(row[25]));
e.drakkin_details = static_cast<int32_t>(atoi(row[26]));
e.ac = static_cast<int16_t>(atoi(row[27]));
e.atk = static_cast<int32_t>(atoi(row[28]));
e.hp = static_cast<int32_t>(atoi(row[29]));
e.mana = static_cast<int32_t>(atoi(row[30]));
e.str = static_cast<int32_t>(atoi(row[31]));
e.sta = static_cast<int32_t>(atoi(row[32]));
e.cha = static_cast<int32_t>(atoi(row[33]));
e.dex = static_cast<int32_t>(atoi(row[34]));
e.int_ = static_cast<int32_t>(atoi(row[35]));
e.agi = static_cast<int32_t>(atoi(row[36]));
e.wis = static_cast<int32_t>(atoi(row[37]));
e.fire = static_cast<int16_t>(atoi(row[38]));
e.cold = static_cast<int16_t>(atoi(row[39]));
e.magic = static_cast<int16_t>(atoi(row[40]));
e.poison = static_cast<int16_t>(atoi(row[41]));
e.disease = static_cast<int16_t>(atoi(row[42]));
e.corruption = static_cast<int16_t>(atoi(row[43]));
e.show_helm = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.follow_distance = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.stop_melee_level = static_cast<uint8_t>(strtoul(row[46], nullptr, 10));
e.expansion_bitmask = static_cast<int32_t>(atoi(row[47]));
e.enforce_spell_settings = static_cast<uint8_t>(strtoul(row[48], nullptr, 10));
e.archery_setting = static_cast<uint8_t>(strtoul(row[49], nullptr, 10));
e.caster_range = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.zone_id = row[7] ? static_cast<int16_t>(atoi(row[7])) : 0;
e.gender = row[8] ? static_cast<int8_t>(atoi(row[8])) : 0;
e.race = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.class_ = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
e.level = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.deity = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.creation_day = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.last_spawn = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.time_spawned = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = row[16] ? strtof(row[16], nullptr) : 0;
e.face = row[17] ? static_cast<int32_t>(atoi(row[17])) : 1;
e.hair_color = row[18] ? static_cast<int32_t>(atoi(row[18])) : 1;
e.hair_style = row[19] ? static_cast<int32_t>(atoi(row[19])) : 1;
e.beard = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
e.beard_color = row[21] ? static_cast<int32_t>(atoi(row[21])) : 1;
e.eye_color_1 = row[22] ? static_cast<int32_t>(atoi(row[22])) : 1;
e.eye_color_2 = row[23] ? static_cast<int32_t>(atoi(row[23])) : 1;
e.drakkin_heritage = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
e.drakkin_tattoo = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.drakkin_details = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.ac = row[27] ? static_cast<int16_t>(atoi(row[27])) : 0;
e.atk = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
e.hp = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
e.mana = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
e.str = row[31] ? static_cast<int32_t>(atoi(row[31])) : 75;
e.sta = row[32] ? static_cast<int32_t>(atoi(row[32])) : 75;
e.cha = row[33] ? static_cast<int32_t>(atoi(row[33])) : 75;
e.dex = row[34] ? static_cast<int32_t>(atoi(row[34])) : 75;
e.int_ = row[35] ? static_cast<int32_t>(atoi(row[35])) : 75;
e.agi = row[36] ? static_cast<int32_t>(atoi(row[36])) : 75;
e.wis = row[37] ? static_cast<int32_t>(atoi(row[37])) : 75;
e.fire = row[38] ? static_cast<int16_t>(atoi(row[38])) : 0;
e.cold = row[39] ? static_cast<int16_t>(atoi(row[39])) : 0;
e.magic = row[40] ? static_cast<int16_t>(atoi(row[40])) : 0;
e.poison = row[41] ? static_cast<int16_t>(atoi(row[41])) : 0;
e.disease = row[42] ? static_cast<int16_t>(atoi(row[42])) : 0;
e.corruption = row[43] ? static_cast<int16_t>(atoi(row[43])) : 0;
e.show_helm = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.follow_distance = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 200;
e.stop_melee_level = row[46] ? static_cast<uint8_t>(strtoul(row[46], nullptr, 10)) : 255;
e.expansion_bitmask = row[47] ? static_cast<int32_t>(atoi(row[47])) : -1;
e.enforce_spell_settings = row[48] ? static_cast<uint8_t>(strtoul(row[48], nullptr, 10)) : 0;
e.archery_setting = row[49] ? static_cast<uint8_t>(strtoul(row[49], nullptr, 10)) : 0;
e.caster_range = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 300;
return e;
}
@@ -634,57 +634,57 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotData e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.owner_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spells_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.owner_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spells_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.last_name = row[4] ? row[4] : "";
e.title = row[5] ? row[5] : "";
e.suffix = row[6] ? row[6] : "";
e.zone_id = static_cast<int16_t>(atoi(row[7]));
e.gender = static_cast<int8_t>(atoi(row[8]));
e.race = static_cast<int16_t>(atoi(row[9]));
e.class_ = static_cast<int8_t>(atoi(row[10]));
e.level = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.creation_day = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.last_spawn = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.time_spawned = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.size = strtof(row[16], nullptr);
e.face = static_cast<int32_t>(atoi(row[17]));
e.hair_color = static_cast<int32_t>(atoi(row[18]));
e.hair_style = static_cast<int32_t>(atoi(row[19]));
e.beard = static_cast<int32_t>(atoi(row[20]));
e.beard_color = static_cast<int32_t>(atoi(row[21]));
e.eye_color_1 = static_cast<int32_t>(atoi(row[22]));
e.eye_color_2 = static_cast<int32_t>(atoi(row[23]));
e.drakkin_heritage = static_cast<int32_t>(atoi(row[24]));
e.drakkin_tattoo = static_cast<int32_t>(atoi(row[25]));
e.drakkin_details = static_cast<int32_t>(atoi(row[26]));
e.ac = static_cast<int16_t>(atoi(row[27]));
e.atk = static_cast<int32_t>(atoi(row[28]));
e.hp = static_cast<int32_t>(atoi(row[29]));
e.mana = static_cast<int32_t>(atoi(row[30]));
e.str = static_cast<int32_t>(atoi(row[31]));
e.sta = static_cast<int32_t>(atoi(row[32]));
e.cha = static_cast<int32_t>(atoi(row[33]));
e.dex = static_cast<int32_t>(atoi(row[34]));
e.int_ = static_cast<int32_t>(atoi(row[35]));
e.agi = static_cast<int32_t>(atoi(row[36]));
e.wis = static_cast<int32_t>(atoi(row[37]));
e.fire = static_cast<int16_t>(atoi(row[38]));
e.cold = static_cast<int16_t>(atoi(row[39]));
e.magic = static_cast<int16_t>(atoi(row[40]));
e.poison = static_cast<int16_t>(atoi(row[41]));
e.disease = static_cast<int16_t>(atoi(row[42]));
e.corruption = static_cast<int16_t>(atoi(row[43]));
e.show_helm = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.follow_distance = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.stop_melee_level = static_cast<uint8_t>(strtoul(row[46], nullptr, 10));
e.expansion_bitmask = static_cast<int32_t>(atoi(row[47]));
e.enforce_spell_settings = static_cast<uint8_t>(strtoul(row[48], nullptr, 10));
e.archery_setting = static_cast<uint8_t>(strtoul(row[49], nullptr, 10));
e.caster_range = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.zone_id = row[7] ? static_cast<int16_t>(atoi(row[7])) : 0;
e.gender = row[8] ? static_cast<int8_t>(atoi(row[8])) : 0;
e.race = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.class_ = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
e.level = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.deity = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.creation_day = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.last_spawn = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.time_spawned = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = row[16] ? strtof(row[16], nullptr) : 0;
e.face = row[17] ? static_cast<int32_t>(atoi(row[17])) : 1;
e.hair_color = row[18] ? static_cast<int32_t>(atoi(row[18])) : 1;
e.hair_style = row[19] ? static_cast<int32_t>(atoi(row[19])) : 1;
e.beard = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
e.beard_color = row[21] ? static_cast<int32_t>(atoi(row[21])) : 1;
e.eye_color_1 = row[22] ? static_cast<int32_t>(atoi(row[22])) : 1;
e.eye_color_2 = row[23] ? static_cast<int32_t>(atoi(row[23])) : 1;
e.drakkin_heritage = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
e.drakkin_tattoo = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.drakkin_details = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.ac = row[27] ? static_cast<int16_t>(atoi(row[27])) : 0;
e.atk = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
e.hp = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
e.mana = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
e.str = row[31] ? static_cast<int32_t>(atoi(row[31])) : 75;
e.sta = row[32] ? static_cast<int32_t>(atoi(row[32])) : 75;
e.cha = row[33] ? static_cast<int32_t>(atoi(row[33])) : 75;
e.dex = row[34] ? static_cast<int32_t>(atoi(row[34])) : 75;
e.int_ = row[35] ? static_cast<int32_t>(atoi(row[35])) : 75;
e.agi = row[36] ? static_cast<int32_t>(atoi(row[36])) : 75;
e.wis = row[37] ? static_cast<int32_t>(atoi(row[37])) : 75;
e.fire = row[38] ? static_cast<int16_t>(atoi(row[38])) : 0;
e.cold = row[39] ? static_cast<int16_t>(atoi(row[39])) : 0;
e.magic = row[40] ? static_cast<int16_t>(atoi(row[40])) : 0;
e.poison = row[41] ? static_cast<int16_t>(atoi(row[41])) : 0;
e.disease = row[42] ? static_cast<int16_t>(atoi(row[42])) : 0;
e.corruption = row[43] ? static_cast<int16_t>(atoi(row[43])) : 0;
e.show_helm = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.follow_distance = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 200;
e.stop_melee_level = row[46] ? static_cast<uint8_t>(strtoul(row[46], nullptr, 10)) : 255;
e.expansion_bitmask = row[47] ? static_cast<int32_t>(atoi(row[47])) : -1;
e.enforce_spell_settings = row[48] ? static_cast<uint8_t>(strtoul(row[48], nullptr, 10)) : 0;
e.archery_setting = row[49] ? static_cast<uint8_t>(strtoul(row[49], nullptr, 10)) : 0;
e.caster_range = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 300;
all_entries.push_back(e);
}
@@ -709,57 +709,57 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotData e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.owner_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spells_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.owner_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spells_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.last_name = row[4] ? row[4] : "";
e.title = row[5] ? row[5] : "";
e.suffix = row[6] ? row[6] : "";
e.zone_id = static_cast<int16_t>(atoi(row[7]));
e.gender = static_cast<int8_t>(atoi(row[8]));
e.race = static_cast<int16_t>(atoi(row[9]));
e.class_ = static_cast<int8_t>(atoi(row[10]));
e.level = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.deity = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.creation_day = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.last_spawn = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.time_spawned = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.size = strtof(row[16], nullptr);
e.face = static_cast<int32_t>(atoi(row[17]));
e.hair_color = static_cast<int32_t>(atoi(row[18]));
e.hair_style = static_cast<int32_t>(atoi(row[19]));
e.beard = static_cast<int32_t>(atoi(row[20]));
e.beard_color = static_cast<int32_t>(atoi(row[21]));
e.eye_color_1 = static_cast<int32_t>(atoi(row[22]));
e.eye_color_2 = static_cast<int32_t>(atoi(row[23]));
e.drakkin_heritage = static_cast<int32_t>(atoi(row[24]));
e.drakkin_tattoo = static_cast<int32_t>(atoi(row[25]));
e.drakkin_details = static_cast<int32_t>(atoi(row[26]));
e.ac = static_cast<int16_t>(atoi(row[27]));
e.atk = static_cast<int32_t>(atoi(row[28]));
e.hp = static_cast<int32_t>(atoi(row[29]));
e.mana = static_cast<int32_t>(atoi(row[30]));
e.str = static_cast<int32_t>(atoi(row[31]));
e.sta = static_cast<int32_t>(atoi(row[32]));
e.cha = static_cast<int32_t>(atoi(row[33]));
e.dex = static_cast<int32_t>(atoi(row[34]));
e.int_ = static_cast<int32_t>(atoi(row[35]));
e.agi = static_cast<int32_t>(atoi(row[36]));
e.wis = static_cast<int32_t>(atoi(row[37]));
e.fire = static_cast<int16_t>(atoi(row[38]));
e.cold = static_cast<int16_t>(atoi(row[39]));
e.magic = static_cast<int16_t>(atoi(row[40]));
e.poison = static_cast<int16_t>(atoi(row[41]));
e.disease = static_cast<int16_t>(atoi(row[42]));
e.corruption = static_cast<int16_t>(atoi(row[43]));
e.show_helm = static_cast<uint32_t>(strtoul(row[44], nullptr, 10));
e.follow_distance = static_cast<uint32_t>(strtoul(row[45], nullptr, 10));
e.stop_melee_level = static_cast<uint8_t>(strtoul(row[46], nullptr, 10));
e.expansion_bitmask = static_cast<int32_t>(atoi(row[47]));
e.enforce_spell_settings = static_cast<uint8_t>(strtoul(row[48], nullptr, 10));
e.archery_setting = static_cast<uint8_t>(strtoul(row[49], nullptr, 10));
e.caster_range = static_cast<uint32_t>(strtoul(row[50], nullptr, 10));
e.zone_id = row[7] ? static_cast<int16_t>(atoi(row[7])) : 0;
e.gender = row[8] ? static_cast<int8_t>(atoi(row[8])) : 0;
e.race = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.class_ = row[10] ? static_cast<int8_t>(atoi(row[10])) : 0;
e.level = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.deity = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.creation_day = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.last_spawn = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.time_spawned = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.size = row[16] ? strtof(row[16], nullptr) : 0;
e.face = row[17] ? static_cast<int32_t>(atoi(row[17])) : 1;
e.hair_color = row[18] ? static_cast<int32_t>(atoi(row[18])) : 1;
e.hair_style = row[19] ? static_cast<int32_t>(atoi(row[19])) : 1;
e.beard = row[20] ? static_cast<int32_t>(atoi(row[20])) : 0;
e.beard_color = row[21] ? static_cast<int32_t>(atoi(row[21])) : 1;
e.eye_color_1 = row[22] ? static_cast<int32_t>(atoi(row[22])) : 1;
e.eye_color_2 = row[23] ? static_cast<int32_t>(atoi(row[23])) : 1;
e.drakkin_heritage = row[24] ? static_cast<int32_t>(atoi(row[24])) : 0;
e.drakkin_tattoo = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.drakkin_details = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.ac = row[27] ? static_cast<int16_t>(atoi(row[27])) : 0;
e.atk = row[28] ? static_cast<int32_t>(atoi(row[28])) : 0;
e.hp = row[29] ? static_cast<int32_t>(atoi(row[29])) : 0;
e.mana = row[30] ? static_cast<int32_t>(atoi(row[30])) : 0;
e.str = row[31] ? static_cast<int32_t>(atoi(row[31])) : 75;
e.sta = row[32] ? static_cast<int32_t>(atoi(row[32])) : 75;
e.cha = row[33] ? static_cast<int32_t>(atoi(row[33])) : 75;
e.dex = row[34] ? static_cast<int32_t>(atoi(row[34])) : 75;
e.int_ = row[35] ? static_cast<int32_t>(atoi(row[35])) : 75;
e.agi = row[36] ? static_cast<int32_t>(atoi(row[36])) : 75;
e.wis = row[37] ? static_cast<int32_t>(atoi(row[37])) : 75;
e.fire = row[38] ? static_cast<int16_t>(atoi(row[38])) : 0;
e.cold = row[39] ? static_cast<int16_t>(atoi(row[39])) : 0;
e.magic = row[40] ? static_cast<int16_t>(atoi(row[40])) : 0;
e.poison = row[41] ? static_cast<int16_t>(atoi(row[41])) : 0;
e.disease = row[42] ? static_cast<int16_t>(atoi(row[42])) : 0;
e.corruption = row[43] ? static_cast<int16_t>(atoi(row[43])) : 0;
e.show_helm = row[44] ? static_cast<uint32_t>(strtoul(row[44], nullptr, 10)) : 0;
e.follow_distance = row[45] ? static_cast<uint32_t>(strtoul(row[45], nullptr, 10)) : 200;
e.stop_melee_level = row[46] ? static_cast<uint8_t>(strtoul(row[46], nullptr, 10)) : 255;
e.expansion_bitmask = row[47] ? static_cast<int32_t>(atoi(row[47])) : -1;
e.enforce_spell_settings = row[48] ? static_cast<uint8_t>(strtoul(row[48], nullptr, 10)) : 0;
e.archery_setting = row[49] ? static_cast<uint8_t>(strtoul(row[49], nullptr, 10)) : 0;
e.caster_range = row[50] ? static_cast<uint32_t>(strtoul(row[50], nullptr, 10)) : 300;
all_entries.push_back(e);
}
@@ -818,6 +818,162 @@ 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 BotData &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.owner_id));
v.push_back(std::to_string(e.spells_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.last_name) + "'");
v.push_back("'" + Strings::Escape(e.title) + "'");
v.push_back("'" + Strings::Escape(e.suffix) + "'");
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.creation_day));
v.push_back(std::to_string(e.last_spawn));
v.push_back(std::to_string(e.time_spawned));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.face));
v.push_back(std::to_string(e.hair_color));
v.push_back(std::to_string(e.hair_style));
v.push_back(std::to_string(e.beard));
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.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.ac));
v.push_back(std::to_string(e.atk));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.str));
v.push_back(std::to_string(e.sta));
v.push_back(std::to_string(e.cha));
v.push_back(std::to_string(e.dex));
v.push_back(std::to_string(e.int_));
v.push_back(std::to_string(e.agi));
v.push_back(std::to_string(e.wis));
v.push_back(std::to_string(e.fire));
v.push_back(std::to_string(e.cold));
v.push_back(std::to_string(e.magic));
v.push_back(std::to_string(e.poison));
v.push_back(std::to_string(e.disease));
v.push_back(std::to_string(e.corruption));
v.push_back(std::to_string(e.show_helm));
v.push_back(std::to_string(e.follow_distance));
v.push_back(std::to_string(e.stop_melee_level));
v.push_back(std::to_string(e.expansion_bitmask));
v.push_back(std::to_string(e.enforce_spell_settings));
v.push_back(std::to_string(e.archery_setting));
v.push_back(std::to_string(e.caster_range));
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<BotData> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.owner_id));
v.push_back(std::to_string(e.spells_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back("'" + Strings::Escape(e.last_name) + "'");
v.push_back("'" + Strings::Escape(e.title) + "'");
v.push_back("'" + Strings::Escape(e.suffix) + "'");
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.gender));
v.push_back(std::to_string(e.race));
v.push_back(std::to_string(e.class_));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.deity));
v.push_back(std::to_string(e.creation_day));
v.push_back(std::to_string(e.last_spawn));
v.push_back(std::to_string(e.time_spawned));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.face));
v.push_back(std::to_string(e.hair_color));
v.push_back(std::to_string(e.hair_style));
v.push_back(std::to_string(e.beard));
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.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.ac));
v.push_back(std::to_string(e.atk));
v.push_back(std::to_string(e.hp));
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.str));
v.push_back(std::to_string(e.sta));
v.push_back(std::to_string(e.cha));
v.push_back(std::to_string(e.dex));
v.push_back(std::to_string(e.int_));
v.push_back(std::to_string(e.agi));
v.push_back(std::to_string(e.wis));
v.push_back(std::to_string(e.fire));
v.push_back(std::to_string(e.cold));
v.push_back(std::to_string(e.magic));
v.push_back(std::to_string(e.poison));
v.push_back(std::to_string(e.disease));
v.push_back(std::to_string(e.corruption));
v.push_back(std::to_string(e.show_helm));
v.push_back(std::to_string(e.follow_distance));
v.push_back(std::to_string(e.stop_melee_level));
v.push_back(std::to_string(e.expansion_bitmask));
v.push_back(std::to_string(e.enforce_spell_settings));
v.push_back(std::to_string(e.archery_setting));
v.push_back(std::to_string(e.caster_range));
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_BOT_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_BOT_HEAL_ROTATION_MEMBERS_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_heal_rotation_members_id
)
);
@@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) {
BotHealRotationMembers e{};
e.member_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.member_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_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) {
BotHealRotationMembers e{};
e.member_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.member_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_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) {
BotHealRotationMembers e{};
e.member_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.member_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_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 BotHealRotationMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.member_index));
v.push_back(std::to_string(e.heal_rotation_index));
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<BotHealRotationMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.member_index));
v.push_back(std::to_string(e.heal_rotation_index));
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_BOT_HEAL_ROTATION_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_BOT_HEAL_ROTATION_TARGETS_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_heal_rotation_targets_id
)
);
@@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) {
BotHealRotationTargets e{};
e.target_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.target_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.target_name = row[2] ? row[2] : "";
return e;
@@ -249,8 +250,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotHealRotationTargets e{};
e.target_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.target_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.target_name = row[2] ? row[2] : "";
all_entries.push_back(e);
@@ -276,8 +277,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotHealRotationTargets e{};
e.target_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.target_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.heal_rotation_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.target_name = row[2] ? row[2] : "";
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 BotHealRotationTargets &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.target_index));
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back("'" + Strings::Escape(e.target_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<BotHealRotationTargets> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.target_index));
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back("'" + Strings::Escape(e.target_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_BOT_HEAL_ROTATION_TARGETS_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_BOT_HEAL_ROTATIONS_REPOSITORY_H
@@ -19,22 +19,22 @@
class BaseBotHealRotationsRepository {
public:
struct BotHealRotations {
uint32_t heal_rotation_index;
uint32_t bot_id;
uint32_t interval;
uint32_t fast_heals;
uint32_t adaptive_targeting;
uint32_t casting_override;
std::string safe_hp_base;
std::string safe_hp_cloth;
std::string safe_hp_leather;
std::string safe_hp_chain;
std::string safe_hp_plate;
std::string critical_hp_base;
std::string critical_hp_cloth;
std::string critical_hp_leather;
std::string critical_hp_chain;
std::string critical_hp_plate;
uint32_t heal_rotation_index;
uint32_t bot_id;
uint32_t interval_;
uint32_t fast_heals;
uint32_t adaptive_targeting;
uint32_t casting_override;
float safe_hp_base;
float safe_hp_cloth;
float safe_hp_leather;
float safe_hp_chain;
float safe_hp_plate;
float critical_hp_base;
float critical_hp_cloth;
float critical_hp_leather;
float critical_hp_chain;
float critical_hp_plate;
};
static std::string PrimaryKey()
@@ -47,7 +47,7 @@ public:
return {
"heal_rotation_index",
"bot_id",
"interval",
"`interval`",
"fast_heals",
"adaptive_targeting",
"casting_override",
@@ -69,7 +69,7 @@ public:
return {
"heal_rotation_index",
"bot_id",
"interval",
"`interval`",
"fast_heals",
"adaptive_targeting",
"casting_override",
@@ -125,7 +125,7 @@ public:
e.heal_rotation_index = 0;
e.bot_id = 0;
e.interval = 0;
e.interval_ = 0;
e.fast_heals = 0;
e.adaptive_targeting = 0;
e.casting_override = 0;
@@ -164,8 +164,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_heal_rotations_id
)
);
@@ -174,12 +175,12 @@ public:
if (results.RowCount() == 1) {
BotHealRotations e{};
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.interval = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.fast_heals = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.adaptive_targeting = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.casting_override = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.heal_rotation_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.interval_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.fast_heals = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.adaptive_targeting = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.casting_override = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
return e;
}
@@ -214,7 +215,7 @@ public:
auto columns = Columns();
v.push_back(columns[1] + " = " + std::to_string(e.bot_id));
v.push_back(columns[2] + " = " + std::to_string(e.interval));
v.push_back(columns[2] + " = " + std::to_string(e.interval_));
v.push_back(columns[3] + " = " + std::to_string(e.fast_heals));
v.push_back(columns[4] + " = " + std::to_string(e.adaptive_targeting));
v.push_back(columns[5] + " = " + std::to_string(e.casting_override));
@@ -251,7 +252,7 @@ public:
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.interval));
v.push_back(std::to_string(e.interval_));
v.push_back(std::to_string(e.fast_heals));
v.push_back(std::to_string(e.adaptive_targeting));
v.push_back(std::to_string(e.casting_override));
@@ -296,7 +297,7 @@ public:
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.interval));
v.push_back(std::to_string(e.interval_));
v.push_back(std::to_string(e.fast_heals));
v.push_back(std::to_string(e.adaptive_targeting));
v.push_back(std::to_string(e.casting_override));
@@ -343,12 +344,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotHealRotations e{};
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.interval = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.fast_heals = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.adaptive_targeting = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.casting_override = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.heal_rotation_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.interval_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.fast_heals = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.adaptive_targeting = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.casting_override = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -373,12 +374,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotHealRotations e{};
e.heal_rotation_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.interval = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.fast_heals = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.adaptive_targeting = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.casting_override = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.heal_rotation_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.interval_ = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.fast_heals = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.adaptive_targeting = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.casting_override = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -437,6 +438,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 BotHealRotations &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.interval_));
v.push_back(std::to_string(e.fast_heals));
v.push_back(std::to_string(e.adaptive_targeting));
v.push_back(std::to_string(e.casting_override));
v.push_back(std::to_string(e.safe_hp_base));
v.push_back(std::to_string(e.safe_hp_cloth));
v.push_back(std::to_string(e.safe_hp_leather));
v.push_back(std::to_string(e.safe_hp_chain));
v.push_back(std::to_string(e.safe_hp_plate));
v.push_back(std::to_string(e.critical_hp_base));
v.push_back(std::to_string(e.critical_hp_cloth));
v.push_back(std::to_string(e.critical_hp_leather));
v.push_back(std::to_string(e.critical_hp_chain));
v.push_back(std::to_string(e.critical_hp_plate));
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<BotHealRotations> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.heal_rotation_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.interval_));
v.push_back(std::to_string(e.fast_heals));
v.push_back(std::to_string(e.adaptive_targeting));
v.push_back(std::to_string(e.casting_override));
v.push_back(std::to_string(e.safe_hp_base));
v.push_back(std::to_string(e.safe_hp_cloth));
v.push_back(std::to_string(e.safe_hp_leather));
v.push_back(std::to_string(e.safe_hp_chain));
v.push_back(std::to_string(e.safe_hp_plate));
v.push_back(std::to_string(e.critical_hp_base));
v.push_back(std::to_string(e.critical_hp_cloth));
v.push_back(std::to_string(e.critical_hp_leather));
v.push_back(std::to_string(e.critical_hp_chain));
v.push_back(std::to_string(e.critical_hp_plate));
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_BOT_HEAL_ROTATIONS_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_BOT_INSPECT_MESSAGES_REPOSITORY_H
@@ -108,8 +108,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_inspect_messages_id
)
);
@@ -118,7 +119,7 @@ public:
if (results.RowCount() == 1) {
BotInspectMessages e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_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) {
BotInspectMessages e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_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) {
BotInspectMessages e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_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 BotInspectMessages &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_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<BotInspectMessages> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_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_BOT_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_BOT_INVENTORIES_REPOSITORY_H
@@ -168,8 +168,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_inventories_id
)
);
@@ -178,23 +179,23 @@ public:
if (results.RowCount() == 1) {
BotInventories e{};
e.inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.slot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.inst_charges = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
e.inst_color = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.inst_no_drop = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.inst_charges = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.inst_color = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.inst_no_drop = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.inst_custom_data = row[7] ? row[7] : "";
e.ornament_icon = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.ornament_id_file = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.ornament_hero_model = static_cast<int32_t>(atoi(row[10]));
e.augment_1 = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.augment_2 = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.augment_3 = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.augment_4 = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.augment_5 = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.augment_6 = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.ornament_icon = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ornament_id_file = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.ornament_hero_model = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
e.augment_1 = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.augment_2 = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.augment_3 = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.augment_4 = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.augment_5 = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.augment_6 = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
return e;
}
@@ -361,23 +362,23 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotInventories e{};
e.inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.slot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.inst_charges = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
e.inst_color = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.inst_no_drop = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.inst_charges = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.inst_color = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.inst_no_drop = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.inst_custom_data = row[7] ? row[7] : "";
e.ornament_icon = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.ornament_id_file = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.ornament_hero_model = static_cast<int32_t>(atoi(row[10]));
e.augment_1 = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.augment_2 = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.augment_3 = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.augment_4 = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.augment_5 = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.augment_6 = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.ornament_icon = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ornament_id_file = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.ornament_hero_model = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
e.augment_1 = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.augment_2 = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.augment_3 = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.augment_4 = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.augment_5 = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.augment_6 = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -402,23 +403,23 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotInventories e{};
e.inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.slot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.inst_charges = static_cast<uint16_t>(strtoul(row[4], nullptr, 10));
e.inst_color = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.inst_no_drop = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.slot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.inst_charges = row[4] ? static_cast<uint16_t>(strtoul(row[4], nullptr, 10)) : 0;
e.inst_color = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.inst_no_drop = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.inst_custom_data = row[7] ? row[7] : "";
e.ornament_icon = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.ornament_id_file = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.ornament_hero_model = static_cast<int32_t>(atoi(row[10]));
e.augment_1 = static_cast<uint32_t>(strtoul(row[11], nullptr, 10));
e.augment_2 = static_cast<uint32_t>(strtoul(row[12], nullptr, 10));
e.augment_3 = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.augment_4 = static_cast<uint32_t>(strtoul(row[14], nullptr, 10));
e.augment_5 = static_cast<uint32_t>(strtoul(row[15], nullptr, 10));
e.augment_6 = static_cast<uint32_t>(strtoul(row[16], nullptr, 10));
e.ornament_icon = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
e.ornament_id_file = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.ornament_hero_model = row[10] ? static_cast<int32_t>(atoi(row[10])) : 0;
e.augment_1 = row[11] ? static_cast<uint32_t>(strtoul(row[11], nullptr, 10)) : 0;
e.augment_2 = row[12] ? static_cast<uint32_t>(strtoul(row[12], nullptr, 10)) : 0;
e.augment_3 = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.augment_4 = row[14] ? static_cast<uint32_t>(strtoul(row[14], nullptr, 10)) : 0;
e.augment_5 = row[15] ? static_cast<uint32_t>(strtoul(row[15], nullptr, 10)) : 0;
e.augment_6 = row[16] ? static_cast<uint32_t>(strtoul(row[16], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -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 BotInventories &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.inventories_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.slot_id));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.inst_charges));
v.push_back(std::to_string(e.inst_color));
v.push_back(std::to_string(e.inst_no_drop));
v.push_back("'" + Strings::Escape(e.inst_custom_data) + "'");
v.push_back(std::to_string(e.ornament_icon));
v.push_back(std::to_string(e.ornament_id_file));
v.push_back(std::to_string(e.ornament_hero_model));
v.push_back(std::to_string(e.augment_1));
v.push_back(std::to_string(e.augment_2));
v.push_back(std::to_string(e.augment_3));
v.push_back(std::to_string(e.augment_4));
v.push_back(std::to_string(e.augment_5));
v.push_back(std::to_string(e.augment_6));
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<BotInventories> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.inventories_index));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.slot_id));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.inst_charges));
v.push_back(std::to_string(e.inst_color));
v.push_back(std::to_string(e.inst_no_drop));
v.push_back("'" + Strings::Escape(e.inst_custom_data) + "'");
v.push_back(std::to_string(e.ornament_icon));
v.push_back(std::to_string(e.ornament_id_file));
v.push_back(std::to_string(e.ornament_hero_model));
v.push_back(std::to_string(e.augment_1));
v.push_back(std::to_string(e.augment_2));
v.push_back(std::to_string(e.augment_3));
v.push_back(std::to_string(e.augment_4));
v.push_back(std::to_string(e.augment_5));
v.push_back(std::to_string(e.augment_6));
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_BOT_INVENTORIES_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_BOT_OWNER_OPTIONS_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_owner_options_id
)
);
@@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) {
BotOwnerOptions e{};
e.owner_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.option_type = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
e.option_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
e.owner_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.option_type = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.option_value = row[2] ? static_cast<uint16_t>(strtoul(row[2], nullptr, 10)) : 0;
return e;
}
@@ -250,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotOwnerOptions e{};
e.owner_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.option_type = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
e.option_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
e.owner_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.option_type = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.option_value = row[2] ? static_cast<uint16_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) {
BotOwnerOptions e{};
e.owner_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.option_type = static_cast<uint16_t>(strtoul(row[1], nullptr, 10));
e.option_value = static_cast<uint16_t>(strtoul(row[2], nullptr, 10));
e.owner_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.option_type = row[1] ? static_cast<uint16_t>(strtoul(row[1], nullptr, 10)) : 0;
e.option_value = row[2] ? static_cast<uint16_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 BotOwnerOptions &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.owner_id));
v.push_back(std::to_string(e.option_type));
v.push_back(std::to_string(e.option_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<BotOwnerOptions> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.owner_id));
v.push_back(std::to_string(e.option_type));
v.push_back(std::to_string(e.option_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_BOT_OWNER_OPTIONS_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_BOT_PET_BUFFS_REPOSITORY_H
@@ -120,8 +120,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_pet_buffs_id
)
);
@@ -130,11 +131,11 @@ public:
if (results.RowCount() == 1) {
BotPetBuffs e{};
e.pet_buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.pet_buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
return e;
}
@@ -265,11 +266,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPetBuffs e{};
e.pet_buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.pet_buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -294,11 +295,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPetBuffs e{};
e.pet_buffs_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.caster_level = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.pet_buffs_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.spell_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.caster_level = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -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 BotPetBuffs &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.pet_buffs_index));
v.push_back(std::to_string(e.pets_index));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.caster_level));
v.push_back(std::to_string(e.duration));
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<BotPetBuffs> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.pet_buffs_index));
v.push_back(std::to_string(e.pets_index));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.caster_level));
v.push_back(std::to_string(e.duration));
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_BOT_PET_BUFFS_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_BOT_PET_INVENTORIES_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_pet_inventories_id
)
);
@@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) {
BotPetInventories e{};
e.pet_inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pet_inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = 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;
return e;
}
@@ -249,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPetInventories e{};
e.pet_inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pet_inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = 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;
all_entries.push_back(e);
}
@@ -276,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPetInventories e{};
e.pet_inventories_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.pets_index = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pet_inventories_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.pets_index = 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;
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 BotPetInventories &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.pet_inventories_index));
v.push_back(std::to_string(e.pets_index));
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<BotPetInventories> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.pet_inventories_index));
v.push_back(std::to_string(e.pets_index));
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_BOT_PET_INVENTORIES_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_BOT_PETS_REPOSITORY_H
@@ -124,8 +124,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_pets_id
)
);
@@ -134,12 +135,12 @@ public:
if (results.RowCount() == 1) {
BotPets e{};
e.pets_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pets_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.spell_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.mana = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
return e;
}
@@ -273,12 +274,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPets e{};
e.pets_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pets_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.spell_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.mana = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
all_entries.push_back(e);
}
@@ -303,12 +304,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotPets e{};
e.pets_index = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.bot_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.pets_index = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.spell_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.bot_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.name = row[3] ? row[3] : "";
e.mana = static_cast<int32_t>(atoi(row[4]));
e.hp = static_cast<int32_t>(atoi(row[5]));
e.mana = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.hp = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
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 BotPets &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.pets_index));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.bot_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.hp));
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<BotPets> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.pets_index));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.bot_id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.mana));
v.push_back(std::to_string(e.hp));
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_BOT_PETS_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_BOT_SPELL_CASTING_CHANCES_REPOSITORY_H
@@ -180,8 +180,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_spell_casting_chances_id
)
);
@@ -190,26 +191,26 @@ public:
if (results.RowCount() == 1) {
BotSpellCastingChances e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.spell_type_index = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.class_id = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.stance_index = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.nHSND_value = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.pH_value = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.pS_value = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.pHS_value = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.pN_value = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.pHN_value = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.pSN_value = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
e.pHSN_value = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.pD_value = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.pHD_value = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.pSD_value = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.pHSD_value = static_cast<uint8_t>(strtoul(row[15], nullptr, 10));
e.pND_value = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
e.pHND_value = static_cast<uint8_t>(strtoul(row[17], nullptr, 10));
e.pSND_value = static_cast<uint8_t>(strtoul(row[18], nullptr, 10));
e.pHSND_value = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.spell_type_index = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_id = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.stance_index = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.nHSND_value = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.pH_value = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.pS_value = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.pHS_value = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.pN_value = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.pHN_value = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
e.pSN_value = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.pHSN_value = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.pD_value = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.pHD_value = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.pSD_value = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
e.pHSD_value = row[15] ? static_cast<uint8_t>(strtoul(row[15], nullptr, 10)) : 0;
e.pND_value = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.pHND_value = row[17] ? static_cast<uint8_t>(strtoul(row[17], nullptr, 10)) : 0;
e.pSND_value = row[18] ? static_cast<uint8_t>(strtoul(row[18], nullptr, 10)) : 0;
e.pHSND_value = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 0;
return e;
}
@@ -385,26 +386,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellCastingChances e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.spell_type_index = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.class_id = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.stance_index = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.nHSND_value = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.pH_value = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.pS_value = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.pHS_value = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.pN_value = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.pHN_value = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.pSN_value = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
e.pHSN_value = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.pD_value = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.pHD_value = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.pSD_value = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.pHSD_value = static_cast<uint8_t>(strtoul(row[15], nullptr, 10));
e.pND_value = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
e.pHND_value = static_cast<uint8_t>(strtoul(row[17], nullptr, 10));
e.pSND_value = static_cast<uint8_t>(strtoul(row[18], nullptr, 10));
e.pHSND_value = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.spell_type_index = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_id = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.stance_index = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.nHSND_value = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.pH_value = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.pS_value = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.pHS_value = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.pN_value = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.pHN_value = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
e.pSN_value = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.pHSN_value = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.pD_value = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.pHD_value = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.pSD_value = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
e.pHSD_value = row[15] ? static_cast<uint8_t>(strtoul(row[15], nullptr, 10)) : 0;
e.pND_value = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.pHND_value = row[17] ? static_cast<uint8_t>(strtoul(row[17], nullptr, 10)) : 0;
e.pSND_value = row[18] ? static_cast<uint8_t>(strtoul(row[18], nullptr, 10)) : 0;
e.pHSND_value = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -429,26 +430,26 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellCastingChances e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.spell_type_index = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.class_id = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.stance_index = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.nHSND_value = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.pH_value = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.pS_value = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.pHS_value = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.pN_value = static_cast<uint8_t>(strtoul(row[8], nullptr, 10));
e.pHN_value = static_cast<uint8_t>(strtoul(row[9], nullptr, 10));
e.pSN_value = static_cast<uint8_t>(strtoul(row[10], nullptr, 10));
e.pHSN_value = static_cast<uint8_t>(strtoul(row[11], nullptr, 10));
e.pD_value = static_cast<uint8_t>(strtoul(row[12], nullptr, 10));
e.pHD_value = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.pSD_value = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.pHSD_value = static_cast<uint8_t>(strtoul(row[15], nullptr, 10));
e.pND_value = static_cast<uint8_t>(strtoul(row[16], nullptr, 10));
e.pHND_value = static_cast<uint8_t>(strtoul(row[17], nullptr, 10));
e.pSND_value = static_cast<uint8_t>(strtoul(row[18], nullptr, 10));
e.pHSND_value = static_cast<uint8_t>(strtoul(row[19], nullptr, 10));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.spell_type_index = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
e.class_id = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.stance_index = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
e.nHSND_value = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.pH_value = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.pS_value = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 0;
e.pHS_value = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.pN_value = row[8] ? static_cast<uint8_t>(strtoul(row[8], nullptr, 10)) : 0;
e.pHN_value = row[9] ? static_cast<uint8_t>(strtoul(row[9], nullptr, 10)) : 0;
e.pSN_value = row[10] ? static_cast<uint8_t>(strtoul(row[10], nullptr, 10)) : 0;
e.pHSN_value = row[11] ? static_cast<uint8_t>(strtoul(row[11], nullptr, 10)) : 0;
e.pD_value = row[12] ? static_cast<uint8_t>(strtoul(row[12], nullptr, 10)) : 0;
e.pHD_value = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.pSD_value = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
e.pHSD_value = row[15] ? static_cast<uint8_t>(strtoul(row[15], nullptr, 10)) : 0;
e.pND_value = row[16] ? static_cast<uint8_t>(strtoul(row[16], nullptr, 10)) : 0;
e.pHND_value = row[17] ? static_cast<uint8_t>(strtoul(row[17], nullptr, 10)) : 0;
e.pSND_value = row[18] ? static_cast<uint8_t>(strtoul(row[18], nullptr, 10)) : 0;
e.pHSND_value = row[19] ? static_cast<uint8_t>(strtoul(row[19], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -507,6 +508,100 @@ 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 BotSpellCastingChances &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.spell_type_index));
v.push_back(std::to_string(e.class_id));
v.push_back(std::to_string(e.stance_index));
v.push_back(std::to_string(e.nHSND_value));
v.push_back(std::to_string(e.pH_value));
v.push_back(std::to_string(e.pS_value));
v.push_back(std::to_string(e.pHS_value));
v.push_back(std::to_string(e.pN_value));
v.push_back(std::to_string(e.pHN_value));
v.push_back(std::to_string(e.pSN_value));
v.push_back(std::to_string(e.pHSN_value));
v.push_back(std::to_string(e.pD_value));
v.push_back(std::to_string(e.pHD_value));
v.push_back(std::to_string(e.pSD_value));
v.push_back(std::to_string(e.pHSD_value));
v.push_back(std::to_string(e.pND_value));
v.push_back(std::to_string(e.pHND_value));
v.push_back(std::to_string(e.pSND_value));
v.push_back(std::to_string(e.pHSND_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<BotSpellCastingChances> &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.spell_type_index));
v.push_back(std::to_string(e.class_id));
v.push_back(std::to_string(e.stance_index));
v.push_back(std::to_string(e.nHSND_value));
v.push_back(std::to_string(e.pH_value));
v.push_back(std::to_string(e.pS_value));
v.push_back(std::to_string(e.pHS_value));
v.push_back(std::to_string(e.pN_value));
v.push_back(std::to_string(e.pHN_value));
v.push_back(std::to_string(e.pSN_value));
v.push_back(std::to_string(e.pHSN_value));
v.push_back(std::to_string(e.pD_value));
v.push_back(std::to_string(e.pHD_value));
v.push_back(std::to_string(e.pSD_value));
v.push_back(std::to_string(e.pHSD_value));
v.push_back(std::to_string(e.pND_value));
v.push_back(std::to_string(e.pHND_value));
v.push_back(std::to_string(e.pSND_value));
v.push_back(std::to_string(e.pHSND_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_BOT_SPELL_CASTING_CHANCES_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_BOT_SPELL_SETTINGS_REPOSITORY_H
@@ -128,8 +128,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_spell_settings_id
)
);
@@ -138,13 +139,13 @@ public:
if (results.RowCount() == 1) {
BotSpellSettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<int32_t>(atoi(row[1]));
e.spell_id = static_cast<int16_t>(atoi(row[2]));
e.priority = static_cast<int16_t>(atoi(row[3]));
e.min_hp = static_cast<int16_t>(atoi(row[4]));
e.max_hp = static_cast<int16_t>(atoi(row[5]));
e.is_enabled = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spell_id = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.priority = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.min_hp = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.max_hp = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
e.is_enabled = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 1;
return e;
}
@@ -281,13 +282,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellSettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<int32_t>(atoi(row[1]));
e.spell_id = static_cast<int16_t>(atoi(row[2]));
e.priority = static_cast<int16_t>(atoi(row[3]));
e.min_hp = static_cast<int16_t>(atoi(row[4]));
e.max_hp = static_cast<int16_t>(atoi(row[5]));
e.is_enabled = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spell_id = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.priority = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.min_hp = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.max_hp = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
e.is_enabled = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 1;
all_entries.push_back(e);
}
@@ -312,13 +313,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellSettings e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.bot_id = static_cast<int32_t>(atoi(row[1]));
e.spell_id = static_cast<int16_t>(atoi(row[2]));
e.priority = static_cast<int16_t>(atoi(row[3]));
e.min_hp = static_cast<int16_t>(atoi(row[4]));
e.max_hp = static_cast<int16_t>(atoi(row[5]));
e.is_enabled = static_cast<uint8_t>(strtoul(row[6], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.bot_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spell_id = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.priority = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.min_hp = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.max_hp = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
e.is_enabled = row[6] ? static_cast<uint8_t>(strtoul(row[6], nullptr, 10)) : 1;
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 BotSpellSettings &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.priority));
v.push_back(std::to_string(e.min_hp));
v.push_back(std::to_string(e.max_hp));
v.push_back(std::to_string(e.is_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<BotSpellSettings> &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.bot_id));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.priority));
v.push_back(std::to_string(e.min_hp));
v.push_back(std::to_string(e.max_hp));
v.push_back(std::to_string(e.is_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_BOT_SPELL_SETTINGS_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_BOT_SPELLS_ENTRIES_REPOSITORY_H
@@ -160,8 +160,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_spells_entries_id
)
);
@@ -170,21 +171,21 @@ public:
if (results.RowCount() == 1) {
BotSpellsEntries e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.npc_spells_id = static_cast<int32_t>(atoi(row[1]));
e.spellid = static_cast<int16_t>(atoi(row[2]));
e.type = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.minlevel = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.maxlevel = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.manacost = static_cast<int16_t>(atoi(row[6]));
e.recast_delay = static_cast<int32_t>(atoi(row[7]));
e.priority = static_cast<int16_t>(atoi(row[8]));
e.resist_adjust = static_cast<int32_t>(atoi(row[9]));
e.min_hp = static_cast<int16_t>(atoi(row[10]));
e.max_hp = static_cast<int16_t>(atoi(row[11]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.npc_spells_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spellid = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.type = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.minlevel = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.maxlevel = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 255;
e.manacost = row[6] ? static_cast<int16_t>(atoi(row[6])) : -1;
e.recast_delay = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
e.priority = row[8] ? static_cast<int16_t>(atoi(row[8])) : 0;
e.resist_adjust = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.min_hp = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.max_hp = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.bucket_name = row[12] ? row[12] : "";
e.bucket_value = row[13] ? row[13] : "";
e.bucket_comparison = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.bucket_comparison = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
return e;
}
@@ -345,21 +346,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellsEntries e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.npc_spells_id = static_cast<int32_t>(atoi(row[1]));
e.spellid = static_cast<int16_t>(atoi(row[2]));
e.type = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.minlevel = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.maxlevel = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.manacost = static_cast<int16_t>(atoi(row[6]));
e.recast_delay = static_cast<int32_t>(atoi(row[7]));
e.priority = static_cast<int16_t>(atoi(row[8]));
e.resist_adjust = static_cast<int32_t>(atoi(row[9]));
e.min_hp = static_cast<int16_t>(atoi(row[10]));
e.max_hp = static_cast<int16_t>(atoi(row[11]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.npc_spells_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spellid = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.type = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.minlevel = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.maxlevel = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 255;
e.manacost = row[6] ? static_cast<int16_t>(atoi(row[6])) : -1;
e.recast_delay = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
e.priority = row[8] ? static_cast<int16_t>(atoi(row[8])) : 0;
e.resist_adjust = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.min_hp = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.max_hp = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.bucket_name = row[12] ? row[12] : "";
e.bucket_value = row[13] ? row[13] : "";
e.bucket_comparison = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.bucket_comparison = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -384,21 +385,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotSpellsEntries e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.npc_spells_id = static_cast<int32_t>(atoi(row[1]));
e.spellid = static_cast<int16_t>(atoi(row[2]));
e.type = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.minlevel = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.maxlevel = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.manacost = static_cast<int16_t>(atoi(row[6]));
e.recast_delay = static_cast<int32_t>(atoi(row[7]));
e.priority = static_cast<int16_t>(atoi(row[8]));
e.resist_adjust = static_cast<int32_t>(atoi(row[9]));
e.min_hp = static_cast<int16_t>(atoi(row[10]));
e.max_hp = static_cast<int16_t>(atoi(row[11]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.npc_spells_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.spellid = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.type = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.minlevel = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.maxlevel = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 255;
e.manacost = row[6] ? static_cast<int16_t>(atoi(row[6])) : -1;
e.recast_delay = row[7] ? static_cast<int32_t>(atoi(row[7])) : -1;
e.priority = row[8] ? static_cast<int16_t>(atoi(row[8])) : 0;
e.resist_adjust = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.min_hp = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.max_hp = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.bucket_name = row[12] ? row[12] : "";
e.bucket_value = row[13] ? row[13] : "";
e.bucket_comparison = static_cast<uint8_t>(strtoul(row[14], nullptr, 10));
e.bucket_comparison = row[14] ? static_cast<uint8_t>(strtoul(row[14], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -457,6 +458,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 BotSpellsEntries &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.npc_spells_id));
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.minlevel));
v.push_back(std::to_string(e.maxlevel));
v.push_back(std::to_string(e.manacost));
v.push_back(std::to_string(e.recast_delay));
v.push_back(std::to_string(e.priority));
v.push_back(std::to_string(e.resist_adjust));
v.push_back(std::to_string(e.min_hp));
v.push_back(std::to_string(e.max_hp));
v.push_back("'" + Strings::Escape(e.bucket_name) + "'");
v.push_back("'" + Strings::Escape(e.bucket_value) + "'");
v.push_back(std::to_string(e.bucket_comparison));
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<BotSpellsEntries> &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.npc_spells_id));
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
v.push_back(std::to_string(e.minlevel));
v.push_back(std::to_string(e.maxlevel));
v.push_back(std::to_string(e.manacost));
v.push_back(std::to_string(e.recast_delay));
v.push_back(std::to_string(e.priority));
v.push_back(std::to_string(e.resist_adjust));
v.push_back(std::to_string(e.min_hp));
v.push_back(std::to_string(e.max_hp));
v.push_back("'" + Strings::Escape(e.bucket_name) + "'");
v.push_back("'" + Strings::Escape(e.bucket_value) + "'");
v.push_back(std::to_string(e.bucket_comparison));
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_BOT_SPELLS_ENTRIES_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_BOT_STANCES_REPOSITORY_H
@@ -108,8 +108,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
bot_stances_id
)
);
@@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) {
BotStances e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.stance_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.stance_id = 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) {
BotStances e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.stance_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.stance_id = 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) {
BotStances e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.stance_id = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.stance_id = 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 BotStances &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.stance_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<BotStances> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.stance_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_BOT_STANCES_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_BOT_STARTING_ITEMS_REPOSITORY_H
@@ -16,7 +16,6 @@
#include "../../strings.h"
#include <ctime>
class BaseBotStartingItemsRepository {
public:
struct BotStartingItems {
@@ -25,6 +24,7 @@ public:
uint32_t classes;
uint32_t item_id;
uint8_t item_charges;
uint8_t min_status;
int32_t slot_id;
int8_t min_expansion;
int8_t max_expansion;
@@ -45,6 +45,7 @@ public:
"classes",
"item_id",
"item_charges",
"min_status",
"slot_id",
"min_expansion",
"max_expansion",
@@ -61,6 +62,7 @@ public:
"classes",
"item_id",
"item_charges",
"min_status",
"slot_id",
"min_expansion",
"max_expansion",
@@ -111,6 +113,7 @@ public:
e.classes = 0;
e.item_id = 0;
e.item_charges = 1;
e.min_status = 0;
e.slot_id = -1;
e.min_expansion = -1;
e.max_expansion = -1;
@@ -152,16 +155,17 @@ public:
if (results.RowCount() == 1) {
BotStartingItems e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.races = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.item_charges = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.slot_id = static_cast<int32_t>(atoi(row[5]));
e.min_expansion = static_cast<int8_t>(atoi(row[6]));
e.max_expansion = static_cast<int8_t>(atoi(row[7]));
e.content_flags = row[8] ? row[8] : "";
e.content_flags_disabled = row[9] ? row[9] : "";
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.races = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.classes = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.item_charges = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 1;
e.min_status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.slot_id = row[6] ? static_cast<int32_t>(atoi(row[6])) : -1;
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] : "";
return e;
}
@@ -199,11 +203,12 @@ public:
v.push_back(columns[2] + " = " + std::to_string(e.classes));
v.push_back(columns[3] + " = " + std::to_string(e.item_id));
v.push_back(columns[4] + " = " + std::to_string(e.item_charges));
v.push_back(columns[5] + " = " + std::to_string(e.slot_id));
v.push_back(columns[6] + " = " + std::to_string(e.min_expansion));
v.push_back(columns[7] + " = " + std::to_string(e.max_expansion));
v.push_back(columns[8] + " = '" + Strings::Escape(e.content_flags) + "'");
v.push_back(columns[9] + " = '" + Strings::Escape(e.content_flags_disabled) + "'");
v.push_back(columns[5] + " = " + std::to_string(e.min_status));
v.push_back(columns[6] + " = " + std::to_string(e.slot_id));
v.push_back(columns[7] + " = " + std::to_string(e.min_expansion));
v.push_back(columns[8] + " = " + std::to_string(e.max_expansion));
v.push_back(columns[9] + " = '" + Strings::Escape(e.content_flags) + "'");
v.push_back(columns[10] + " = '" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
@@ -230,6 +235,7 @@ public:
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.item_charges));
v.push_back(std::to_string(e.min_status));
v.push_back(std::to_string(e.slot_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
@@ -269,6 +275,7 @@ public:
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.item_charges));
v.push_back(std::to_string(e.min_status));
v.push_back(std::to_string(e.slot_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
@@ -307,16 +314,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotStartingItems e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.races = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.item_charges = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.slot_id = static_cast<int32_t>(atoi(row[5]));
e.min_expansion = static_cast<int8_t>(atoi(row[6]));
e.max_expansion = static_cast<int8_t>(atoi(row[7]));
e.content_flags = row[8] ? row[8] : "";
e.content_flags_disabled = row[9] ? row[9] : "";
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.races = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.classes = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.item_charges = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 1;
e.min_status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.slot_id = row[6] ? static_cast<int32_t>(atoi(row[6])) : -1;
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] : "";
all_entries.push_back(e);
}
@@ -341,16 +349,17 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotStartingItems e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.races = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.classes = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.item_charges = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.slot_id = static_cast<int32_t>(atoi(row[5]));
e.min_expansion = static_cast<int8_t>(atoi(row[6]));
e.max_expansion = static_cast<int8_t>(atoi(row[7]));
e.content_flags = row[8] ? row[8] : "";
e.content_flags_disabled = row[9] ? row[9] : "";
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.races = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.classes = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.item_id = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.item_charges = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 1;
e.min_status = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.slot_id = row[6] ? static_cast<int32_t>(atoi(row[6])) : -1;
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] : "";
all_entries.push_back(e);
}
@@ -409,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 BotStartingItems &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.races));
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.item_charges));
v.push_back(std::to_string(e.min_status));
v.push_back(std::to_string(e.slot_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<BotStartingItems> &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.races));
v.push_back(std::to_string(e.classes));
v.push_back(std::to_string(e.item_id));
v.push_back(std::to_string(e.item_charges));
v.push_back(std::to_string(e.min_status));
v.push_back(std::to_string(e.slot_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_BOT_STARTING_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_BOT_TIMERS_REPOSITORY_H
@@ -16,7 +16,6 @@
#include "../../strings.h"
#include <ctime>
class BaseBotTimersRepository {
public:
struct BotTimers {
@@ -148,15 +147,15 @@ public:
if (results.RowCount() == 1) {
BotTimers e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.timer_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.timer_value = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.recast_time = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.is_spell = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.is_disc = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.is_item = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.timer_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timer_value = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.recast_time = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_spell = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.is_disc = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.spell_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.is_item = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.item_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
return e;
}
@@ -300,15 +299,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotTimers e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.timer_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.timer_value = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.recast_time = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.is_spell = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.is_disc = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.is_item = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.timer_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timer_value = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.recast_time = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_spell = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.is_disc = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.spell_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.is_item = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.item_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -333,15 +332,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
BotTimers e{};
e.bot_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.timer_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.timer_value = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.recast_time = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.is_spell = static_cast<uint8_t>(strtoul(row[4], nullptr, 10));
e.is_disc = static_cast<uint8_t>(strtoul(row[5], nullptr, 10));
e.spell_id = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.is_item = static_cast<uint8_t>(strtoul(row[7], nullptr, 10));
e.item_id = static_cast<uint32_t>(strtoul(row[8], nullptr, 10));
e.bot_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.timer_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.timer_value = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.recast_time = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.is_spell = row[4] ? static_cast<uint8_t>(strtoul(row[4], nullptr, 10)) : 0;
e.is_disc = row[5] ? static_cast<uint8_t>(strtoul(row[5], nullptr, 10)) : 0;
e.spell_id = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.is_item = row[7] ? static_cast<uint8_t>(strtoul(row[7], nullptr, 10)) : 0;
e.item_id = row[8] ? static_cast<uint32_t>(strtoul(row[8], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -400,6 +399,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 BotTimers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.timer_id));
v.push_back(std::to_string(e.timer_value));
v.push_back(std::to_string(e.recast_time));
v.push_back(std::to_string(e.is_spell));
v.push_back(std::to_string(e.is_disc));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.is_item));
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<BotTimers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.bot_id));
v.push_back(std::to_string(e.timer_id));
v.push_back(std::to_string(e.timer_value));
v.push_back(std::to_string(e.recast_time));
v.push_back(std::to_string(e.is_spell));
v.push_back(std::to_string(e.is_disc));
v.push_back(std::to_string(e.spell_id));
v.push_back(std::to_string(e.is_item));
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_BOT_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_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
+104 -23
View File
@@ -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

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