Compare commits

...

77 Commits

Author SHA1 Message Date
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
305 changed files with 26763 additions and 11419 deletions
+218
View File
@@ -1,3 +1,221 @@
## [22.43.2] - 1/25/2024
### Bots
* ^mez command spell list fix ([#3998](https://github.com/EQEmu/Server/pull/3998)) @dariusuknuis 2024-01-19
### Code
* Cleanup position methods ([#4015](https://github.com/EQEmu/Server/pull/4015)) @Kinglykrab 2024-01-25
### Commands
* Add `#npcedit set_grid [Grid ID]` to `#npcedit` ([#4004](https://github.com/EQEmu/Server/pull/4004)) @Kinglykrab 2024-01-22
### Crash Fix
* Fix crash when creating Frogloks/Drakkin ([#4016](https://github.com/EQEmu/Server/pull/4016)) @Kinglykrab 2024-01-25
* Reverting PR #3877 ([#3997](https://github.com/EQEmu/Server/pull/3997)) @fryguy503 2024-01-17
### Database
* Drop deprecated item_tick table ([#3977](https://github.com/EQEmu/Server/pull/3977)) @Akkadius 2024-01-14
* Drop item_tick if exists tweak in manifest ([#3985](https://github.com/EQEmu/Server/pull/3985)) @Akkadius 2024-01-15
* Increase max spawngroup name from 50 to 200 ([#3991](https://github.com/EQEmu/Server/pull/3991)) @Akkadius 2024-01-22
### Fixes
* Fix Mercenaries Buffs/Zoning Issues ([#4000](https://github.com/EQEmu/Server/pull/4000)) @Kinglykrab 2024-01-22
* Fix zone database update manifest ([#3972](https://github.com/EQEmu/Server/pull/3972)) @Kinglykrab 2024-01-13
* Fixes to zone idle while empty changes. ([#4006](https://github.com/EQEmu/Server/pull/4006)) @noudess 2024-01-23
* Reversed logic on InLiquid ([#3979](https://github.com/EQEmu/Server/pull/3979)) @fryguy503 2024-01-14
### Instances
* Convert Instance Quest Methods to Repositories ([#4012](https://github.com/EQEmu/Server/pull/4012)) @Kinglykrab 2024-01-25
### Logging
* Force Info category to be always on in file/console logs ([#3990](https://github.com/EQEmu/Server/pull/3990)) @Akkadius 2024-01-22
### Merchants
* Change database structure for merchant slots ([#3974](https://github.com/EQEmu/Server/pull/3974)) @joligario 2024-01-14
### Messages
* Fix disciple message added by previous patch. ([#3986](https://github.com/EQEmu/Server/pull/3986)) @noudess 2024-01-15
### Quest API
* QuestReward should now summon item to the inventory instead of the cursor. ([#3996](https://github.com/EQEmu/Server/pull/3996)) @regneq 2024-01-22
### Repositories
* Add `rank` to reserved words ([#3982](https://github.com/EQEmu/Server/pull/3982)) @Akkadius 2024-01-15
* Fix datetime zero-value save behavior ([#3976](https://github.com/EQEmu/Server/pull/3976)) @Akkadius 2024-01-14
### Spawn2
* Spawn condition value should default spawn_conditions value ([#3980](https://github.com/EQEmu/Server/pull/3980)) @noudess 2024-01-14
### Zoning
* Additional logs for zoning under instance checks ([#3989](https://github.com/EQEmu/Server/pull/3989)) @Akkadius 2024-01-22
## [22.43.1] - 1/14/2024
### Repositories
* Revert #3976 - fix character corpses @Akkadius 2024-01-14
## [22.43.0] - 1/14/2024
### Database
* Drop deprecated item_tick table ([#3977](https://github.com/EQEmu/Server/pull/3977)) @Akkadius 2024-01-14
### Merchants
* Change database structure for merchant slots ([#3974](https://github.com/EQEmu/Server/pull/3974)) @joligario 2024-01-14
### Repositories
* Fix datetime zero-value save behavior ([#3976](https://github.com/EQEmu/Server/pull/3976)) @Akkadius 2024-01-14
### Zones
* Convert IDLE_WHEN_EMPTY to a Zone Column ([#3891](https://github.com/EQEmu/Server/pull/3891)) @Kinglykrab 2024-01-13
## [22.42.1] - 1/13/2024
### Fixes
* Fix zone database update manifest ([#3972](https://github.com/EQEmu/Server/pull/3972)) @Kinglykrab 2024-01-13
* quest::processmobswhilezoneempty() fix. ([#3971](https://github.com/EQEmu/Server/pull/3971)) @noudess 2024-01-13
## [22.42.0] - 1/13/2024
### AAs
* Convert Loading of AAs to Repositories ([#3963](https://github.com/EQEmu/Server/pull/3963)) @Kinglykrab 2024-01-13
### Auras
* Convert Get of Auras to Repositories ([#3964](https://github.com/EQEmu/Server/pull/3964)) @Kinglykrab 2024-01-13
### Character
* Character EXP Modifiers in Memory ([#3934](https://github.com/EQEmu/Server/pull/3934)) @Kinglykrab 2024-01-13
* Convert Character Corpses to Repositories ([#3941](https://github.com/EQEmu/Server/pull/3941)) @Kinglykrab 2024-01-13
* Convert Save of Character Languages to Repositories ([#3948](https://github.com/EQEmu/Server/pull/3948)) @Kinglykrab 2024-01-12
### Code
* Cleanup AddCash() and RemoveCash() NPC Methods ([#3957](https://github.com/EQEmu/Server/pull/3957)) @Kinglykrab 2024-01-12
* Cleanup ChangeSize() ([#3959](https://github.com/EQEmu/Server/pull/3959)) @Kinglykrab 2024-01-12
* Cleanup Owner Related Mob Methods ([#3960](https://github.com/EQEmu/Server/pull/3960)) @Kinglykrab 2024-01-13
* Cleanup RandomizeFeatures() ([#3958](https://github.com/EQEmu/Server/pull/3958)) @Kinglykrab 2024-01-12
* Remove GroupCount() and RaidGroupCount() ([#3943](https://github.com/EQEmu/Server/pull/3943)) @Kinglykrab 2024-01-13
* Remove unused Grid methods ([#3944](https://github.com/EQEmu/Server/pull/3944)) @Kinglykrab 2024-01-13
### Commands
* Convert NPC Spawn Methods to Repositories ([#3956](https://github.com/EQEmu/Server/pull/3956)) @Kinglykrab 2024-01-13
### Crash Fix
* Character Creation Class/Race out of Range. ([#3920](https://github.com/EQEmu/Server/pull/3920)) @fryguy503 2024-01-09
### Feat
* Alt Sinister Strike Formula ([#3921](https://github.com/EQEmu/Server/pull/3921)) @fryguy503 2024-01-09
### Feature
* Add Lore Item Trade Error ([#3932](https://github.com/EQEmu/Server/pull/3932)) @fryguy503 2024-01-13
* Rule: UseLiveBlockedMessage Bard Spam ([#3933](https://github.com/EQEmu/Server/pull/3933)) @fryguy503 2024-01-09
### Fixes
* Attack Corpse Skill Up Fix ([#3924](https://github.com/EQEmu/Server/pull/3924)) @fryguy503 2024-01-09
* Fix Issue with SetFlyMode() ([#3961](https://github.com/EQEmu/Server/pull/3961)) @Kinglykrab 2024-01-12
* Harm Touch Critical Ratio ([#3915](https://github.com/EQEmu/Server/pull/3915)) @fryguy503 2024-01-09
* Increase Precision in CheckDoubleAttack ([#3928](https://github.com/EQEmu/Server/pull/3928)) @fryguy503 2024-01-09
* IsOfClientBotMerc() for Discipline Messages ([#3940](https://github.com/EQEmu/Server/pull/3940)) @fryguy503 2024-01-09
* Limit MeleeMitigationEffect to defender if only client. ([#3918](https://github.com/EQEmu/Server/pull/3918)) @fryguy503 2024-01-09
* Rampage Number of Hits Limit ([#3929](https://github.com/EQEmu/Server/pull/3929)) @fryguy503 2024-01-09
* Remove duplicate character_data repository in zonedb.cpp ([#3935](https://github.com/EQEmu/Server/pull/3935)) @Kinglykrab 2024-01-09
* Undead Should Never Flee ([#3926](https://github.com/EQEmu/Server/pull/3926)) @fryguy503 2024-01-09
### Global Loot
* Convert Global Loot to Repositories ([#3962](https://github.com/EQEmu/Server/pull/3962)) @Kinglykrab 2024-01-13
### Ground Spawns
* Convert Ground Spawns to Repositories ([#3967](https://github.com/EQEmu/Server/pull/3967)) @Kinglykrab 2024-01-13
### Horses
* Convert Horses to Repositories ([#3965](https://github.com/EQEmu/Server/pull/3965)) @Kinglykrab 2024-01-13
### Item Ticks
* Remove Item Ticks Code ([#3955](https://github.com/EQEmu/Server/pull/3955)) @Kinglykrab 2024-01-13
### Mercenaries
* Convert Mercenaries to Repositories ([#3947](https://github.com/EQEmu/Server/pull/3947)) @Kinglykrab 2024-01-13
### Merchants
* Convert Clear/Delete/Save of Temporary Merchant Lists to Repositories ([#3945](https://github.com/EQEmu/Server/pull/3945)) @Kinglykrab 2024-01-13
### NPCs
* Convert Load of NPC Emotes to Repositories ([#3954](https://github.com/EQEmu/Server/pull/3954)) @Kinglykrab 2024-01-13
### Objects
* Convert Add/Delete/Update of Objects to Repositories ([#3966](https://github.com/EQEmu/Server/pull/3966)) @Kinglykrab 2024-01-13
* Convert World Containers to Repositories ([#3951](https://github.com/EQEmu/Server/pull/3951)) @Kinglykrab 2024-01-13
### Pets
* Convert Pets to Repositories ([#3968](https://github.com/EQEmu/Server/pull/3968)) @Kinglykrab 2024-01-13
### Repositories
* Add null integer column support, instance_list notes migration, regenerate repositories ([#3969](https://github.com/EQEmu/Server/pull/3969)) @Akkadius 2024-01-13
### Respawns
* Convert Respawn Times to Repositories ([#3949](https://github.com/EQEmu/Server/pull/3949)) @Kinglykrab 2024-01-13
### Rules
* Add rule for bard aggro cap ([#3909](https://github.com/EQEmu/Server/pull/3909)) @fryguy503 2024-01-09
* Allow GMs to silently summon ([#3910](https://github.com/EQEmu/Server/pull/3910)) @fryguy503 2024-01-09
* Bash Two Hander use Shoulders ([#3925](https://github.com/EQEmu/Server/pull/3925)) @fryguy503 2024-01-09
* Classic Spell Data SPA Calc variability ([#3931](https://github.com/EQEmu/Server/pull/3931)) @fryguy503 2024-01-09
* Classic Tracking Skillups ([#3923](https://github.com/EQEmu/Server/pull/3923)) @fryguy503 2024-01-09
* Separate Tradeskill Max Train from Research. ([#3916](https://github.com/EQEmu/Server/pull/3916)) @fryguy503 2024-01-09
### Tasks
* Add Support for Task Window Element Groups ([#3902](https://github.com/EQEmu/Server/pull/3902)) @hgtw 2024-01-09
### Traps
* Convert Load of LDoN Traps/Trap Entries to Repositories ([#3953](https://github.com/EQEmu/Server/pull/3953)) @Kinglykrab 2024-01-13
### Zones
* Convert Get/Set of Zone Timezone to Repositories ([#3946](https://github.com/EQEmu/Server/pull/3946)) @Kinglykrab 2024-01-13
* Convert IDLE_WHEN_EMPTY to a Zone Column ([#3891](https://github.com/EQEmu/Server/pull/3891)) @Kinglykrab 2024-01-13
* Convert SaveZoneCFG to Repositories ([#3950](https://github.com/EQEmu/Server/pull/3950)) @Kinglykrab 2024-01-13
## [22.41.0] - 1/8/2024
### Bug
-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,
+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
+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_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
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H
@@ -108,8 +108,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
damageshieldtypes_id
)
);
@@ -118,8 +119,8 @@ public:
if (results.RowCount() == 1) {
Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
return e;
}
@@ -242,8 +243,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -268,8 +269,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Damageshieldtypes e{};
e.spellid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.spellid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -328,6 +329,64 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Damageshieldtypes &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Damageshieldtypes> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.spellid));
v.push_back(std::to_string(e.type));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DAMAGESHIELDTYPES_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H
@@ -16,7 +16,6 @@
#include "../../strings.h"
#include <ctime>
#include <cereal/cereal.hpp>
class BaseDataBucketsRepository {
public:
struct DataBuckets {
@@ -155,13 +154,13 @@ public:
if (results.RowCount() == 1) {
DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10);
e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.character_id = strtoll(row[4], nullptr, 10);
e.npc_id = strtoll(row[5], nullptr, 10);
e.bot_id = strtoll(row[6], nullptr, 10);
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
return e;
}
@@ -298,13 +297,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10);
e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.character_id = strtoll(row[4], nullptr, 10);
e.npc_id = strtoll(row[5], nullptr, 10);
e.bot_id = strtoll(row[6], nullptr, 10);
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
all_entries.push_back(e);
}
@@ -329,13 +328,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DataBuckets e{};
e.id = strtoull(row[0], nullptr, 10);
e.id = row[0] ? strtoull(row[0], nullptr, 10) : 0;
e.key_ = row[1] ? row[1] : "";
e.value = row[2] ? row[2] : "";
e.expires = static_cast<uint32_t>(strtoul(row[3], nullptr, 10));
e.character_id = strtoll(row[4], nullptr, 10);
e.npc_id = strtoll(row[5], nullptr, 10);
e.bot_id = strtoll(row[6], nullptr, 10);
e.expires = row[3] ? static_cast<uint32_t>(strtoul(row[3], nullptr, 10)) : 0;
e.character_id = row[4] ? strtoll(row[4], nullptr, 10) : 0;
e.npc_id = row[5] ? strtoll(row[5], nullptr, 10) : 0;
e.bot_id = row[6] ? strtoll(row[6], nullptr, 10) : 0;
all_entries.push_back(e);
}
@@ -394,6 +393,74 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DataBuckets &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.key_) + "'");
v.push_back("'" + Strings::Escape(e.value) + "'");
v.push_back(std::to_string(e.expires));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.bot_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DataBuckets> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.key_) + "'");
v.push_back("'" + Strings::Escape(e.value) + "'");
v.push_back(std::to_string(e.expires));
v.push_back(std::to_string(e.character_id));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.bot_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DATA_BUCKETS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DB_STR_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
db_str_id
)
);
@@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) {
DbStr e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.type = static_cast<int32_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.value = row[2] ? row[2] : "";
return e;
@@ -250,8 +251,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DbStr e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.type = static_cast<int32_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.value = row[2] ? row[2] : "";
all_entries.push_back(e);
@@ -277,8 +278,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DbStr e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.type = static_cast<int32_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.type = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.value = row[2] ? row[2] : "";
all_entries.push_back(e);
@@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DbStr &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.value) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DbStr> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.value) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DB_STR_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H
@@ -120,8 +120,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
discord_webhooks_id
)
);
@@ -130,7 +131,7 @@ public:
if (results.RowCount() == 1) {
DiscordWebhooks e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.webhook_name = row[1] ? row[1] : "";
e.webhook_url = row[2] ? row[2] : "";
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@@ -265,7 +266,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DiscordWebhooks e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.webhook_name = row[1] ? row[1] : "";
e.webhook_url = row[2] ? row[2] : "";
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@@ -294,7 +295,7 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DiscordWebhooks e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.webhook_name = row[1] ? row[1] : "";
e.webhook_url = row[2] ? row[2] : "";
e.created_at = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
@@ -357,6 +358,70 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DiscordWebhooks &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.webhook_name) + "'");
v.push_back("'" + Strings::Escape(e.webhook_url) + "'");
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.deleted_at > 0 ? std::to_string(e.deleted_at) : "null") + ")");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DiscordWebhooks> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.webhook_name) + "'");
v.push_back("'" + Strings::Escape(e.webhook_url) + "'");
v.push_back("FROM_UNIXTIME(" + (e.created_at > 0 ? std::to_string(e.created_at) : "null") + ")");
v.push_back("FROM_UNIXTIME(" + (e.deleted_at > 0 ? std::to_string(e.deleted_at) : "null") + ")");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DISCORD_WEBHOOKS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H
@@ -116,8 +116,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
discovered_items_id
)
);
@@ -126,10 +127,10 @@ public:
if (results.RowCount() == 1) {
DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.account_status = static_cast<int32_t>(atoi(row[3]));
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
return e;
}
@@ -258,10 +259,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.account_status = static_cast<int32_t>(atoi(row[3]));
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
all_entries.push_back(e);
}
@@ -286,10 +287,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DiscoveredItems e{};
e.item_id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.item_id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.char_name = row[1] ? row[1] : "";
e.discovered_date = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.account_status = static_cast<int32_t>(atoi(row[3]));
e.discovered_date = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
e.account_status = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
all_entries.push_back(e);
}
@@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DiscoveredItems &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.item_id));
v.push_back("'" + Strings::Escape(e.char_name) + "'");
v.push_back(std::to_string(e.discovered_date));
v.push_back(std::to_string(e.account_status));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DiscoveredItems> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.item_id));
v.push_back("'" + Strings::Escape(e.char_name) + "'");
v.push_back(std::to_string(e.discovered_date));
v.push_back(std::to_string(e.account_status));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DISCOVERED_ITEMS_REPOSITORY_H
+225 -98
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_DOORS_REPOSITORY_H
@@ -244,8 +244,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
doors_id
)
);
@@ -254,40 +255,40 @@ public:
if (results.RowCount() == 1) {
Doors e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.doorid = static_cast<int16_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3]));
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr);
e.pos_x = strtof(row[6], nullptr);
e.pos_z = strtof(row[7], nullptr);
e.heading = strtof(row[8], nullptr);
e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
e.dest_x = strtof(row[21], nullptr);
e.dest_y = strtof(row[22], nullptr);
e.dest_z = strtof(row[23], nullptr);
e.dest_heading = strtof(row[24], nullptr);
e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
e.buffer = strtof(row[28], nullptr);
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
e.dest_zone = row[19] ? row[19] : "NONE";
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
e.content_flags = row[34] ? row[34] : "";
e.content_flags_disabled = row[35] ? row[35] : "";
@@ -513,40 +514,40 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Doors e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.doorid = static_cast<int16_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3]));
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr);
e.pos_x = strtof(row[6], nullptr);
e.pos_z = strtof(row[7], nullptr);
e.heading = strtof(row[8], nullptr);
e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
e.dest_x = strtof(row[21], nullptr);
e.dest_y = strtof(row[22], nullptr);
e.dest_z = strtof(row[23], nullptr);
e.dest_heading = strtof(row[24], nullptr);
e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
e.buffer = strtof(row[28], nullptr);
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
e.dest_zone = row[19] ? row[19] : "NONE";
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
e.content_flags = row[34] ? row[34] : "";
e.content_flags_disabled = row[35] ? row[35] : "";
@@ -573,40 +574,40 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Doors e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.doorid = static_cast<int16_t>(atoi(row[1]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.doorid = row[1] ? static_cast<int16_t>(atoi(row[1])) : 0;
e.zone = row[2] ? row[2] : "";
e.version = static_cast<int16_t>(atoi(row[3]));
e.version = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.name = row[4] ? row[4] : "";
e.pos_y = strtof(row[5], nullptr);
e.pos_x = strtof(row[6], nullptr);
e.pos_z = strtof(row[7], nullptr);
e.heading = strtof(row[8], nullptr);
e.opentype = static_cast<int16_t>(atoi(row[9]));
e.guild = static_cast<int16_t>(atoi(row[10]));
e.lockpick = static_cast<int16_t>(atoi(row[11]));
e.keyitem = static_cast<int32_t>(atoi(row[12]));
e.nokeyring = static_cast<uint8_t>(strtoul(row[13], nullptr, 10));
e.triggerdoor = static_cast<int16_t>(atoi(row[14]));
e.triggertype = static_cast<int16_t>(atoi(row[15]));
e.disable_timer = static_cast<int8_t>(atoi(row[16]));
e.doorisopen = static_cast<int16_t>(atoi(row[17]));
e.door_param = static_cast<int32_t>(atoi(row[18]));
e.dest_zone = row[19] ? row[19] : "";
e.dest_instance = static_cast<uint32_t>(strtoul(row[20], nullptr, 10));
e.dest_x = strtof(row[21], nullptr);
e.dest_y = strtof(row[22], nullptr);
e.dest_z = strtof(row[23], nullptr);
e.dest_heading = strtof(row[24], nullptr);
e.invert_state = static_cast<int32_t>(atoi(row[25]));
e.incline = static_cast<int32_t>(atoi(row[26]));
e.size = static_cast<uint16_t>(strtoul(row[27], nullptr, 10));
e.buffer = strtof(row[28], nullptr);
e.client_version_mask = static_cast<uint32_t>(strtoul(row[29], nullptr, 10));
e.is_ldon_door = static_cast<int16_t>(atoi(row[30]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[31]));
e.min_expansion = static_cast<int8_t>(atoi(row[32]));
e.max_expansion = static_cast<int8_t>(atoi(row[33]));
e.pos_y = row[5] ? strtof(row[5], nullptr) : 0;
e.pos_x = row[6] ? strtof(row[6], nullptr) : 0;
e.pos_z = row[7] ? strtof(row[7], nullptr) : 0;
e.heading = row[8] ? strtof(row[8], nullptr) : 0;
e.opentype = row[9] ? static_cast<int16_t>(atoi(row[9])) : 0;
e.guild = row[10] ? static_cast<int16_t>(atoi(row[10])) : 0;
e.lockpick = row[11] ? static_cast<int16_t>(atoi(row[11])) : 0;
e.keyitem = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.nokeyring = row[13] ? static_cast<uint8_t>(strtoul(row[13], nullptr, 10)) : 0;
e.triggerdoor = row[14] ? static_cast<int16_t>(atoi(row[14])) : 0;
e.triggertype = row[15] ? static_cast<int16_t>(atoi(row[15])) : 0;
e.disable_timer = row[16] ? static_cast<int8_t>(atoi(row[16])) : 0;
e.doorisopen = row[17] ? static_cast<int16_t>(atoi(row[17])) : 0;
e.door_param = row[18] ? static_cast<int32_t>(atoi(row[18])) : 0;
e.dest_zone = row[19] ? row[19] : "NONE";
e.dest_instance = row[20] ? static_cast<uint32_t>(strtoul(row[20], nullptr, 10)) : 0;
e.dest_x = row[21] ? strtof(row[21], nullptr) : 0;
e.dest_y = row[22] ? strtof(row[22], nullptr) : 0;
e.dest_z = row[23] ? strtof(row[23], nullptr) : 0;
e.dest_heading = row[24] ? strtof(row[24], nullptr) : 0;
e.invert_state = row[25] ? static_cast<int32_t>(atoi(row[25])) : 0;
e.incline = row[26] ? static_cast<int32_t>(atoi(row[26])) : 0;
e.size = row[27] ? static_cast<uint16_t>(strtoul(row[27], nullptr, 10)) : 100;
e.buffer = row[28] ? strtof(row[28], nullptr) : 0;
e.client_version_mask = row[29] ? static_cast<uint32_t>(strtoul(row[29], nullptr, 10)) : 4294967295;
e.is_ldon_door = row[30] ? static_cast<int16_t>(atoi(row[30])) : 0;
e.dz_switch_id = row[31] ? static_cast<int32_t>(atoi(row[31])) : 0;
e.min_expansion = row[32] ? static_cast<int8_t>(atoi(row[32])) : -1;
e.max_expansion = row[33] ? static_cast<int8_t>(atoi(row[33])) : -1;
e.content_flags = row[34] ? row[34] : "";
e.content_flags_disabled = row[35] ? row[35] : "";
@@ -667,6 +668,132 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Doors &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.doorid));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.opentype));
v.push_back(std::to_string(e.guild));
v.push_back(std::to_string(e.lockpick));
v.push_back(std::to_string(e.keyitem));
v.push_back(std::to_string(e.nokeyring));
v.push_back(std::to_string(e.triggerdoor));
v.push_back(std::to_string(e.triggertype));
v.push_back(std::to_string(e.disable_timer));
v.push_back(std::to_string(e.doorisopen));
v.push_back(std::to_string(e.door_param));
v.push_back("'" + Strings::Escape(e.dest_zone) + "'");
v.push_back(std::to_string(e.dest_instance));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_heading));
v.push_back(std::to_string(e.invert_state));
v.push_back(std::to_string(e.incline));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.buffer));
v.push_back(std::to_string(e.client_version_mask));
v.push_back(std::to_string(e.is_ldon_door));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Doors> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.doorid));
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.pos_y));
v.push_back(std::to_string(e.pos_x));
v.push_back(std::to_string(e.pos_z));
v.push_back(std::to_string(e.heading));
v.push_back(std::to_string(e.opentype));
v.push_back(std::to_string(e.guild));
v.push_back(std::to_string(e.lockpick));
v.push_back(std::to_string(e.keyitem));
v.push_back(std::to_string(e.nokeyring));
v.push_back(std::to_string(e.triggerdoor));
v.push_back(std::to_string(e.triggertype));
v.push_back(std::to_string(e.disable_timer));
v.push_back(std::to_string(e.doorisopen));
v.push_back(std::to_string(e.door_param));
v.push_back("'" + Strings::Escape(e.dest_zone) + "'");
v.push_back(std::to_string(e.dest_instance));
v.push_back(std::to_string(e.dest_x));
v.push_back(std::to_string(e.dest_y));
v.push_back(std::to_string(e.dest_z));
v.push_back(std::to_string(e.dest_heading));
v.push_back(std::to_string(e.invert_state));
v.push_back(std::to_string(e.incline));
v.push_back(std::to_string(e.size));
v.push_back(std::to_string(e.buffer));
v.push_back(std::to_string(e.client_version_mask));
v.push_back(std::to_string(e.is_ldon_door));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DOORS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
dynamic_zone_members_id
)
);
@@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) {
DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
return e;
}
@@ -249,9 +250,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -276,9 +277,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneMembers e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.character_id = static_cast<uint32_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.character_id = row[2] ? static_cast<uint32_t>(strtoul(row[2], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -337,6 +338,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZoneMembers &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.character_id));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZoneMembers> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.character_id));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DYNAMIC_ZONE_MEMBERS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H
@@ -188,8 +188,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
dynamic_zone_templates_id
)
);
@@ -198,28 +199,28 @@ public:
if (results.RowCount() == 1) {
DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.name = row[3] ? row[3] : "";
e.min_players = static_cast<int32_t>(atoi(row[4]));
e.max_players = static_cast<int32_t>(atoi(row[5]));
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr);
e.compass_y = strtof(row[10], nullptr);
e.compass_z = strtof(row[11], nullptr);
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr);
e.return_y = strtof(row[14], nullptr);
e.return_z = strtof(row[15], nullptr);
e.return_h = strtof(row[16], nullptr);
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_h = strtof(row[21], nullptr);
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
return e;
}
@@ -401,28 +402,28 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.name = row[3] ? row[3] : "";
e.min_players = static_cast<int32_t>(atoi(row[4]));
e.max_players = static_cast<int32_t>(atoi(row[5]));
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr);
e.compass_y = strtof(row[10], nullptr);
e.compass_z = strtof(row[11], nullptr);
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr);
e.return_y = strtof(row[14], nullptr);
e.return_z = strtof(row[15], nullptr);
e.return_h = strtof(row[16], nullptr);
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_h = strtof(row[21], nullptr);
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
all_entries.push_back(e);
}
@@ -447,28 +448,28 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZoneTemplates e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.zone_id = static_cast<int32_t>(atoi(row[1]));
e.zone_version = static_cast<int32_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.zone_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.zone_version = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.name = row[3] ? row[3] : "";
e.min_players = static_cast<int32_t>(atoi(row[4]));
e.max_players = static_cast<int32_t>(atoi(row[5]));
e.duration_seconds = static_cast<int32_t>(atoi(row[6]));
e.dz_switch_id = static_cast<int32_t>(atoi(row[7]));
e.compass_zone_id = static_cast<int32_t>(atoi(row[8]));
e.compass_x = strtof(row[9], nullptr);
e.compass_y = strtof(row[10], nullptr);
e.compass_z = strtof(row[11], nullptr);
e.return_zone_id = static_cast<int32_t>(atoi(row[12]));
e.return_x = strtof(row[13], nullptr);
e.return_y = strtof(row[14], nullptr);
e.return_z = strtof(row[15], nullptr);
e.return_h = strtof(row[16], nullptr);
e.override_zone_in = static_cast<int8_t>(atoi(row[17]));
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_h = strtof(row[21], nullptr);
e.min_players = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_players = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.duration_seconds = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.dz_switch_id = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.compass_zone_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_x = row[9] ? strtof(row[9], nullptr) : 0;
e.compass_y = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_z = row[11] ? strtof(row[11], nullptr) : 0;
e.return_zone_id = row[12] ? static_cast<int32_t>(atoi(row[12])) : 0;
e.return_x = row[13] ? strtof(row[13], nullptr) : 0;
e.return_y = row[14] ? strtof(row[14], nullptr) : 0;
e.return_z = row[15] ? strtof(row[15], nullptr) : 0;
e.return_h = row[16] ? strtof(row[16], nullptr) : 0;
e.override_zone_in = row[17] ? static_cast<int8_t>(atoi(row[17])) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_h = row[21] ? strtof(row[21], nullptr) : 0;
all_entries.push_back(e);
}
@@ -527,6 +528,104 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZoneTemplates &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.zone_version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.duration_seconds));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.return_zone_id));
v.push_back(std::to_string(e.return_x));
v.push_back(std::to_string(e.return_y));
v.push_back(std::to_string(e.return_z));
v.push_back(std::to_string(e.return_h));
v.push_back(std::to_string(e.override_zone_in));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_h));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZoneTemplates> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zone_id));
v.push_back(std::to_string(e.zone_version));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.duration_seconds));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.return_zone_id));
v.push_back(std::to_string(e.return_x));
v.push_back(std::to_string(e.return_y));
v.push_back(std::to_string(e.return_z));
v.push_back(std::to_string(e.return_h));
v.push_back(std::to_string(e.override_zone_in));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_h));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DYNAMIC_ZONE_TEMPLATES_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H
@@ -192,8 +192,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
dynamic_zones_id
)
);
@@ -202,29 +203,29 @@ public:
if (results.RowCount() == 1) {
DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.compass_x = strtof(row[10], nullptr);
e.compass_y = strtof(row[11], nullptr);
e.compass_z = strtof(row[12], nullptr);
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.safe_return_x = strtof(row[14], nullptr);
e.safe_return_y = strtof(row[15], nullptr);
e.safe_return_z = strtof(row[16], nullptr);
e.safe_return_heading = strtof(row[17], nullptr);
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_heading = strtof(row[21], nullptr);
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
return e;
}
@@ -409,29 +410,29 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.compass_x = strtof(row[10], nullptr);
e.compass_y = strtof(row[11], nullptr);
e.compass_z = strtof(row[12], nullptr);
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.safe_return_x = strtof(row[14], nullptr);
e.safe_return_y = strtof(row[15], nullptr);
e.safe_return_z = strtof(row[16], nullptr);
e.safe_return_heading = strtof(row[17], nullptr);
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_heading = strtof(row[21], nullptr);
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -456,29 +457,29 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
DynamicZones e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.instance_id = static_cast<int32_t>(atoi(row[1]));
e.type = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.instance_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.type = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 0;
e.uuid = row[3] ? row[3] : "";
e.name = row[4] ? row[4] : "";
e.leader_id = static_cast<uint32_t>(strtoul(row[5], nullptr, 10));
e.min_players = static_cast<uint32_t>(strtoul(row[6], nullptr, 10));
e.max_players = static_cast<uint32_t>(strtoul(row[7], nullptr, 10));
e.dz_switch_id = static_cast<int32_t>(atoi(row[8]));
e.compass_zone_id = static_cast<uint32_t>(strtoul(row[9], nullptr, 10));
e.compass_x = strtof(row[10], nullptr);
e.compass_y = strtof(row[11], nullptr);
e.compass_z = strtof(row[12], nullptr);
e.safe_return_zone_id = static_cast<uint32_t>(strtoul(row[13], nullptr, 10));
e.safe_return_x = strtof(row[14], nullptr);
e.safe_return_y = strtof(row[15], nullptr);
e.safe_return_z = strtof(row[16], nullptr);
e.safe_return_heading = strtof(row[17], nullptr);
e.zone_in_x = strtof(row[18], nullptr);
e.zone_in_y = strtof(row[19], nullptr);
e.zone_in_z = strtof(row[20], nullptr);
e.zone_in_heading = strtof(row[21], nullptr);
e.has_zone_in = static_cast<uint8_t>(strtoul(row[22], nullptr, 10));
e.leader_id = row[5] ? static_cast<uint32_t>(strtoul(row[5], nullptr, 10)) : 0;
e.min_players = row[6] ? static_cast<uint32_t>(strtoul(row[6], nullptr, 10)) : 0;
e.max_players = row[7] ? static_cast<uint32_t>(strtoul(row[7], nullptr, 10)) : 0;
e.dz_switch_id = row[8] ? static_cast<int32_t>(atoi(row[8])) : 0;
e.compass_zone_id = row[9] ? static_cast<uint32_t>(strtoul(row[9], nullptr, 10)) : 0;
e.compass_x = row[10] ? strtof(row[10], nullptr) : 0;
e.compass_y = row[11] ? strtof(row[11], nullptr) : 0;
e.compass_z = row[12] ? strtof(row[12], nullptr) : 0;
e.safe_return_zone_id = row[13] ? static_cast<uint32_t>(strtoul(row[13], nullptr, 10)) : 0;
e.safe_return_x = row[14] ? strtof(row[14], nullptr) : 0;
e.safe_return_y = row[15] ? strtof(row[15], nullptr) : 0;
e.safe_return_z = row[16] ? strtof(row[16], nullptr) : 0;
e.safe_return_heading = row[17] ? strtof(row[17], nullptr) : 0;
e.zone_in_x = row[18] ? strtof(row[18], nullptr) : 0;
e.zone_in_y = row[19] ? strtof(row[19], nullptr) : 0;
e.zone_in_z = row[20] ? strtof(row[20], nullptr) : 0;
e.zone_in_heading = row[21] ? strtof(row[21], nullptr) : 0;
e.has_zone_in = row[22] ? static_cast<uint8_t>(strtoul(row[22], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -537,6 +538,106 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const DynamicZones &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.uuid) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader_id));
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.safe_return_zone_id));
v.push_back(std::to_string(e.safe_return_x));
v.push_back(std::to_string(e.safe_return_y));
v.push_back(std::to_string(e.safe_return_z));
v.push_back(std::to_string(e.safe_return_heading));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_heading));
v.push_back(std::to_string(e.has_zone_in));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<DynamicZones> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.instance_id));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.uuid) + "'");
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.leader_id));
v.push_back(std::to_string(e.min_players));
v.push_back(std::to_string(e.max_players));
v.push_back(std::to_string(e.dz_switch_id));
v.push_back(std::to_string(e.compass_zone_id));
v.push_back(std::to_string(e.compass_x));
v.push_back(std::to_string(e.compass_y));
v.push_back(std::to_string(e.compass_z));
v.push_back(std::to_string(e.safe_return_zone_id));
v.push_back(std::to_string(e.safe_return_x));
v.push_back(std::to_string(e.safe_return_y));
v.push_back(std::to_string(e.safe_return_z));
v.push_back(std::to_string(e.safe_return_heading));
v.push_back(std::to_string(e.zone_in_x));
v.push_back(std::to_string(e.zone_in_y));
v.push_back(std::to_string(e.zone_in_z));
v.push_back(std::to_string(e.zone_in_heading));
v.push_back(std::to_string(e.has_zone_in));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_DYNAMIC_ZONES_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H
@@ -124,8 +124,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
expedition_lockouts_id
)
);
@@ -134,11 +135,11 @@ public:
if (results.RowCount() == 1) {
ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : "";
return e;
@@ -273,11 +274,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : "";
all_entries.push_back(e);
@@ -303,11 +304,11 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
ExpeditionLockouts e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.expedition_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.expedition_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.event_name = row[2] ? row[2] : "";
e.expire_time = strtoll(row[3] ? row[3] : "-1", nullptr, 10);
e.duration = static_cast<uint32_t>(strtoul(row[4], nullptr, 10));
e.duration = row[4] ? static_cast<uint32_t>(strtoul(row[4], nullptr, 10)) : 0;
e.from_expedition_uuid = row[5] ? row[5] : "";
all_entries.push_back(e);
@@ -367,6 +368,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const ExpeditionLockouts &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.expedition_id));
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<ExpeditionLockouts> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.expedition_id));
v.push_back("'" + Strings::Escape(e.event_name) + "'");
v.push_back("FROM_UNIXTIME(" + (e.expire_time > 0 ? std::to_string(e.expire_time) : "null") + ")");
v.push_back(std::to_string(e.duration));
v.push_back("'" + Strings::Escape(e.from_expedition_uuid) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_EXPEDITION_LOCKOUTS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_EXPEDITIONS_REPOSITORY_H
@@ -116,8 +116,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
expeditions_id
)
);
@@ -126,10 +127,10 @@ public:
if (results.RowCount() == 1) {
Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
return e;
}
@@ -257,10 +258,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -285,10 +286,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Expeditions e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.dynamic_zone_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.add_replay_on_join = static_cast<uint8_t>(strtoul(row[2], nullptr, 10));
e.is_locked = static_cast<uint8_t>(strtoul(row[3], nullptr, 10));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.dynamic_zone_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.add_replay_on_join = row[2] ? static_cast<uint8_t>(strtoul(row[2], nullptr, 10)) : 1;
e.is_locked = row[3] ? static_cast<uint8_t>(strtoul(row[3], nullptr, 10)) : 0;
all_entries.push_back(e);
}
@@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Expeditions &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.add_replay_on_join));
v.push_back(std::to_string(e.is_locked));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Expeditions> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.dynamic_zone_id));
v.push_back(std::to_string(e.add_replay_on_join));
v.push_back(std::to_string(e.is_locked));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_EXPEDITIONS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H
@@ -184,8 +184,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
faction_association_id
)
);
@@ -194,27 +195,27 @@ public:
if (results.RowCount() == 1) {
FactionAssociation e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr);
e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr);
e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr);
e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr);
e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr);
e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr);
e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr);
e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr);
e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr);
e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr);
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
return e;
}
@@ -394,27 +395,27 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionAssociation e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr);
e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr);
e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr);
e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr);
e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr);
e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr);
e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr);
e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr);
e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr);
e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr);
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
all_entries.push_back(e);
}
@@ -439,27 +440,27 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionAssociation e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id_1 = static_cast<int32_t>(atoi(row[1]));
e.mod_1 = strtof(row[2], nullptr);
e.id_2 = static_cast<int32_t>(atoi(row[3]));
e.mod_2 = strtof(row[4], nullptr);
e.id_3 = static_cast<int32_t>(atoi(row[5]));
e.mod_3 = strtof(row[6], nullptr);
e.id_4 = static_cast<int32_t>(atoi(row[7]));
e.mod_4 = strtof(row[8], nullptr);
e.id_5 = static_cast<int32_t>(atoi(row[9]));
e.mod_5 = strtof(row[10], nullptr);
e.id_6 = static_cast<int32_t>(atoi(row[11]));
e.mod_6 = strtof(row[12], nullptr);
e.id_7 = static_cast<int32_t>(atoi(row[13]));
e.mod_7 = strtof(row[14], nullptr);
e.id_8 = static_cast<int32_t>(atoi(row[15]));
e.mod_8 = strtof(row[16], nullptr);
e.id_9 = static_cast<int32_t>(atoi(row[17]));
e.mod_9 = strtof(row[18], nullptr);
e.id_10 = static_cast<int32_t>(atoi(row[19]));
e.mod_10 = strtof(row[20], nullptr);
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.id_1 = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.mod_1 = row[2] ? strtof(row[2], nullptr) : 0;
e.id_2 = row[3] ? static_cast<int32_t>(atoi(row[3])) : 0;
e.mod_2 = row[4] ? strtof(row[4], nullptr) : 0;
e.id_3 = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.mod_3 = row[6] ? strtof(row[6], nullptr) : 0;
e.id_4 = row[7] ? static_cast<int32_t>(atoi(row[7])) : 0;
e.mod_4 = row[8] ? strtof(row[8], nullptr) : 0;
e.id_5 = row[9] ? static_cast<int32_t>(atoi(row[9])) : 0;
e.mod_5 = row[10] ? strtof(row[10], nullptr) : 0;
e.id_6 = row[11] ? static_cast<int32_t>(atoi(row[11])) : 0;
e.mod_6 = row[12] ? strtof(row[12], nullptr) : 0;
e.id_7 = row[13] ? static_cast<int32_t>(atoi(row[13])) : 0;
e.mod_7 = row[14] ? strtof(row[14], nullptr) : 0;
e.id_8 = row[15] ? static_cast<int32_t>(atoi(row[15])) : 0;
e.mod_8 = row[16] ? strtof(row[16], nullptr) : 0;
e.id_9 = row[17] ? static_cast<int32_t>(atoi(row[17])) : 0;
e.mod_9 = row[18] ? strtof(row[18], nullptr) : 0;
e.id_10 = row[19] ? static_cast<int32_t>(atoi(row[19])) : 0;
e.mod_10 = row[20] ? strtof(row[20], nullptr) : 0;
all_entries.push_back(e);
}
@@ -518,6 +519,102 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionAssociation &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.id_1));
v.push_back(std::to_string(e.mod_1));
v.push_back(std::to_string(e.id_2));
v.push_back(std::to_string(e.mod_2));
v.push_back(std::to_string(e.id_3));
v.push_back(std::to_string(e.mod_3));
v.push_back(std::to_string(e.id_4));
v.push_back(std::to_string(e.mod_4));
v.push_back(std::to_string(e.id_5));
v.push_back(std::to_string(e.mod_5));
v.push_back(std::to_string(e.id_6));
v.push_back(std::to_string(e.mod_6));
v.push_back(std::to_string(e.id_7));
v.push_back(std::to_string(e.mod_7));
v.push_back(std::to_string(e.id_8));
v.push_back(std::to_string(e.mod_8));
v.push_back(std::to_string(e.id_9));
v.push_back(std::to_string(e.mod_9));
v.push_back(std::to_string(e.id_10));
v.push_back(std::to_string(e.mod_10));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionAssociation> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.id_1));
v.push_back(std::to_string(e.mod_1));
v.push_back(std::to_string(e.id_2));
v.push_back(std::to_string(e.mod_2));
v.push_back(std::to_string(e.id_3));
v.push_back(std::to_string(e.mod_3));
v.push_back(std::to_string(e.id_4));
v.push_back(std::to_string(e.mod_4));
v.push_back(std::to_string(e.id_5));
v.push_back(std::to_string(e.mod_5));
v.push_back(std::to_string(e.id_6));
v.push_back(std::to_string(e.mod_6));
v.push_back(std::to_string(e.id_7));
v.push_back(std::to_string(e.mod_7));
v.push_back(std::to_string(e.id_8));
v.push_back(std::to_string(e.mod_8));
v.push_back(std::to_string(e.id_9));
v.push_back(std::to_string(e.mod_9));
v.push_back(std::to_string(e.id_10));
v.push_back(std::to_string(e.mod_10));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FACTION_ASSOCIATION_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H
@@ -124,8 +124,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
faction_base_data_id
)
);
@@ -134,12 +135,12 @@ public:
if (results.RowCount() == 1) {
FactionBaseData e{};
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
e.min = static_cast<int16_t>(atoi(row[1]));
e.max = static_cast<int16_t>(atoi(row[2]));
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
return e;
}
@@ -274,12 +275,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionBaseData e{};
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
e.min = static_cast<int16_t>(atoi(row[1]));
e.max = static_cast<int16_t>(atoi(row[2]));
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
all_entries.push_back(e);
}
@@ -304,12 +305,12 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionBaseData e{};
e.client_faction_id = static_cast<int16_t>(atoi(row[0]));
e.min = static_cast<int16_t>(atoi(row[1]));
e.max = static_cast<int16_t>(atoi(row[2]));
e.unk_hero1 = static_cast<int16_t>(atoi(row[3]));
e.unk_hero2 = static_cast<int16_t>(atoi(row[4]));
e.unk_hero3 = static_cast<int16_t>(atoi(row[5]));
e.client_faction_id = row[0] ? static_cast<int16_t>(atoi(row[0])) : 0;
e.min = row[1] ? static_cast<int16_t>(atoi(row[1])) : -2000;
e.max = row[2] ? static_cast<int16_t>(atoi(row[2])) : 2000;
e.unk_hero1 = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.unk_hero2 = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.unk_hero3 = row[5] ? static_cast<int16_t>(atoi(row[5])) : 0;
all_entries.push_back(e);
}
@@ -368,6 +369,72 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionBaseData &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.client_faction_id));
v.push_back(std::to_string(e.min));
v.push_back(std::to_string(e.max));
v.push_back(std::to_string(e.unk_hero1));
v.push_back(std::to_string(e.unk_hero2));
v.push_back(std::to_string(e.unk_hero3));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionBaseData> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.client_faction_id));
v.push_back(std::to_string(e.min));
v.push_back(std::to_string(e.max));
v.push_back(std::to_string(e.unk_hero1));
v.push_back(std::to_string(e.unk_hero2));
v.push_back(std::to_string(e.unk_hero3));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FACTION_BASE_DATA_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H
@@ -116,8 +116,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
faction_list_mod_id
)
);
@@ -126,9 +127,9 @@ public:
if (results.RowCount() == 1) {
FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.mod = static_cast<int16_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.mod_name = row[3] ? row[3] : "";
return e;
@@ -257,9 +258,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.mod = static_cast<int16_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.mod_name = row[3] ? row[3] : "";
all_entries.push_back(e);
@@ -285,9 +286,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionListMod e{};
e.id = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.faction_id = static_cast<uint32_t>(strtoul(row[1], nullptr, 10));
e.mod = static_cast<int16_t>(atoi(row[2]));
e.id = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.faction_id = row[1] ? static_cast<uint32_t>(strtoul(row[1], nullptr, 10)) : 0;
e.mod = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.mod_name = row[3] ? row[3] : "";
all_entries.push_back(e);
@@ -347,6 +348,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionListMod &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.mod));
v.push_back("'" + Strings::Escape(e.mod_name) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionListMod> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.mod));
v.push_back("'" + Strings::Escape(e.mod_name) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FACTION_LIST_MOD_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FACTION_LIST_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
faction_list_id
)
);
@@ -122,9 +123,9 @@ public:
if (results.RowCount() == 1) {
FactionList e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.name = row[1] ? row[1] : "";
e.base = static_cast<int16_t>(atoi(row[2]));
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
return e;
}
@@ -250,9 +251,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionList e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.name = row[1] ? row[1] : "";
e.base = static_cast<int16_t>(atoi(row[2]));
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
all_entries.push_back(e);
}
@@ -277,9 +278,9 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionList e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.name = row[1] ? row[1] : "";
e.base = static_cast<int16_t>(atoi(row[2]));
e.base = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
all_entries.push_back(e);
}
@@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionList &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.base));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionList> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.name) + "'");
v.push_back(std::to_string(e.base));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FACTION_LIST_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FACTION_VALUES_REPOSITORY_H
@@ -116,8 +116,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
faction_values_id
)
);
@@ -126,10 +127,10 @@ public:
if (results.RowCount() == 1) {
FactionValues e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.faction_id = static_cast<int32_t>(atoi(row[1]));
e.current_value = static_cast<int16_t>(atoi(row[2]));
e.temp = static_cast<int8_t>(atoi(row[3]));
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
return e;
}
@@ -258,10 +259,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionValues e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.faction_id = static_cast<int32_t>(atoi(row[1]));
e.current_value = static_cast<int16_t>(atoi(row[2]));
e.temp = static_cast<int8_t>(atoi(row[3]));
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
all_entries.push_back(e);
}
@@ -286,10 +287,10 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
FactionValues e{};
e.char_id = static_cast<int32_t>(atoi(row[0]));
e.faction_id = static_cast<int32_t>(atoi(row[1]));
e.current_value = static_cast<int16_t>(atoi(row[2]));
e.temp = static_cast<int8_t>(atoi(row[3]));
e.char_id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.faction_id = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.current_value = row[2] ? static_cast<int16_t>(atoi(row[2])) : 0;
e.temp = row[3] ? static_cast<int8_t>(atoi(row[3])) : 0;
all_entries.push_back(e);
}
@@ -348,6 +349,68 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const FactionValues &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.current_value));
v.push_back(std::to_string(e.temp));
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<FactionValues> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.char_id));
v.push_back(std::to_string(e.faction_id));
v.push_back(std::to_string(e.current_value));
v.push_back(std::to_string(e.temp));
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FACTION_VALUES_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FISHING_REPOSITORY_H
@@ -144,8 +144,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
fishing_id
)
);
@@ -154,15 +155,15 @@ public:
if (results.RowCount() == 1) {
Fishing e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.skill_level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.npc_id = static_cast<int32_t>(atoi(row[5]));
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
e.content_flags = row[9] ? row[9] : "";
e.content_flags_disabled = row[10] ? row[10] : "";
@@ -313,15 +314,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Fishing e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.skill_level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.npc_id = static_cast<int32_t>(atoi(row[5]));
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
e.content_flags = row[9] ? row[9] : "";
e.content_flags_disabled = row[10] ? row[10] : "";
@@ -348,15 +349,15 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Fishing e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.skill_level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.npc_id = static_cast<int32_t>(atoi(row[5]));
e.npc_chance = static_cast<int32_t>(atoi(row[6]));
e.min_expansion = static_cast<int8_t>(atoi(row[7]));
e.max_expansion = static_cast<int8_t>(atoi(row[8]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.skill_level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.npc_id = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.npc_chance = row[6] ? static_cast<int32_t>(atoi(row[6])) : 0;
e.min_expansion = row[7] ? static_cast<int8_t>(atoi(row[7])) : -1;
e.max_expansion = row[8] ? static_cast<int8_t>(atoi(row[8])) : -1;
e.content_flags = row[9] ? row[9] : "";
e.content_flags_disabled = row[10] ? row[10] : "";
@@ -417,6 +418,82 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Fishing &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.skill_level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.npc_chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Fishing> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.skill_level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.npc_id));
v.push_back(std::to_string(e.npc_chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FISHING_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FORAGE_REPOSITORY_H
@@ -136,8 +136,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
forage_id
)
);
@@ -146,13 +147,13 @@ public:
if (results.RowCount() == 1) {
Forage e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
e.content_flags = row[7] ? row[7] : "";
e.content_flags_disabled = row[8] ? row[8] : "";
@@ -297,13 +298,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Forage e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
e.content_flags = row[7] ? row[7] : "";
e.content_flags_disabled = row[8] ? row[8] : "";
@@ -330,13 +331,13 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Forage e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.zoneid = static_cast<int32_t>(atoi(row[1]));
e.Itemid = static_cast<int32_t>(atoi(row[2]));
e.level = static_cast<int16_t>(atoi(row[3]));
e.chance = static_cast<int16_t>(atoi(row[4]));
e.min_expansion = static_cast<int8_t>(atoi(row[5]));
e.max_expansion = static_cast<int8_t>(atoi(row[6]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.zoneid = row[1] ? static_cast<int32_t>(atoi(row[1])) : 0;
e.Itemid = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.level = row[3] ? static_cast<int16_t>(atoi(row[3])) : 0;
e.chance = row[4] ? static_cast<int16_t>(atoi(row[4])) : 0;
e.min_expansion = row[5] ? static_cast<int8_t>(atoi(row[5])) : -1;
e.max_expansion = row[6] ? static_cast<int8_t>(atoi(row[6])) : -1;
e.content_flags = row[7] ? row[7] : "";
e.content_flags_disabled = row[8] ? row[8] : "";
@@ -397,6 +398,78 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Forage &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Forage> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back(std::to_string(e.zoneid));
v.push_back(std::to_string(e.Itemid));
v.push_back(std::to_string(e.level));
v.push_back(std::to_string(e.chance));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FORAGE_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_FRIENDS_REPOSITORY_H
@@ -112,8 +112,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
friends_id
)
);
@@ -122,8 +123,8 @@ public:
if (results.RowCount() == 1) {
Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : "";
return e;
@@ -250,8 +251,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : "";
all_entries.push_back(e);
@@ -277,8 +278,8 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
Friends e{};
e.charid = static_cast<uint32_t>(strtoul(row[0], nullptr, 10));
e.type = static_cast<uint8_t>(strtoul(row[1], nullptr, 10));
e.charid = row[0] ? static_cast<uint32_t>(strtoul(row[0], nullptr, 10)) : 0;
e.type = row[1] ? static_cast<uint8_t>(strtoul(row[1], nullptr, 10)) : 1;
e.name = row[2] ? row[2] : "";
all_entries.push_back(e);
@@ -338,6 +339,66 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const Friends &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.name) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<Friends> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.charid));
v.push_back(std::to_string(e.type));
v.push_back("'" + Strings::Escape(e.name) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_FRIENDS_REPOSITORY_H
@@ -6,7 +6,7 @@
* Any modifications to base repositories are to be made by the generator only
*
* @generator ./utils/scripts/generators/repository-generator.pl
* @docs https://eqemu.gitbook.io/server/in-development/developer-area/repositories
* @docs https://docs.eqemu.io/developer/repositories
*/
#ifndef EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H
@@ -168,8 +168,9 @@ public:
{
auto results = db.QueryDatabase(
fmt::format(
"{} WHERE id = {} LIMIT 1",
"{} WHERE {} = {} LIMIT 1",
BaseSelect(),
PrimaryKey(),
global_loot_id
)
);
@@ -178,21 +179,21 @@ public:
if (results.RowCount() == 1) {
GlobalLoot e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.description = row[1] ? row[1] : "";
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
e.enabled = static_cast<int8_t>(atoi(row[3]));
e.min_level = static_cast<int32_t>(atoi(row[4]));
e.max_level = static_cast<int32_t>(atoi(row[5]));
e.rare = static_cast<int8_t>(atoi(row[6]));
e.raid = static_cast<int8_t>(atoi(row[7]));
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
e.race = row[8] ? row[8] : "";
e.class_ = row[9] ? row[9] : "";
e.bodytype = row[10] ? row[10] : "";
e.zone = row[11] ? row[11] : "";
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
e.content_flags = row[15] ? row[15] : "";
e.content_flags_disabled = row[16] ? row[16] : "";
@@ -361,21 +362,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
GlobalLoot e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.description = row[1] ? row[1] : "";
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
e.enabled = static_cast<int8_t>(atoi(row[3]));
e.min_level = static_cast<int32_t>(atoi(row[4]));
e.max_level = static_cast<int32_t>(atoi(row[5]));
e.rare = static_cast<int8_t>(atoi(row[6]));
e.raid = static_cast<int8_t>(atoi(row[7]));
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
e.race = row[8] ? row[8] : "";
e.class_ = row[9] ? row[9] : "";
e.bodytype = row[10] ? row[10] : "";
e.zone = row[11] ? row[11] : "";
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
e.content_flags = row[15] ? row[15] : "";
e.content_flags_disabled = row[16] ? row[16] : "";
@@ -402,21 +403,21 @@ public:
for (auto row = results.begin(); row != results.end(); ++row) {
GlobalLoot e{};
e.id = static_cast<int32_t>(atoi(row[0]));
e.id = row[0] ? static_cast<int32_t>(atoi(row[0])) : 0;
e.description = row[1] ? row[1] : "";
e.loottable_id = static_cast<int32_t>(atoi(row[2]));
e.enabled = static_cast<int8_t>(atoi(row[3]));
e.min_level = static_cast<int32_t>(atoi(row[4]));
e.max_level = static_cast<int32_t>(atoi(row[5]));
e.rare = static_cast<int8_t>(atoi(row[6]));
e.raid = static_cast<int8_t>(atoi(row[7]));
e.loottable_id = row[2] ? static_cast<int32_t>(atoi(row[2])) : 0;
e.enabled = row[3] ? static_cast<int8_t>(atoi(row[3])) : 1;
e.min_level = row[4] ? static_cast<int32_t>(atoi(row[4])) : 0;
e.max_level = row[5] ? static_cast<int32_t>(atoi(row[5])) : 0;
e.rare = row[6] ? static_cast<int8_t>(atoi(row[6])) : 0;
e.raid = row[7] ? static_cast<int8_t>(atoi(row[7])) : 0;
e.race = row[8] ? row[8] : "";
e.class_ = row[9] ? row[9] : "";
e.bodytype = row[10] ? row[10] : "";
e.zone = row[11] ? row[11] : "";
e.hot_zone = static_cast<int8_t>(atoi(row[12]));
e.min_expansion = static_cast<int8_t>(atoi(row[13]));
e.max_expansion = static_cast<int8_t>(atoi(row[14]));
e.hot_zone = row[12] ? static_cast<int8_t>(atoi(row[12])) : 0;
e.min_expansion = row[13] ? static_cast<int8_t>(atoi(row[13])) : -1;
e.max_expansion = row[14] ? static_cast<int8_t>(atoi(row[14])) : -1;
e.content_flags = row[15] ? row[15] : "";
e.content_flags_disabled = row[16] ? row[16] : "";
@@ -477,6 +478,94 @@ public:
return (results.Success() && results.begin()[0] ? strtoll(results.begin()[0], nullptr, 10) : 0);
}
static std::string BaseReplace()
{
return fmt::format(
"REPLACE INTO {} ({}) ",
TableName(),
ColumnsRaw()
);
}
static int ReplaceOne(
Database& db,
const GlobalLoot &e
)
{
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.loottable_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.rare));
v.push_back(std::to_string(e.raid));
v.push_back("'" + Strings::Escape(e.race) + "'");
v.push_back("'" + Strings::Escape(e.class_) + "'");
v.push_back("'" + Strings::Escape(e.bodytype) + "'");
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.hot_zone));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES ({})",
BaseReplace(),
Strings::Implode(",", v)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
static int ReplaceMany(
Database& db,
const std::vector<GlobalLoot> &entries
)
{
std::vector<std::string> insert_chunks;
for (auto &e: entries) {
std::vector<std::string> v;
v.push_back(std::to_string(e.id));
v.push_back("'" + Strings::Escape(e.description) + "'");
v.push_back(std::to_string(e.loottable_id));
v.push_back(std::to_string(e.enabled));
v.push_back(std::to_string(e.min_level));
v.push_back(std::to_string(e.max_level));
v.push_back(std::to_string(e.rare));
v.push_back(std::to_string(e.raid));
v.push_back("'" + Strings::Escape(e.race) + "'");
v.push_back("'" + Strings::Escape(e.class_) + "'");
v.push_back("'" + Strings::Escape(e.bodytype) + "'");
v.push_back("'" + Strings::Escape(e.zone) + "'");
v.push_back(std::to_string(e.hot_zone));
v.push_back(std::to_string(e.min_expansion));
v.push_back(std::to_string(e.max_expansion));
v.push_back("'" + Strings::Escape(e.content_flags) + "'");
v.push_back("'" + Strings::Escape(e.content_flags_disabled) + "'");
insert_chunks.push_back("(" + Strings::Implode(",", v) + ")");
}
std::vector<std::string> v;
auto results = db.QueryDatabase(
fmt::format(
"{} VALUES {}",
BaseReplace(),
Strings::Implode(",", insert_chunks)
)
);
return (results.Success() ? results.RowsAffected() : 0);
}
};
#endif //EQEMU_BASE_GLOBAL_LOOT_REPOSITORY_H

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