From f2db152d725c9816fbb04dd3a9ae1b92a34f7096 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Sun, 26 May 2024 16:37:43 -0500 Subject: [PATCH] [Release] 4.2.2 --- CHANGELOG.md | 2 +- boot/inject_http_crud_controllers.go | 27 + boot/wire_gen.go | 11 +- internal/generators/config/db-schema-keys.yml | 329 +- internal/generators/config/db-schema.yml | 13107 ++++++++++------ .../crudcontrollers/base_datum_controller.go | 6 +- .../bot_starting_item_controller.go | 365 + .../character_parcel_controller.go | 365 + .../character_parcels_container_controller.go | 365 + .../character_stats_record_controller.go | 365 + .../crudcontrollers/group_id_controller.go | 141 +- .../crudcontrollers/guild_bank_controller.go | 365 + .../guild_permission_controller.go | 365 + .../guild_tribute_controller.go | 365 + .../crudcontrollers/keyring_controller.go | 365 + .../merchantlist_temp_controller.go | 6 +- .../npc_scale_global_base_controller.go | 72 +- .../crudcontrollers/skill_cap_controller.go | 135 +- .../spawn_2_disabled_controller.go | 365 + .../starting_item_controller.go | 33 - .../http/crudcontrollers/trader_controller.go | 69 +- internal/models/bot_starting_items.go | 31 + internal/models/character_parcels.go | 34 + .../models/character_parcels_containers.go | 27 + internal/models/character_stats_record.go | 94 + internal/models/group_id.go | 9 +- internal/models/guild_bank.go | 2 +- internal/models/guild_permissions.go | 20 + internal/models/guild_tributes.go | 23 + internal/models/instance_list.go | 6 +- internal/models/npc_spells_entries.go | 30 +- internal/models/npc_types.go | 1 + internal/models/rule_values.go | 2 +- internal/models/skill_caps.go | 11 +- internal/models/spawn_2_disabled.go | 24 + internal/models/trader.go | 22 +- package.json | 2 +- 37 files changed, 12389 insertions(+), 5172 deletions(-) create mode 100644 internal/http/crudcontrollers/bot_starting_item_controller.go create mode 100644 internal/http/crudcontrollers/character_parcel_controller.go create mode 100644 internal/http/crudcontrollers/character_parcels_container_controller.go create mode 100644 internal/http/crudcontrollers/character_stats_record_controller.go create mode 100644 internal/http/crudcontrollers/guild_bank_controller.go create mode 100644 internal/http/crudcontrollers/guild_permission_controller.go create mode 100644 internal/http/crudcontrollers/guild_tribute_controller.go create mode 100644 internal/http/crudcontrollers/keyring_controller.go create mode 100644 internal/http/crudcontrollers/spawn_2_disabled_controller.go create mode 100644 internal/models/bot_starting_items.go create mode 100644 internal/models/character_parcels.go create mode 100644 internal/models/character_parcels_containers.go create mode 100644 internal/models/character_stats_record.go create mode 100644 internal/models/guild_permissions.go create mode 100644 internal/models/guild_tributes.go create mode 100644 internal/models/spawn_2_disabled.go diff --git a/CHANGELOG.md b/CHANGELOG.md index f8b260173..a1163ffce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [4.2.1] 5/25/2024 +## [4.2.2] 5/25/2024 **Launcher** No longer runs shared memory on start if the server is detected to be online. This can cause issues with existing server processes if shared memory is re-ran while the server is online. diff --git a/boot/inject_http_crud_controllers.go b/boot/inject_http_crud_controllers.go index 3c1919280..24125e0a1 100644 --- a/boot/inject_http_crud_controllers.go +++ b/boot/inject_http_crud_controllers.go @@ -49,6 +49,7 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewBotSpellSettingController, crudcontrollers.NewBotSpellsEntryController, crudcontrollers.NewBotStanceController, + crudcontrollers.NewBotStartingItemController, crudcontrollers.NewBotTimerController, crudcontrollers.NewBugController, crudcontrollers.NewBugReportController, @@ -78,6 +79,8 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewCharacterLeadershipAbilityController, crudcontrollers.NewCharacterMaterialController, crudcontrollers.NewCharacterMemmedSpellController, + crudcontrollers.NewCharacterParcelController, + crudcontrollers.NewCharacterParcelsContainerController, crudcontrollers.NewCharacterPeqzoneFlagController, crudcontrollers.NewCharacterPetBuffController, crudcontrollers.NewCharacterPetInfoController, @@ -85,6 +88,7 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewCharacterPotionbeltController, crudcontrollers.NewCharacterSkillController, crudcontrollers.NewCharacterSpellController, + crudcontrollers.NewCharacterStatsRecordController, crudcontrollers.NewCharacterTaskController, crudcontrollers.NewCharacterTaskTimerController, crudcontrollers.NewCharacterTributeController, @@ -124,10 +128,13 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewGridEntryController, crudcontrollers.NewGroundSpawnController, crudcontrollers.NewGroupIdController, + crudcontrollers.NewGuildBankController, crudcontrollers.NewGuildController, crudcontrollers.NewGuildMemberController, + crudcontrollers.NewGuildPermissionController, crudcontrollers.NewGuildRankController, crudcontrollers.NewGuildRelationController, + crudcontrollers.NewGuildTributeController, crudcontrollers.NewHorseController, crudcontrollers.NewInstanceListController, crudcontrollers.NewInstanceListPlayerController, @@ -136,6 +143,7 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewIpExemptionController, crudcontrollers.NewItemController, crudcontrollers.NewItemTickController, + crudcontrollers.NewKeyringController, crudcontrollers.NewLdonTrapEntryController, crudcontrollers.NewLdonTrapTemplateController, crudcontrollers.NewLevelExpModController, @@ -190,6 +198,7 @@ var httpCrudControllerSet = wire.NewSet( crudcontrollers.NewSharedTaskMemberController, crudcontrollers.NewSkillCapController, crudcontrollers.NewSpawn2Controller, + crudcontrollers.NewSpawn2DisabledController, crudcontrollers.NewSpawnConditionController, crudcontrollers.NewSpawnConditionValueController, crudcontrollers.NewSpawnEventController, @@ -258,6 +267,7 @@ func provideCrudControllers( botSpellSettingController *crudcontrollers.BotSpellSettingController, botSpellsEntryController *crudcontrollers.BotSpellsEntryController, botStanceController *crudcontrollers.BotStanceController, + botStartingItemController *crudcontrollers.BotStartingItemController, botTimerController *crudcontrollers.BotTimerController, bugController *crudcontrollers.BugController, bugReportController *crudcontrollers.BugReportController, @@ -287,6 +297,8 @@ func provideCrudControllers( characterLeadershipAbilityController *crudcontrollers.CharacterLeadershipAbilityController, characterMaterialController *crudcontrollers.CharacterMaterialController, characterMemmedSpellController *crudcontrollers.CharacterMemmedSpellController, + characterParcelController *crudcontrollers.CharacterParcelController, + characterParcelsContainerController *crudcontrollers.CharacterParcelsContainerController, characterPeqzoneFlagController *crudcontrollers.CharacterPeqzoneFlagController, characterPetBuffController *crudcontrollers.CharacterPetBuffController, characterPetInfoController *crudcontrollers.CharacterPetInfoController, @@ -294,6 +306,7 @@ func provideCrudControllers( characterPotionbeltController *crudcontrollers.CharacterPotionbeltController, characterSkillController *crudcontrollers.CharacterSkillController, characterSpellController *crudcontrollers.CharacterSpellController, + characterStatsRecordController *crudcontrollers.CharacterStatsRecordController, characterTaskController *crudcontrollers.CharacterTaskController, characterTaskTimerController *crudcontrollers.CharacterTaskTimerController, characterTributeController *crudcontrollers.CharacterTributeController, @@ -333,10 +346,13 @@ func provideCrudControllers( gridEntryController *crudcontrollers.GridEntryController, groundSpawnController *crudcontrollers.GroundSpawnController, groupIdController *crudcontrollers.GroupIdController, + guildBankController *crudcontrollers.GuildBankController, guildController *crudcontrollers.GuildController, guildMemberController *crudcontrollers.GuildMemberController, + guildPermissionController *crudcontrollers.GuildPermissionController, guildRankController *crudcontrollers.GuildRankController, guildRelationController *crudcontrollers.GuildRelationController, + guildTributeController *crudcontrollers.GuildTributeController, horseController *crudcontrollers.HorseController, instanceListController *crudcontrollers.InstanceListController, instanceListPlayerController *crudcontrollers.InstanceListPlayerController, @@ -345,6 +361,7 @@ func provideCrudControllers( ipExemptionController *crudcontrollers.IpExemptionController, itemController *crudcontrollers.ItemController, itemTickController *crudcontrollers.ItemTickController, + keyringController *crudcontrollers.KeyringController, ldonTrapEntryController *crudcontrollers.LdonTrapEntryController, ldonTrapTemplateController *crudcontrollers.LdonTrapTemplateController, levelExpModController *crudcontrollers.LevelExpModController, @@ -399,6 +416,7 @@ func provideCrudControllers( sharedTaskMemberController *crudcontrollers.SharedTaskMemberController, skillCapController *crudcontrollers.SkillCapController, spawn2Controller *crudcontrollers.Spawn2Controller, + spawn2DisabledController *crudcontrollers.Spawn2DisabledController, spawnConditionController *crudcontrollers.SpawnConditionController, spawnConditionValueController *crudcontrollers.SpawnConditionValueController, spawnEventController *crudcontrollers.SpawnEventController, @@ -466,6 +484,7 @@ func provideCrudControllers( botSpellSettingController, botSpellsEntryController, botStanceController, + botStartingItemController, botTimerController, bugController, bugReportController, @@ -495,6 +514,8 @@ func provideCrudControllers( characterLeadershipAbilityController, characterMaterialController, characterMemmedSpellController, + characterParcelController, + characterParcelsContainerController, characterPeqzoneFlagController, characterPetBuffController, characterPetInfoController, @@ -502,6 +523,7 @@ func provideCrudControllers( characterPotionbeltController, characterSkillController, characterSpellController, + characterStatsRecordController, characterTaskController, characterTaskTimerController, characterTributeController, @@ -541,10 +563,13 @@ func provideCrudControllers( gridEntryController, groundSpawnController, groupIdController, + guildBankController, guildController, guildMemberController, + guildPermissionController, guildRankController, guildRelationController, + guildTributeController, horseController, instanceListController, instanceListPlayerController, @@ -553,6 +578,7 @@ func provideCrudControllers( ipExemptionController, itemController, itemTickController, + keyringController, ldonTrapEntryController, ldonTrapTemplateController, levelExpModController, @@ -607,6 +633,7 @@ func provideCrudControllers( sharedTaskMemberController, skillCapController, spawn2Controller, + spawn2DisabledController, spawnConditionController, spawnConditionValueController, spawnEventController, diff --git a/boot/wire_gen.go b/boot/wire_gen.go index d43174653..6c04098ba 100644 --- a/boot/wire_gen.go +++ b/boot/wire_gen.go @@ -151,6 +151,7 @@ func InitializeApplication() (App, error) { botSpellSettingController := crudcontrollers.NewBotSpellSettingController(resolver, userEvent) botSpellsEntryController := crudcontrollers.NewBotSpellsEntryController(resolver, userEvent) botStanceController := crudcontrollers.NewBotStanceController(resolver, userEvent) + botStartingItemController := crudcontrollers.NewBotStartingItemController(resolver, userEvent) botTimerController := crudcontrollers.NewBotTimerController(resolver, userEvent) bugController := crudcontrollers.NewBugController(resolver, userEvent) bugReportController := crudcontrollers.NewBugReportController(resolver, userEvent) @@ -180,6 +181,8 @@ func InitializeApplication() (App, error) { characterLeadershipAbilityController := crudcontrollers.NewCharacterLeadershipAbilityController(resolver, userEvent) characterMaterialController := crudcontrollers.NewCharacterMaterialController(resolver, userEvent) characterMemmedSpellController := crudcontrollers.NewCharacterMemmedSpellController(resolver, userEvent) + characterParcelController := crudcontrollers.NewCharacterParcelController(resolver, userEvent) + characterParcelsContainerController := crudcontrollers.NewCharacterParcelsContainerController(resolver, userEvent) characterPeqzoneFlagController := crudcontrollers.NewCharacterPeqzoneFlagController(resolver, userEvent) characterPetBuffController := crudcontrollers.NewCharacterPetBuffController(resolver, userEvent) characterPetInfoController := crudcontrollers.NewCharacterPetInfoController(resolver, userEvent) @@ -187,6 +190,7 @@ func InitializeApplication() (App, error) { characterPotionbeltController := crudcontrollers.NewCharacterPotionbeltController(resolver, userEvent) characterSkillController := crudcontrollers.NewCharacterSkillController(resolver, userEvent) characterSpellController := crudcontrollers.NewCharacterSpellController(resolver, userEvent) + characterStatsRecordController := crudcontrollers.NewCharacterStatsRecordController(resolver, userEvent) characterTaskController := crudcontrollers.NewCharacterTaskController(resolver, userEvent) characterTaskTimerController := crudcontrollers.NewCharacterTaskTimerController(resolver, userEvent) characterTributeController := crudcontrollers.NewCharacterTributeController(resolver, userEvent) @@ -226,10 +230,13 @@ func InitializeApplication() (App, error) { gridEntryController := crudcontrollers.NewGridEntryController(resolver, userEvent) groundSpawnController := crudcontrollers.NewGroundSpawnController(resolver, userEvent) groupIdController := crudcontrollers.NewGroupIdController(resolver, userEvent) + guildBankController := crudcontrollers.NewGuildBankController(resolver, userEvent) guildController := crudcontrollers.NewGuildController(resolver, userEvent) guildMemberController := crudcontrollers.NewGuildMemberController(resolver, userEvent) + guildPermissionController := crudcontrollers.NewGuildPermissionController(resolver, userEvent) guildRankController := crudcontrollers.NewGuildRankController(resolver, userEvent) guildRelationController := crudcontrollers.NewGuildRelationController(resolver, userEvent) + guildTributeController := crudcontrollers.NewGuildTributeController(resolver, userEvent) horseController := crudcontrollers.NewHorseController(resolver, userEvent) instanceListController := crudcontrollers.NewInstanceListController(resolver, userEvent) instanceListPlayerController := crudcontrollers.NewInstanceListPlayerController(resolver, userEvent) @@ -238,6 +245,7 @@ func InitializeApplication() (App, error) { ipExemptionController := crudcontrollers.NewIpExemptionController(resolver, userEvent) itemController := crudcontrollers.NewItemController(resolver, userEvent) itemTickController := crudcontrollers.NewItemTickController(resolver, userEvent) + keyringController := crudcontrollers.NewKeyringController(resolver, userEvent) ldonTrapEntryController := crudcontrollers.NewLdonTrapEntryController(resolver, userEvent) ldonTrapTemplateController := crudcontrollers.NewLdonTrapTemplateController(resolver, userEvent) levelExpModController := crudcontrollers.NewLevelExpModController(resolver, userEvent) @@ -292,6 +300,7 @@ func InitializeApplication() (App, error) { sharedTaskMemberController := crudcontrollers.NewSharedTaskMemberController(resolver, userEvent) skillCapController := crudcontrollers.NewSkillCapController(resolver, userEvent) spawn2Controller := crudcontrollers.NewSpawn2Controller(resolver, userEvent) + spawn2DisabledController := crudcontrollers.NewSpawn2DisabledController(resolver, userEvent) spawnConditionController := crudcontrollers.NewSpawnConditionController(resolver, userEvent) spawnConditionValueController := crudcontrollers.NewSpawnConditionValueController(resolver, userEvent) spawnEventController := crudcontrollers.NewSpawnEventController(resolver, userEvent) @@ -318,7 +327,7 @@ func InitializeApplication() (App, error) { zoneController := crudcontrollers.NewZoneController(resolver, userEvent) zoneFlagController := crudcontrollers.NewZoneFlagController(resolver, userEvent) zonePointController := crudcontrollers.NewZonePointController(resolver, userEvent) - bootCrudControllers := provideCrudControllers(aaAbilityController, aaRankController, aaRankEffectController, aaRankPrereqController, accountController, accountFlagController, accountIpController, accountRewardController, adventureDetailController, adventureMemberController, adventureStatController, adventureTemplateController, adventureTemplateEntryController, adventureTemplateEntryFlavorController, alternateCurrencyController, auraController, baseDatumController, blockedSpellController, bookController, botBuffController, botCreateCombinationController, botDatumController, botGroupController, botGroupMemberController, botGuildMemberController, botHealRotationController, botHealRotationMemberController, botHealRotationTargetController, botInspectMessageController, botInventoryController, botOwnerOptionController, botPetBuffController, botPetController, botPetInventoryController, botSpellCastingChanceController, botSpellSettingController, botSpellsEntryController, botStanceController, botTimerController, bugController, bugReportController, buyerController, charCreateCombinationController, charCreatePointAllocationController, charRecipeListController, characterActivityController, characterAltCurrencyController, characterAlternateAbilityController, characterAuraController, characterBandolierController, characterBindController, characterBuffController, characterCorpseController, characterCorpseItemController, characterCurrencyController, characterDatumController, characterDisciplineController, characterEnabledtaskController, characterExpModifierController, characterExpeditionLockoutController, characterInspectMessageController, characterInstanceSafereturnController, characterItemRecastController, characterLanguageController, characterLeadershipAbilityController, characterMaterialController, characterMemmedSpellController, characterPeqzoneFlagController, characterPetBuffController, characterPetInfoController, characterPetInventoryController, characterPotionbeltController, characterSkillController, characterSpellController, characterTaskController, characterTaskTimerController, characterTributeController, chatchannelController, chatchannelReservedNameController, commandSubsettingController, completedSharedTaskActivityStateController, completedSharedTaskController, completedSharedTaskMemberController, completedTaskController, contentFlagController, damageshieldtypeController, dataBucketController, dbStrController, discordWebhookController, discoveredItemController, doorController, dynamicZoneController, dynamicZoneMemberController, dynamicZoneTemplateController, eventlogController, expeditionController, expeditionLockoutController, expeditionMemberController, factionAssociationController, factionBaseDatumController, factionListController, factionListModController, factionValueController, fishingController, forageController, friendController, globalLootController, gmIpController, graveyardController, gridController, gridEntryController, groundSpawnController, groupIdController, guildController, guildMemberController, guildRankController, guildRelationController, horseController, instanceListController, instanceListPlayerController, inventoryController, inventorySnapshotController, ipExemptionController, itemController, itemTickController, ldonTrapEntryController, ldonTrapTemplateController, levelExpModController, lfguildController, loginAccountController, loginApiTokenController, loginServerAdminController, loginServerListTypeController, loginWorldServerController, logsysCategoryController, lootdropController, lootdropEntryController, loottableController, loottableEntryController, mailController, merchantlistController, merchantlistTempController, nameFilterController, npcEmoteController, npcFactionController, npcFactionEntryController, npcScaleGlobalBaseController, npcSpellController, npcSpellsEffectController, npcSpellsEffectsEntryController, npcSpellsEntryController, npcTypeController, npcTypesTintController, objectContentController, objectController, perlEventExportSettingController, petController, petitionController, petsBeastlordDatumController, petsEquipmentsetController, petsEquipmentsetEntryController, playerEventLogController, playerEventLogSettingController, playerTitlesetController, questGlobalController, raidDetailController, raidMemberController, reportController, respawnTimeController, ruleSetController, ruleValueController, saylinkController, serverScheduledEventController, sharedTaskActivityStateController, sharedTaskController, sharedTaskDynamicZoneController, sharedTaskMemberController, skillCapController, spawn2Controller, spawnConditionController, spawnConditionValueController, spawnEventController, spawnentryController, spawngroupController, spellBucketController, spellGlobalController, spellsNewController, startZoneController, startingItemController, taskActivityController, taskController, tasksetController, timerController, titleController, traderController, tradeskillRecipeController, tradeskillRecipeEntryController, trapController, tributeController, tributeLevelController, variableController, veteranRewardTemplateController, zoneController, zoneFlagController, zonePointController) + bootCrudControllers := provideCrudControllers(aaAbilityController, aaRankController, aaRankEffectController, aaRankPrereqController, accountController, accountFlagController, accountIpController, accountRewardController, adventureDetailController, adventureMemberController, adventureStatController, adventureTemplateController, adventureTemplateEntryController, adventureTemplateEntryFlavorController, alternateCurrencyController, auraController, baseDatumController, blockedSpellController, bookController, botBuffController, botCreateCombinationController, botDatumController, botGroupController, botGroupMemberController, botGuildMemberController, botHealRotationController, botHealRotationMemberController, botHealRotationTargetController, botInspectMessageController, botInventoryController, botOwnerOptionController, botPetBuffController, botPetController, botPetInventoryController, botSpellCastingChanceController, botSpellSettingController, botSpellsEntryController, botStanceController, botStartingItemController, botTimerController, bugController, bugReportController, buyerController, charCreateCombinationController, charCreatePointAllocationController, charRecipeListController, characterActivityController, characterAltCurrencyController, characterAlternateAbilityController, characterAuraController, characterBandolierController, characterBindController, characterBuffController, characterCorpseController, characterCorpseItemController, characterCurrencyController, characterDatumController, characterDisciplineController, characterEnabledtaskController, characterExpModifierController, characterExpeditionLockoutController, characterInspectMessageController, characterInstanceSafereturnController, characterItemRecastController, characterLanguageController, characterLeadershipAbilityController, characterMaterialController, characterMemmedSpellController, characterParcelController, characterParcelsContainerController, characterPeqzoneFlagController, characterPetBuffController, characterPetInfoController, characterPetInventoryController, characterPotionbeltController, characterSkillController, characterSpellController, characterStatsRecordController, characterTaskController, characterTaskTimerController, characterTributeController, chatchannelController, chatchannelReservedNameController, commandSubsettingController, completedSharedTaskActivityStateController, completedSharedTaskController, completedSharedTaskMemberController, completedTaskController, contentFlagController, damageshieldtypeController, dataBucketController, dbStrController, discordWebhookController, discoveredItemController, doorController, dynamicZoneController, dynamicZoneMemberController, dynamicZoneTemplateController, eventlogController, expeditionController, expeditionLockoutController, expeditionMemberController, factionAssociationController, factionBaseDatumController, factionListController, factionListModController, factionValueController, fishingController, forageController, friendController, globalLootController, gmIpController, graveyardController, gridController, gridEntryController, groundSpawnController, groupIdController, guildBankController, guildController, guildMemberController, guildPermissionController, guildRankController, guildRelationController, guildTributeController, horseController, instanceListController, instanceListPlayerController, inventoryController, inventorySnapshotController, ipExemptionController, itemController, itemTickController, keyringController, ldonTrapEntryController, ldonTrapTemplateController, levelExpModController, lfguildController, loginAccountController, loginApiTokenController, loginServerAdminController, loginServerListTypeController, loginWorldServerController, logsysCategoryController, lootdropController, lootdropEntryController, loottableController, loottableEntryController, mailController, merchantlistController, merchantlistTempController, nameFilterController, npcEmoteController, npcFactionController, npcFactionEntryController, npcScaleGlobalBaseController, npcSpellController, npcSpellsEffectController, npcSpellsEffectsEntryController, npcSpellsEntryController, npcTypeController, npcTypesTintController, objectContentController, objectController, perlEventExportSettingController, petController, petitionController, petsBeastlordDatumController, petsEquipmentsetController, petsEquipmentsetEntryController, playerEventLogController, playerEventLogSettingController, playerTitlesetController, questGlobalController, raidDetailController, raidMemberController, reportController, respawnTimeController, ruleSetController, ruleValueController, saylinkController, serverScheduledEventController, sharedTaskActivityStateController, sharedTaskController, sharedTaskDynamicZoneController, sharedTaskMemberController, skillCapController, spawn2Controller, spawn2DisabledController, spawnConditionController, spawnConditionValueController, spawnEventController, spawnentryController, spawngroupController, spellBucketController, spellGlobalController, spellsNewController, startZoneController, startingItemController, taskActivityController, taskController, tasksetController, timerController, titleController, traderController, tradeskillRecipeController, tradeskillRecipeEntryController, trapController, tributeController, tributeLevelController, variableController, veteranRewardTemplateController, zoneController, zoneFlagController, zonePointController) contextMiddleware := user.NewContextMiddleware(resolver, cache) readOnlyMiddleware := middleware.NewReadOnlyMiddleware(resolver, appLogger) permissionsMiddleware := middleware.NewPermissionsMiddleware(resolver, appLogger, cache, service) diff --git a/internal/generators/config/db-schema-keys.yml b/internal/generators/config/db-schema-keys.yml index e8220d625..d47ba1f4b 100644 --- a/internal/generators/config/db-schema-keys.yml +++ b/internal/generators/config/db-schema-keys.yml @@ -178,18 +178,18 @@ banned_ips: column_default: "" base_data: - column: level - data_type: int + data_type: tinyint column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(3) unsigned column_default: "" - column: class - data_type: int + data_type: tinyint column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(2) unsigned column_default: "" blocked_spells: - column: id @@ -207,126 +207,7 @@ books: is_nullable: "NO" column_type: int(20) column_default: "" -bot_buffs: - - column: buffs_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_command_settings: - - column: bot_command - data_type: varchar - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: varchar(128) - column_default: '''''' -bot_create_combinations: - - column: race - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" -bot_data: - - column: bot_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_heal_rotation_members: - - column: member_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_heal_rotation_targets: - - column: target_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_heal_rotations: - - column: heal_rotation_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_inspect_messages: - - column: bot_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_inventories: - - column: inventories_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -bot_owner_options: - - column: owner_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: option_type - data_type: smallint - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: smallint(3) unsigned - column_default: "" -bot_pet_buffs: - - column: pet_buffs_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -bot_pet_inventories: - - column: pet_inventories_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -bot_pets: - - column: pets_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -bot_spell_casting_chances: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) - column_default: "" -bot_spell_settings: +bot_starting_items: - column: id data_type: int column_key: PRI @@ -334,30 +215,6 @@ bot_spell_settings: is_nullable: "NO" column_type: int(11) unsigned column_default: "" -bot_spells_entries: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" -bot_stances: - - column: bot_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" -bot_timers: - - column: bot_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" bug_reports: - column: id data_type: int @@ -750,6 +607,22 @@ character_memmed_spells: is_nullable: "NO" column_type: smallint(11) unsigned column_default: "0" +character_parcels: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" +character_parcels_containers: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" character_peqzone_flags: - column: id data_type: int @@ -869,6 +742,14 @@ character_spells: is_nullable: "NO" column_type: smallint(11) unsigned column_default: "0" +character_stats_record: + - column: character_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" character_task_timers: - column: id data_type: int @@ -1264,27 +1145,42 @@ ground_spawns: column_type: int(11) unsigned column_default: "" group_id: - - column: groupid + - column: group_id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(4) - column_default: "" - - column: charid + column_type: int(11) unsigned + column_default: "0" + - column: character_id data_type: int column_key: PRI - ordinal_position: "2" + ordinal_position: "3" is_nullable: "NO" - column_type: int(4) - column_default: "" - - column: ismerc - data_type: tinyint + column_type: int(11) unsigned + column_default: "0" + - column: bot_id + data_type: int column_key: PRI ordinal_position: "4" is_nullable: "NO" - column_type: tinyint(3) + column_type: int(11) unsigned column_default: "0" + - column: merc_id + data_type: int + column_key: PRI + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" +guild_bank: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" guild_members: - column: char_id data_type: int @@ -1293,6 +1189,14 @@ guild_members: is_nullable: "NO" column_type: int(11) column_default: "0" +guild_permissions: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" guild_ranks: - column: guild_id data_type: mediumint @@ -1323,6 +1227,14 @@ guild_relations: is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "0" +guild_tributes: + - column: guild_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" guilds: - column: id data_type: int @@ -1407,15 +1319,15 @@ ip_exemptions: is_nullable: "NO" column_type: int(11) column_default: "" -item_tick: - - column: it_id +items: + - column: id data_type: int column_key: PRI - ordinal_position: "4" + ordinal_position: "1" is_nullable: "NO" column_type: int(11) - column_default: "" -items: + column_default: "0" +items_peq: - column: id data_type: int column_key: PRI @@ -1423,6 +1335,14 @@ items: is_nullable: "NO" column_type: int(11) column_default: "0" +keyring: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" launcher: - column: name data_type: varchar @@ -1607,7 +1527,7 @@ merchantlist: column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" merchantlist_temp: - column: npcid @@ -1618,11 +1538,11 @@ merchantlist_temp: column_type: int(10) unsigned column_default: "0" - column: slot - data_type: tinyint + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - column: zone_id data_type: int @@ -1692,20 +1612,20 @@ npc_scale_global_base: is_nullable: "NO" column_type: int(11) column_default: "" - - column: zone_id - data_type: int + - column: zone_id_list + data_type: text column_key: PRI ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: instance_version - data_type: int + column_type: text + column_default: "" + - column: instance_version_list + data_type: text column_key: PRI ordinal_position: "4" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" + column_type: text + column_default: "" npc_spells: - column: id data_type: int @@ -2017,34 +1937,13 @@ shared_tasks: column_type: bigint(20) column_default: "" skill_caps: - - column: skillID - data_type: tinyint + - column: id + data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: class - data_type: tinyint - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: level - data_type: tinyint - column_key: PRI - ordinal_position: "3" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: class_ - data_type: tinyint - column_key: PRI - ordinal_position: "5" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" + column_type: int(3) unsigned + column_default: "" spawn_condition_values: - column: id data_type: int @@ -2098,6 +1997,14 @@ spawn2: is_nullable: "NO" column_type: int(11) column_default: "" +spawn2_disabled: + - column: id + data_type: bigint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: bigint(11) + column_default: "" spawnentry: - column: spawngroupID data_type: int @@ -2182,13 +2089,6 @@ starting_items: is_nullable: "NO" column_type: int(11) unsigned column_default: "" - - column: race - data_type: int - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: int(11) - column_default: "0" task_activities: - column: taskid data_type: int @@ -2251,20 +2151,13 @@ titles: column_type: int(10) unsigned column_default: "" trader: - - column: char_id - data_type: int + - column: id + data_type: bigint column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: slot_id - data_type: tinyint - column_key: PRI - ordinal_position: "6" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" + column_type: bigint(20) unsigned + column_default: "" tradeskill_recipe: - column: id data_type: int @@ -2346,7 +2239,7 @@ zone: - column: id data_type: int column_key: PRI - ordinal_position: "2" + ordinal_position: "1" is_nullable: "NO" column_type: int(10) column_default: "" diff --git a/internal/generators/config/db-schema.yml b/internal/generators/config/db-schema.yml index c93955919..7b27cef4a 100644 --- a/internal/generators/config/db-schema.yml +++ b/internal/generators/config/db-schema.yml @@ -97,6 +97,13 @@ aa_ability: is_nullable: "NO" column_type: tinyint(4) column_default: "0" + - column: auto_grant_enabled + data_type: tinyint + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" aa_rank_effects: - column: rank_id data_type: int @@ -269,150 +276,157 @@ account: is_nullable: "NO" column_type: varchar(64) column_default: '''''' + - column: auto_login_charname + data_type: varchar + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' - column: sharedplat data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "5" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - column: password data_type: varchar column_key: "" - ordinal_position: "5" + ordinal_position: "6" is_nullable: "NO" column_type: varchar(50) column_default: '''''' - column: status data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "7" is_nullable: "NO" column_type: int(5) column_default: "0" - column: ls_id data_type: varchar column_key: MUL - ordinal_position: "7" + ordinal_position: "8" is_nullable: "YES" column_type: varchar(64) column_default: '''eqemu''' - column: lsaccount_id data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "9" is_nullable: "YES" column_type: int(11) unsigned column_default: "NULL" - column: gmspeed data_type: tinyint column_key: "" - ordinal_position: "9" + ordinal_position: "10" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: invulnerable data_type: tinyint column_key: "" - ordinal_position: "10" + ordinal_position: "11" is_nullable: "YES" column_type: tinyint(4) column_default: "0" - column: flymode data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "12" is_nullable: "YES" column_type: tinyint(4) column_default: "0" - column: ignore_tells data_type: tinyint column_key: "" - ordinal_position: "12" + ordinal_position: "13" is_nullable: "YES" column_type: tinyint(4) column_default: "0" - column: revoked data_type: tinyint column_key: "" - ordinal_position: "13" + ordinal_position: "14" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: karma data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "15" is_nullable: "NO" column_type: int(5) unsigned column_default: "0" - column: minilogin_ip data_type: varchar column_key: "" - ordinal_position: "15" + ordinal_position: "16" is_nullable: "NO" column_type: varchar(32) column_default: '''''' - column: hideme data_type: tinyint column_key: "" - ordinal_position: "16" + ordinal_position: "17" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: rulesflag data_type: tinyint column_key: "" - ordinal_position: "17" + ordinal_position: "18" is_nullable: "NO" column_type: tinyint(1) unsigned column_default: "0" - column: suspendeduntil data_type: datetime column_key: "" - ordinal_position: "18" + ordinal_position: "19" is_nullable: "YES" column_type: datetime column_default: "NULL" - column: time_creation data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "20" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: ban_reason data_type: text column_key: "" - ordinal_position: "20" + ordinal_position: "21" is_nullable: "YES" column_type: text column_default: "NULL" - column: suspend_reason data_type: text column_key: "" - ordinal_position: "21" + ordinal_position: "22" is_nullable: "YES" column_type: text column_default: "NULL" - column: crc_eqgame data_type: text column_key: "" - ordinal_position: "22" + ordinal_position: "23" is_nullable: "YES" column_type: text column_default: "NULL" - column: crc_skillcaps data_type: text column_key: "" - ordinal_position: "23" + ordinal_position: "24" is_nullable: "YES" column_type: text column_default: "NULL" - column: crc_basedata data_type: text column_key: "" - ordinal_position: "24" + ordinal_position: "25" is_nullable: "YES" column_type: text column_default: "NULL" @@ -1018,18 +1032,18 @@ banned_ips: column_default: "NULL" base_data: - column: level - data_type: int + data_type: tinyint column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(3) unsigned column_default: "" - column: class - data_type: int + data_type: tinyint column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(2) unsigned column_default: "" - column: hp data_type: double @@ -1052,14 +1066,14 @@ base_data: is_nullable: "NO" column_type: double column_default: "" - - column: unk1 + - column: hp_regen data_type: double column_key: "" ordinal_position: "6" is_nullable: "NO" column_type: double column_default: "" - - column: unk2 + - column: end_regen data_type: double column_key: "" ordinal_position: "7" @@ -1172,6 +1186,34 @@ blocked_spells: is_nullable: "NO" column_type: varchar(255) column_default: '''''' + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "15" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "16" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" books: - column: id data_type: int @@ -1201,3568 +1243,3741 @@ books: is_nullable: "NO" column_type: int(11) column_default: "0" -bot_buffs: - - column: buffs_index +bot_starting_items: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "" - - column: bot_id + - column: races data_type: int - column_key: MUL + column_key: "" ordinal_position: "2" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: spell_id + - column: classes data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) unsigned column_default: "0" - - column: caster_level - data_type: tinyint + - column: item_id + data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: duration_formula - data_type: int + - column: item_charges + data_type: tinyint column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(3) unsigned + column_default: "1" + - column: min_status + data_type: tinyint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: tinyint(3) unsigned column_default: "0" - - column: tics_remaining + - column: slot_id + data_type: mediumint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: mediumint(9) + column_default: "-1" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "10" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "11" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +bug_reports: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "" + - column: zone + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''Unknown''' + - column: client_version_id data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "3" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: poison_counters + - column: client_version_name + data_type: varchar + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: varchar(24) + column_default: '''Unknown''' + - column: account_id data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "5" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: disease_counters + - column: character_id data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "6" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: curse_counters + - column: character_name + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''Unknown''' + - column: reporter_spoof + data_type: tinyint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: tinyint(1) + column_default: "1" + - column: category_id data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: corruption_counters - data_type: int + - column: category_name + data_type: varchar column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: numhits - data_type: int + column_type: varchar(64) + column_default: '''Other''' + - column: reporter_name + data_type: varchar column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: melee_rune - data_type: int + column_type: varchar(64) + column_default: '''Unknown''' + - column: ui_path + data_type: varchar column_key: "" ordinal_position: "12" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: magic_rune - data_type: int + column_type: varchar(128) + column_default: '''Unknown''' + - column: pos_x + data_type: float column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: int(10) unsigned + column_type: float column_default: "0" - - column: dot_rune - data_type: int + - column: pos_y + data_type: float column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: int(10) unsigned + column_type: float column_default: "0" - - column: persistent - data_type: tinyint + - column: pos_z + data_type: float column_key: "" ordinal_position: "15" is_nullable: "NO" - column_type: tinyint(1) + column_type: float column_default: "0" - - column: caston_x + - column: heading data_type: int column_key: "" ordinal_position: "16" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: caston_y + - column: time_played data_type: int column_key: "" ordinal_position: "17" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: caston_z + - column: target_id data_type: int column_key: "" ordinal_position: "18" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: extra_di_chance - data_type: int + - column: target_name + data_type: varchar column_key: "" ordinal_position: "19" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: instrument_mod + column_type: varchar(64) + column_default: '''Unknown''' + - column: optional_info_mask data_type: int column_key: "" ordinal_position: "20" is_nullable: "NO" - column_type: int(10) - column_default: "10" -bot_command_settings: - - column: bot_command - data_type: varchar - column_key: PRI - ordinal_position: "1" + column_type: int(11) unsigned + column_default: "0" + - column: _can_duplicate + data_type: tinyint + column_key: "" + ordinal_position: "21" is_nullable: "NO" - column_type: varchar(128) - column_default: '''''' - - column: access - data_type: int + column_type: tinyint(1) + column_default: "0" + - column: _crash_bug + data_type: tinyint column_key: "" - ordinal_position: "2" + ordinal_position: "22" is_nullable: "NO" - column_type: int(11) + column_type: tinyint(1) column_default: "0" - - column: aliases + - column: _target_info + data_type: tinyint + column_key: "" + ordinal_position: "23" + is_nullable: "NO" + column_type: tinyint(1) + column_default: "0" + - column: _character_flags + data_type: tinyint + column_key: "" + ordinal_position: "24" + is_nullable: "NO" + column_type: tinyint(1) + column_default: "0" + - column: _unknown_value + data_type: tinyint + column_key: "" + ordinal_position: "25" + is_nullable: "NO" + column_type: tinyint(1) + column_default: "0" + - column: bug_report data_type: varchar column_key: "" - ordinal_position: "3" + ordinal_position: "26" is_nullable: "NO" - column_type: varchar(256) + column_type: varchar(1024) column_default: '''''' -bot_create_combinations: - - column: race - data_type: int - column_key: PRI - ordinal_position: "1" + - column: system_info + data_type: varchar + column_key: "" + ordinal_position: "27" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: classes - data_type: int + column_type: varchar(1024) + column_default: '''''' + - column: report_datetime + data_type: datetime column_key: "" - ordinal_position: "2" + ordinal_position: "28" is_nullable: "NO" - column_type: int(10) unsigned + column_type: datetime + column_default: current_timestamp() + - column: bug_status + data_type: tinyint + column_key: "" + ordinal_position: "29" + is_nullable: "NO" + column_type: tinyint(3) unsigned column_default: "0" -bot_data: - - column: bot_id + - column: last_review + data_type: datetime + column_key: "" + ordinal_position: "30" + is_nullable: "NO" + column_type: datetime + column_default: current_timestamp() + - column: last_reviewer + data_type: varchar + column_key: "" + ordinal_position: "31" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''None''' + - column: reviewer_notes + data_type: varchar + column_key: "" + ordinal_position: "32" + is_nullable: "NO" + column_type: varchar(1024) + column_default: '''''' +bugs: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "" - - column: owner_id - data_type: int + - column: zone + data_type: varchar column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: varchar(32) column_default: "" - - column: spells_id - data_type: int + - column: name + data_type: varchar column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: name + column_type: varchar(64) + column_default: "" + - column: ui data_type: varchar column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: last_name - data_type: varchar + column_type: varchar(128) + column_default: "" + - column: x + data_type: float column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: title - data_type: varchar + column_type: float + column_default: "0" + - column: "y" + data_type: float column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: suffix - data_type: varchar + column_type: float + column_default: "0" + - column: z + data_type: float column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: zone_id - data_type: smallint + column_type: float + column_default: "0" + - column: type + data_type: varchar column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: smallint(6) - column_default: "0" - - column: gender + column_type: varchar(64) + column_default: "" + - column: flag data_type: tinyint column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: tinyint(2) - column_default: "0" - - column: race - data_type: smallint + column_type: tinyint(3) unsigned + column_default: "" + - column: target + data_type: varchar column_key: "" ordinal_position: "10" - is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: class - data_type: tinyint + is_nullable: "YES" + column_type: varchar(64) + column_default: "NULL" + - column: bug + data_type: varchar column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: tinyint(2) - column_default: "0" - - column: level - data_type: tinyint + column_type: varchar(1024) + column_default: "" + - column: date + data_type: date column_key: "" ordinal_position: "12" is_nullable: "NO" - column_type: tinyint(2) unsigned - column_default: "0" - - column: deity - data_type: int + column_type: date + column_default: "" + - column: status + data_type: tinyint column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: int(11) unsigned + column_type: tinyint(3) unsigned column_default: "0" - - column: creation_day +buyer: + - column: charid data_type: int - column_key: "" - ordinal_position: "14" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: last_spawn + - column: buyslot data_type: int - column_key: "" - ordinal_position: "15" + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: time_spawned + - column: itemid data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: size - data_type: float + - column: itemname + data_type: varchar column_key: "" - ordinal_position: "17" + ordinal_position: "4" is_nullable: "NO" - column_type: float - column_default: "0" - - column: face + column_type: varchar(65) + column_default: '''''' + - column: quantity data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "5" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: hair_color + column_type: int(11) + column_default: "0" + - column: price data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "6" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: hair_style + column_type: int(11) + column_default: "0" +char_create_combinations: + - column: allocation_id data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "1" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: beard + column_type: int(10) unsigned + column_default: "" + - column: race data_type: int - column_key: "" - ordinal_position: "21" + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: int(10) - column_default: "0" - - column: beard_color + column_type: int(10) unsigned + column_default: "" + - column: class data_type: int - column_key: "" - ordinal_position: "22" + column_key: PRI + ordinal_position: "3" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: eye_color_1 + column_type: int(10) unsigned + column_default: "" + - column: deity data_type: int - column_key: "" - ordinal_position: "23" + column_key: PRI + ordinal_position: "4" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: eye_color_2 + column_type: int(10) unsigned + column_default: "" + - column: start_zone data_type: int - column_key: "" - ordinal_position: "24" + column_key: PRI + ordinal_position: "5" is_nullable: "NO" - column_type: int(10) - column_default: "1" - - column: drakkin_heritage + column_type: int(10) unsigned + column_default: "" + - column: expansions_req data_type: int column_key: "" - ordinal_position: "25" + ordinal_position: "6" is_nullable: "NO" - column_type: int(10) + column_type: int(10) unsigned column_default: "0" - - column: drakkin_tattoo +char_create_point_allocations: + - column: id data_type: int - column_key: "" - ordinal_position: "26" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: int(10) - column_default: "0" - - column: drakkin_details + column_type: int(10) unsigned + column_default: "" + - column: base_str data_type: int column_key: "" - ordinal_position: "27" + ordinal_position: "2" is_nullable: "NO" - column_type: int(10) - column_default: "0" - - column: ac - data_type: smallint + column_type: int(10) unsigned + column_default: "" + - column: base_sta + data_type: int column_key: "" - ordinal_position: "28" + ordinal_position: "3" is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: atk - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: base_dex + data_type: int column_key: "" - ordinal_position: "29" + ordinal_position: "4" is_nullable: "NO" - column_type: mediumint(9) - column_default: "0" - - column: hp + column_type: int(10) unsigned + column_default: "" + - column: base_agi data_type: int column_key: "" - ordinal_position: "30" + ordinal_position: "5" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: mana + column_type: int(10) unsigned + column_default: "" + - column: base_int data_type: int column_key: "" - ordinal_position: "31" + ordinal_position: "6" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: str - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: base_wis + data_type: int column_key: "" - ordinal_position: "32" + ordinal_position: "7" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: sta - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: base_cha + data_type: int column_key: "" - ordinal_position: "33" + ordinal_position: "8" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: cha - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: alloc_str + data_type: int column_key: "" - ordinal_position: "34" + ordinal_position: "9" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: dex - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: alloc_sta + data_type: int column_key: "" - ordinal_position: "35" + ordinal_position: "10" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: int - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: alloc_dex + data_type: int column_key: "" - ordinal_position: "36" + ordinal_position: "11" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: agi - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: alloc_agi + data_type: int column_key: "" - ordinal_position: "37" + ordinal_position: "12" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: wis - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: alloc_int + data_type: int column_key: "" - ordinal_position: "38" + ordinal_position: "13" is_nullable: "NO" - column_type: mediumint(8) - column_default: "75" - - column: fire - data_type: smallint + column_type: int(10) unsigned + column_default: "" + - column: alloc_wis + data_type: int column_key: "" - ordinal_position: "39" + ordinal_position: "14" is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: cold - data_type: smallint + column_type: int(10) unsigned + column_default: "" + - column: alloc_cha + data_type: int column_key: "" - ordinal_position: "40" + ordinal_position: "15" is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: magic - data_type: smallint - column_key: "" - ordinal_position: "41" + column_type: int(10) unsigned + column_default: "" +char_recipe_list: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: poison - data_type: smallint + column_type: int(11) + column_default: "" + - column: recipe_id + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: madecount + data_type: int column_key: "" - ordinal_position: "42" + ordinal_position: "3" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) column_default: "0" - - column: disease - data_type: smallint - column_key: "" - ordinal_position: "43" +character_activities: + - column: charid + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) unsigned column_default: "0" - - column: corruption - data_type: smallint - column_key: "" - ordinal_position: "44" + - column: taskid + data_type: int + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) unsigned column_default: "0" - - column: show_helm + - column: activityid data_type: int - column_key: "" - ordinal_position: "45" + column_key: PRI + ordinal_position: "3" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: follow_distance + - column: donecount data_type: int column_key: "" - ordinal_position: "46" + ordinal_position: "4" is_nullable: "NO" column_type: int(11) unsigned - column_default: "200" - - column: stop_melee_level + column_default: "0" + - column: completed data_type: tinyint column_key: "" - ordinal_position: "47" + ordinal_position: "5" + is_nullable: "YES" + column_type: tinyint(1) + column_default: "0" +character_alt_currency: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "255" - - column: expansion_bitmask + column_type: int(10) unsigned + column_default: "" + - column: currency_id data_type: int - column_key: "" - ordinal_position: "48" + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: int(11) - column_default: "-1" - - column: enforce_spell_settings - data_type: tinyint - column_key: "" - ordinal_position: "49" - is_nullable: "NO" - column_type: tinyint(2) unsigned - column_default: "0" - - column: archery_setting - data_type: tinyint - column_key: "" - ordinal_position: "50" - is_nullable: "NO" - column_type: tinyint(2) unsigned - column_default: "0" - - column: caster_range + column_type: int(10) unsigned + column_default: "" + - column: amount data_type: int column_key: "" - ordinal_position: "51" + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "300" -bot_heal_rotation_members: - - column: member_index + column_type: int(10) unsigned + column_default: "" +character_alternate_abilities: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: heal_rotation_index - data_type: int - column_key: MUL + column_default: "0" + - column: aa_id + data_type: smallint + column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(11) unsigned column_default: "0" - - column: bot_id - data_type: int - column_key: MUL + - column: aa_value + data_type: smallint + column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(11) unsigned + column_default: "0" + - column: charges + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" -bot_heal_rotation_targets: - - column: target_index +character_auras: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) column_default: "" - - column: heal_rotation_index - data_type: int - column_key: MUL + - column: slot + data_type: tinyint + column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: target_name - data_type: varchar + column_type: tinyint(10) + column_default: "" + - column: spell_id + data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' -bot_heal_rotations: - - column: heal_rotation_index + column_type: int(10) + column_default: "" +character_bandolier: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: bot_id - data_type: int - column_key: MUL + column_default: "0" + - column: bandolier_id + data_type: tinyint + column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: tinyint(11) unsigned column_default: "0" - - column: interval - data_type: int - column_key: "" + - column: bandolier_slot + data_type: tinyint + column_key: PRI ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: tinyint(11) unsigned column_default: "0" - - column: fast_heals + - column: item_id data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: int(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: adaptive_targeting + - column: icon data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: casting_override - data_type: int + - column: bandolier_name + data_type: varchar column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: int(3) unsigned - column_default: "0" - - column: safe_hp_base - data_type: float - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: float unsigned - column_default: "0" - - column: safe_hp_cloth - data_type: float - column_key: "" - ordinal_position: "8" - is_nullable: "NO" - column_type: float unsigned - column_default: "0" - - column: safe_hp_leather - data_type: float - column_key: "" - ordinal_position: "9" + column_type: varchar(32) + column_default: '''0''' +character_bind: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: float unsigned - column_default: "0" - - column: safe_hp_chain - data_type: float - column_key: "" - ordinal_position: "10" + column_type: int(11) unsigned + column_default: "" + - column: slot + data_type: int + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: float unsigned + column_type: int(4) column_default: "0" - - column: safe_hp_plate - data_type: float + - column: zone_id + data_type: smallint column_key: "" - ordinal_position: "11" + ordinal_position: "3" is_nullable: "NO" - column_type: float unsigned + column_type: smallint(11) unsigned column_default: "0" - - column: critical_hp_base - data_type: float + - column: instance_id + data_type: mediumint column_key: "" - ordinal_position: "12" + ordinal_position: "4" is_nullable: "NO" - column_type: float unsigned + column_type: mediumint(11) unsigned column_default: "0" - - column: critical_hp_cloth + - column: x data_type: float column_key: "" - ordinal_position: "13" + ordinal_position: "5" is_nullable: "NO" - column_type: float unsigned + column_type: float column_default: "0" - - column: critical_hp_leather + - column: "y" data_type: float column_key: "" - ordinal_position: "14" + ordinal_position: "6" is_nullable: "NO" - column_type: float unsigned + column_type: float column_default: "0" - - column: critical_hp_chain + - column: z data_type: float column_key: "" - ordinal_position: "15" + ordinal_position: "7" is_nullable: "NO" - column_type: float unsigned + column_type: float column_default: "0" - - column: critical_hp_plate + - column: heading data_type: float column_key: "" - ordinal_position: "16" + ordinal_position: "8" is_nullable: "NO" - column_type: float unsigned + column_type: float column_default: "0" -bot_inspect_messages: - - column: bot_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: inspect_message - data_type: varchar - column_key: "" - ordinal_position: "2" - is_nullable: "NO" - column_type: varchar(256) - column_default: '''''' -bot_inventories: - - column: inventories_index +character_buffs: + - column: character_id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(10) unsigned column_default: "" - - column: bot_id - data_type: int - column_key: MUL + - column: slot_id + data_type: tinyint + column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: slot_id - data_type: mediumint + column_type: tinyint(3) unsigned + column_default: "" + - column: spell_id + data_type: smallint column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: mediumint(7) unsigned - column_default: "0" - - column: item_id - data_type: int + column_type: smallint(10) unsigned + column_default: "" + - column: caster_level + data_type: tinyint column_key: "" ordinal_position: "4" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: inst_charges - data_type: smallint + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "" + - column: caster_name + data_type: varchar column_key: "" ordinal_position: "5" - is_nullable: "YES" - column_type: smallint(3) unsigned - column_default: "0" - - column: inst_color + is_nullable: "NO" + column_type: varchar(64) + column_default: "" + - column: ticsremaining data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: inst_no_drop - data_type: tinyint + column_type: int(11) + column_default: "" + - column: counters + data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: tinyint(1) unsigned - column_default: "0" - - column: inst_custom_data - data_type: text + column_type: int(10) unsigned + column_default: "" + - column: numhits + data_type: int column_key: "" ordinal_position: "8" - is_nullable: "YES" - column_type: text - column_default: "NULL" - - column: ornament_icon + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: melee_rune data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: ornament_id_file + column_type: int(10) unsigned + column_default: "" + - column: magic_rune data_type: int column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: ornament_hero_model - data_type: int - column_key: "" - ordinal_position: "11" - is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: augment_1 - data_type: mediumint + column_type: int(10) unsigned + column_default: "" + - column: persistent + data_type: tinyint + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "" + - column: dot_rune + data_type: int column_key: "" ordinal_position: "12" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(10) column_default: "0" - - column: augment_2 - data_type: mediumint + - column: caston_x + data_type: int column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(10) column_default: "0" - - column: augment_3 - data_type: mediumint + - column: caston_y + data_type: int column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(10) column_default: "0" - - column: augment_4 - data_type: mediumint + - column: caston_z + data_type: int column_key: "" ordinal_position: "15" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(10) column_default: "0" - - column: augment_5 - data_type: mediumint + - column: ExtraDIChance + data_type: int column_key: "" ordinal_position: "16" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(10) column_default: "0" - - column: augment_6 - data_type: mediumint + - column: instrument_mod + data_type: int column_key: "" ordinal_position: "17" is_nullable: "NO" - column_type: mediumint(7) unsigned - column_default: "0" -bot_owner_options: - - column: owner_id + column_type: int(10) + column_default: "10" +character_corpse_items: + - column: corpse_id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "" - - column: option_type - data_type: smallint + - column: equip_slot + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: smallint(3) unsigned + column_type: int(11) unsigned column_default: "" - - column: option_value - data_type: smallint + - column: item_id + data_type: int column_key: "" ordinal_position: "3" is_nullable: "YES" - column_type: smallint(3) unsigned - column_default: "0" -bot_pet_buffs: - - column: pet_buffs_index + column_type: int(11) unsigned + column_default: "NULL" + - column: charges data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: pets_index + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "NULL" + - column: aug_1 data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) unsigned + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: spell_id + - column: aug_2 data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "NO" - column_type: int(10) unsigned + ordinal_position: "6" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: caster_level + - column: aug_3 data_type: int column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: int(10) unsigned + ordinal_position: "7" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: duration + - column: aug_4 data_type: int column_key: "" - ordinal_position: "5" - is_nullable: "NO" + ordinal_position: "8" + is_nullable: "YES" column_type: int(11) unsigned column_default: "0" -bot_pet_inventories: - - column: pet_inventories_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: pets_index + - column: aug_5 data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) unsigned + column_key: "" + ordinal_position: "9" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: item_id + - column: aug_6 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "10" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" -bot_pets: - - column: pets_index - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: spell_id - data_type: int + - column: attuned + data_type: smallint column_key: "" - ordinal_position: "2" + ordinal_position: "11" is_nullable: "NO" - column_type: int(10) unsigned + column_type: smallint(5) column_default: "0" - - column: bot_id + - column: custom_data + data_type: text + column_key: "" + ordinal_position: "12" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: ornamenticon data_type: int - column_key: UNI - ordinal_position: "3" + column_key: "" + ordinal_position: "13" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - - column: name - data_type: varchar - column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: varchar(64) - column_default: "NULL" - - column: mana + - column: ornamentidfile data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "14" is_nullable: "NO" - column_type: int(11) + column_type: int(10) unsigned column_default: "0" - - column: hp + - column: ornament_hero_model data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "15" is_nullable: "NO" - column_type: int(11) + column_type: int(10) unsigned column_default: "0" -bot_spell_casting_chances: +character_corpses: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "" - - column: spell_type_index - data_type: tinyint - column_key: MUL + - column: charid + data_type: int + column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: class_id - data_type: tinyint + - column: charname + data_type: varchar column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: stance_index - data_type: tinyint - column_key: "" + column_type: varchar(64) + column_default: '''''' + - column: zone_id + data_type: smallint + column_key: MUL ordinal_position: "4" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: smallint(5) column_default: "0" - - column: nHSND_value - data_type: tinyint - column_key: "" + - column: instance_id + data_type: smallint + column_key: MUL ordinal_position: "5" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: smallint(5) unsigned column_default: "0" - - column: pH_value - data_type: tinyint + - column: x + data_type: float column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: float column_default: "0" - - column: pS_value - data_type: tinyint + - column: "y" + data_type: float column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: float column_default: "0" - - column: pHS_value - data_type: tinyint + - column: z + data_type: float column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: float column_default: "0" - - column: pN_value - data_type: tinyint + - column: heading + data_type: float column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: float column_default: "0" - - column: pHN_value - data_type: tinyint + - column: time_of_death + data_type: datetime column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: pSN_value - data_type: tinyint + column_type: datetime + column_default: current_timestamp() + - column: guild_consent_id + data_type: int column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: pHSN_value + - column: is_rezzed data_type: tinyint column_key: "" ordinal_position: "12" - is_nullable: "NO" + is_nullable: "YES" column_type: tinyint(3) unsigned column_default: "0" - - column: pD_value + - column: is_buried data_type: tinyint column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: tinyint(3) column_default: "0" - - column: pHD_value + - column: was_at_graveyard data_type: tinyint column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: tinyint(3) column_default: "0" - - column: pSD_value + - column: is_locked data_type: tinyint column_key: "" ordinal_position: "15" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: tinyint(11) column_default: "0" - - column: pHSD_value - data_type: tinyint + - column: exp + data_type: int column_key: "" ordinal_position: "16" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: pND_value - data_type: tinyint + - column: size + data_type: int column_key: "" ordinal_position: "17" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: pHND_value - data_type: tinyint + - column: level + data_type: int column_key: "" ordinal_position: "18" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: pSND_value - data_type: tinyint + - column: race + data_type: int column_key: "" ordinal_position: "19" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: pHSND_value - data_type: tinyint + - column: gender + data_type: int column_key: "" ordinal_position: "20" - is_nullable: "NO" - column_type: tinyint(3) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" -bot_spell_settings: - - column: id + - column: class data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" + column_key: "" + ordinal_position: "21" + is_nullable: "YES" column_type: int(11) unsigned - column_default: "" - - column: bot_id + column_default: "0" + - column: deity data_type: int column_key: "" - ordinal_position: "2" - is_nullable: "NO" - column_type: int(11) + ordinal_position: "22" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: spell_id - data_type: smallint + - column: texture + data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "23" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: priority - data_type: smallint + - column: helm_texture + data_type: int column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "24" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: min_hp - data_type: smallint + - column: copper + data_type: int column_key: "" - ordinal_position: "5" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "25" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: max_hp - data_type: smallint + - column: silver + data_type: int column_key: "" - ordinal_position: "6" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "26" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: is_enabled - data_type: tinyint - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: tinyint(1) unsigned - column_default: "1" -bot_spells_entries: - - column: id + - column: gold data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" + column_key: "" + ordinal_position: "27" + is_nullable: "YES" column_type: int(11) unsigned - column_default: "" - - column: npc_spells_id + column_default: "0" + - column: platinum data_type: int column_key: "" - ordinal_position: "2" - is_nullable: "NO" - column_type: int(11) + ordinal_position: "28" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: spellid - data_type: smallint + - column: hair_color + data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "29" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: type + - column: beard_color data_type: int column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: int(10) unsigned + ordinal_position: "30" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: minlevel - data_type: tinyint + - column: eye_color_1 + data_type: int column_key: "" - ordinal_position: "5" - is_nullable: "NO" - column_type: tinyint(3) unsigned + ordinal_position: "31" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: maxlevel - data_type: tinyint - column_key: "" - ordinal_position: "6" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "255" - - column: manacost - data_type: smallint - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: smallint(5) - column_default: "-1" - - column: recast_delay + - column: eye_color_2 data_type: int column_key: "" - ordinal_position: "8" - is_nullable: "NO" - column_type: int(11) - column_default: "-1" - - column: priority - data_type: smallint - column_key: "" - ordinal_position: "9" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "32" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: resist_adjust + - column: hair_style data_type: int column_key: "" - ordinal_position: "10" - is_nullable: "NO" - column_type: int(11) + ordinal_position: "33" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: min_hp - data_type: smallint + - column: face + data_type: int column_key: "" - ordinal_position: "11" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "34" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: max_hp - data_type: smallint + - column: beard + data_type: int column_key: "" - ordinal_position: "12" - is_nullable: "NO" - column_type: smallint(5) + ordinal_position: "35" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: bucket_name - data_type: varchar - column_key: "" - ordinal_position: "13" - is_nullable: "NO" - column_type: varchar(100) - column_default: '''''' - - column: bucket_value - data_type: varchar - column_key: "" - ordinal_position: "14" - is_nullable: "NO" - column_type: varchar(100) - column_default: '''''' - - column: bucket_comparison - data_type: tinyint + - column: drakkin_heritage + data_type: int column_key: "" - ordinal_position: "15" - is_nullable: "NO" - column_type: tinyint(3) unsigned + ordinal_position: "36" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" -bot_stances: - - column: bot_id + - column: drakkin_tattoo data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" + column_key: "" + ordinal_position: "37" + is_nullable: "YES" column_type: int(11) unsigned column_default: "0" - - column: stance_id - data_type: tinyint + - column: drakkin_details + data_type: int column_key: "" - ordinal_position: "2" - is_nullable: "NO" - column_type: tinyint(3) unsigned + ordinal_position: "38" + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" -bot_timers: - - column: bot_id + - column: wc_1 data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" + column_key: "" + ordinal_position: "39" + is_nullable: "YES" column_type: int(11) unsigned column_default: "0" - - column: timer_id + - column: wc_2 data_type: int column_key: "" - ordinal_position: "2" - is_nullable: "NO" + ordinal_position: "40" + is_nullable: "YES" column_type: int(11) unsigned column_default: "0" - - column: timer_value + - column: wc_3 data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "NO" + ordinal_position: "41" + is_nullable: "YES" column_type: int(11) unsigned column_default: "0" -bug_reports: - - column: id + - column: wc_4 + data_type: int + column_key: "" + ordinal_position: "42" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: wc_5 + data_type: int + column_key: "" + ordinal_position: "43" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: wc_6 + data_type: int + column_key: "" + ordinal_position: "44" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: wc_7 + data_type: int + column_key: "" + ordinal_position: "45" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: wc_8 + data_type: int + column_key: "" + ordinal_position: "46" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: wc_9 + data_type: int + column_key: "" + ordinal_position: "47" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: rez_time + data_type: int + column_key: "" + ordinal_position: "48" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: gm_exp + data_type: int + column_key: "" + ordinal_position: "49" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: killed_by + data_type: int + column_key: "" + ordinal_position: "50" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: rezzable + data_type: tinyint + column_key: "" + ordinal_position: "51" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "0" +character_currency: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: platinum data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: zone - data_type: varchar column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: varchar(32) - column_default: '''Unknown''' - - column: client_version_id + column_type: int(11) unsigned + column_default: "0" + - column: gold data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: client_version_name - data_type: varchar + - column: silver + data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: varchar(24) - column_default: '''Unknown''' - - column: account_id + column_type: int(11) unsigned + column_default: "0" + - column: copper data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: character_id + - column: platinum_bank data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: character_name - data_type: varchar + - column: gold_bank + data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: varchar(64) - column_default: '''Unknown''' - - column: reporter_spoof - data_type: tinyint + column_type: int(11) unsigned + column_default: "0" + - column: silver_bank + data_type: int column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: tinyint(1) - column_default: "1" - - column: category_id + column_type: int(11) unsigned + column_default: "0" + - column: copper_bank data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: category_name - data_type: varchar + - column: platinum_cursor + data_type: int column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: varchar(64) - column_default: '''Other''' - - column: reporter_name - data_type: varchar + column_type: int(11) unsigned + column_default: "0" + - column: gold_cursor + data_type: int column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: varchar(64) - column_default: '''Unknown''' - - column: ui_path - data_type: varchar + column_type: int(11) unsigned + column_default: "0" + - column: silver_cursor + data_type: int column_key: "" ordinal_position: "12" is_nullable: "NO" - column_type: varchar(128) - column_default: '''Unknown''' - - column: pos_x - data_type: float + column_type: int(11) unsigned + column_default: "0" + - column: copper_cursor + data_type: int column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: pos_y - data_type: float + - column: radiant_crystals + data_type: int column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: pos_z - data_type: float + - column: career_radiant_crystals + data_type: int column_key: "" ordinal_position: "15" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: heading + - column: ebon_crystals data_type: int column_key: "" ordinal_position: "16" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: time_played + - column: career_ebon_crystals data_type: int column_key: "" ordinal_position: "17" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: target_id +character_data: + - column: id data_type: int - column_key: "" - ordinal_position: "18" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned + column_default: "" + - column: account_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: target_name + - column: name + data_type: varchar + column_key: UNI + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: last_name data_type: varchar column_key: "" - ordinal_position: "19" + ordinal_position: "4" is_nullable: "NO" column_type: varchar(64) - column_default: '''Unknown''' - - column: optional_info_mask + column_default: '''''' + - column: title + data_type: varchar + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: suffix + data_type: varchar + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: zone_id data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "7" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: _can_duplicate - data_type: tinyint + - column: zone_instance + data_type: int column_key: "" - ordinal_position: "21" + ordinal_position: "8" is_nullable: "NO" - column_type: tinyint(1) + column_type: int(11) unsigned column_default: "0" - - column: _crash_bug - data_type: tinyint + - column: "y" + data_type: float column_key: "" - ordinal_position: "22" + ordinal_position: "9" is_nullable: "NO" - column_type: tinyint(1) + column_type: float column_default: "0" - - column: _target_info - data_type: tinyint + - column: x + data_type: float column_key: "" - ordinal_position: "23" + ordinal_position: "10" is_nullable: "NO" - column_type: tinyint(1) + column_type: float column_default: "0" - - column: _character_flags - data_type: tinyint + - column: z + data_type: float column_key: "" - ordinal_position: "24" + ordinal_position: "11" is_nullable: "NO" - column_type: tinyint(1) + column_type: float column_default: "0" - - column: _unknown_value + - column: heading + data_type: float + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: gender data_type: tinyint column_key: "" - ordinal_position: "25" + ordinal_position: "13" is_nullable: "NO" - column_type: tinyint(1) + column_type: tinyint(11) unsigned column_default: "0" - - column: bug_report - data_type: varchar + - column: race + data_type: smallint column_key: "" - ordinal_position: "26" + ordinal_position: "14" is_nullable: "NO" - column_type: varchar(1024) - column_default: '''''' - - column: system_info - data_type: varchar - column_key: "" - ordinal_position: "27" - is_nullable: "NO" - column_type: varchar(1024) - column_default: '''''' - - column: report_datetime - data_type: datetime - column_key: "" - ordinal_position: "28" - is_nullable: "NO" - column_type: datetime - column_default: current_timestamp() - - column: bug_status + column_type: smallint(11) unsigned + column_default: "0" + - column: class data_type: tinyint column_key: "" - ordinal_position: "29" + ordinal_position: "15" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: tinyint(11) unsigned column_default: "0" - - column: last_review - data_type: datetime + - column: level + data_type: int column_key: "" - ordinal_position: "30" + ordinal_position: "16" is_nullable: "NO" - column_type: datetime - column_default: current_timestamp() - - column: last_reviewer - data_type: varchar + column_type: int(11) unsigned + column_default: "0" + - column: deity + data_type: int column_key: "" - ordinal_position: "31" + ordinal_position: "17" is_nullable: "NO" - column_type: varchar(64) - column_default: '''None''' - - column: reviewer_notes - data_type: varchar + column_type: int(11) unsigned + column_default: "0" + - column: birthday + data_type: int column_key: "" - ordinal_position: "32" + ordinal_position: "18" is_nullable: "NO" - column_type: varchar(1024) - column_default: '''''' -bugs: - - column: id + column_type: int(11) unsigned + column_default: "0" + - column: last_login data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "19" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: zone - data_type: varchar + column_default: "0" + - column: time_played + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "20" is_nullable: "NO" - column_type: varchar(32) - column_default: "" - - column: name - data_type: varchar + column_type: int(11) unsigned + column_default: "0" + - column: level2 + data_type: tinyint column_key: "" - ordinal_position: "3" + ordinal_position: "21" is_nullable: "NO" - column_type: varchar(64) - column_default: "" - - column: ui - data_type: varchar + column_type: tinyint(11) unsigned + column_default: "0" + - column: anon + data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "22" is_nullable: "NO" - column_type: varchar(128) - column_default: "" - - column: x - data_type: float + column_type: tinyint(11) unsigned + column_default: "0" + - column: gm + data_type: tinyint column_key: "" - ordinal_position: "5" + ordinal_position: "23" is_nullable: "NO" - column_type: float + column_type: tinyint(11) unsigned column_default: "0" - - column: "y" - data_type: float + - column: face + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "24" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: z - data_type: float + - column: hair_color + data_type: tinyint column_key: "" - ordinal_position: "7" + ordinal_position: "25" is_nullable: "NO" - column_type: float + column_type: tinyint(11) unsigned column_default: "0" - - column: type - data_type: varchar + - column: hair_style + data_type: tinyint column_key: "" - ordinal_position: "8" + ordinal_position: "26" is_nullable: "NO" - column_type: varchar(64) - column_default: "" - - column: flag + column_type: tinyint(11) unsigned + column_default: "0" + - column: beard data_type: tinyint column_key: "" - ordinal_position: "9" + ordinal_position: "27" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "" - - column: target - data_type: varchar - column_key: "" - ordinal_position: "10" - is_nullable: "YES" - column_type: varchar(64) - column_default: "NULL" - - column: bug - data_type: varchar + column_type: tinyint(11) unsigned + column_default: "0" + - column: beard_color + data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "28" is_nullable: "NO" - column_type: varchar(1024) - column_default: "" - - column: date - data_type: date + column_type: tinyint(11) unsigned + column_default: "0" + - column: eye_color_1 + data_type: tinyint column_key: "" - ordinal_position: "12" + ordinal_position: "29" is_nullable: "NO" - column_type: date - column_default: "" - - column: status + column_type: tinyint(11) unsigned + column_default: "0" + - column: eye_color_2 data_type: tinyint column_key: "" - ordinal_position: "13" + ordinal_position: "30" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: tinyint(11) unsigned column_default: "0" -buyer: - - column: charid + - column: drakkin_heritage data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "31" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: buyslot + - column: drakkin_tattoo data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "32" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: itemid + - column: drakkin_details data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "33" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: itemname - data_type: varchar + - column: ability_time_seconds + data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "34" is_nullable: "NO" - column_type: varchar(65) - column_default: '''''' - - column: quantity - data_type: int + column_type: tinyint(11) unsigned + column_default: "0" + - column: ability_number + data_type: tinyint column_key: "" - ordinal_position: "5" + ordinal_position: "35" is_nullable: "NO" - column_type: int(11) + column_type: tinyint(11) unsigned column_default: "0" - - column: price - data_type: int + - column: ability_time_minutes + data_type: tinyint column_key: "" - ordinal_position: "6" + ordinal_position: "36" is_nullable: "NO" - column_type: int(11) + column_type: tinyint(11) unsigned column_default: "0" -char_create_combinations: - - column: allocation_id - data_type: int + - column: ability_time_hours + data_type: tinyint column_key: "" - ordinal_position: "1" + ordinal_position: "37" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: race + column_type: tinyint(11) unsigned + column_default: "0" + - column: exp data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "38" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: class - data_type: int - column_key: PRI - ordinal_position: "3" + column_type: int(11) unsigned + column_default: "0" + - column: exp_enabled + data_type: tinyint + column_key: "" + ordinal_position: "39" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: deity + column_type: tinyint(1) unsigned + column_default: "1" + - column: aa_points_spent data_type: int - column_key: PRI - ordinal_position: "4" + column_key: "" + ordinal_position: "40" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: start_zone - data_type: int - column_key: PRI - ordinal_position: "5" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: expansions_req + column_type: int(11) unsigned + column_default: "0" + - column: aa_exp data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "41" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) unsigned column_default: "0" -char_create_point_allocations: - - column: id + - column: aa_points data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "42" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_str + column_type: int(11) unsigned + column_default: "0" + - column: group_leadership_exp data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "43" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_sta + column_type: int(11) unsigned + column_default: "0" + - column: raid_leadership_exp data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "44" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_dex + column_type: int(11) unsigned + column_default: "0" + - column: group_leadership_points data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "45" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_agi + column_type: int(11) unsigned + column_default: "0" + - column: raid_leadership_points data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "46" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_int + column_type: int(11) unsigned + column_default: "0" + - column: points data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "47" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_wis + column_type: int(11) unsigned + column_default: "0" + - column: cur_hp data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "48" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: base_cha + column_type: int(11) unsigned + column_default: "0" + - column: mana data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "49" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_str + column_type: int(11) unsigned + column_default: "0" + - column: endurance data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "50" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_sta + column_type: int(11) unsigned + column_default: "0" + - column: intoxication data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "51" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_dex + column_type: int(11) unsigned + column_default: "0" + - column: str data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "52" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_agi + column_type: int(11) unsigned + column_default: "0" + - column: sta data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "53" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_int + column_type: int(11) unsigned + column_default: "0" + - column: cha data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "54" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_wis + column_type: int(11) unsigned + column_default: "0" + - column: dex data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "55" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: alloc_cha + column_type: int(11) unsigned + column_default: "0" + - column: int data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "56" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -char_recipe_list: - - column: char_id + column_type: int(11) unsigned + column_default: "0" + - column: agi data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "57" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: recipe_id + column_type: int(11) unsigned + column_default: "0" + - column: wis data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "58" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: madecount + column_type: int(11) unsigned + column_default: "0" + - column: extra_haste data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "59" is_nullable: "NO" column_type: int(11) column_default: "0" -character_activities: - - column: charid + - column: zone_change_count data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "60" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: taskid + - column: toxicity data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "61" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: activityid + - column: hunger_level data_type: int - column_key: PRI - ordinal_position: "3" + column_key: "" + ordinal_position: "62" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: donecount + - column: thirst_level data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "63" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: completed - data_type: tinyint + - column: ability_up + data_type: int column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: tinyint(1) + ordinal_position: "64" + is_nullable: "NO" + column_type: int(11) unsigned column_default: "0" -character_alt_currency: - - column: char_id + - column: ldon_points_guk data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "65" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: currency_id + column_type: int(11) unsigned + column_default: "0" + - column: ldon_points_mir data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "66" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: amount + column_type: int(11) unsigned + column_default: "0" + - column: ldon_points_mmc data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "67" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" -character_alternate_abilities: - - column: id + column_type: int(11) unsigned + column_default: "0" + - column: ldon_points_ruj data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "68" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: aa_id - data_type: smallint - column_key: PRI - ordinal_position: "2" + - column: ldon_points_tak + data_type: int + column_key: "" + ordinal_position: "69" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: aa_value - data_type: smallint + - column: ldon_points_available + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "70" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: charges - data_type: smallint + - column: tribute_time_remaining + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "71" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" -character_auras: - - column: id + - column: career_tribute_points data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) - column_default: "" - - column: slot - data_type: tinyint - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "72" is_nullable: "NO" - column_type: tinyint(10) - column_default: "" - - column: spell_id + column_type: int(11) unsigned + column_default: "0" + - column: tribute_points data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "73" is_nullable: "NO" - column_type: int(10) - column_default: "" -character_bandolier: - - column: id + column_type: int(11) unsigned + column_default: "0" + - column: tribute_active data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "74" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: bandolier_id + - column: pvp_status data_type: tinyint - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "75" is_nullable: "NO" column_type: tinyint(11) unsigned column_default: "0" - - column: bandolier_slot - data_type: tinyint - column_key: PRI - ordinal_position: "3" + - column: pvp_kills + data_type: int + column_key: "" + ordinal_position: "76" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: item_id + - column: pvp_deaths data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "77" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: icon + - column: pvp_current_points data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "78" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: bandolier_name - data_type: varchar + - column: pvp_career_points + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "79" is_nullable: "NO" - column_type: varchar(32) - column_default: '''0''' -character_bind: - - column: id + column_type: int(11) unsigned + column_default: "0" + - column: pvp_best_kill_streak data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "80" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: slot + column_default: "0" + - column: pvp_worst_death_streak data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "81" is_nullable: "NO" - column_type: int(4) + column_type: int(11) unsigned column_default: "0" - - column: zone_id - data_type: smallint + - column: pvp_current_kill_streak + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "82" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: instance_id - data_type: mediumint + - column: pvp2 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "83" is_nullable: "NO" - column_type: mediumint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: x - data_type: float + - column: pvp_type + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "84" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: "y" - data_type: float + - column: show_helm + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "85" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned column_default: "0" - - column: z - data_type: float + - column: group_auto_consent + data_type: tinyint column_key: "" - ordinal_position: "7" + ordinal_position: "86" is_nullable: "NO" - column_type: float + column_type: tinyint(11) unsigned column_default: "0" - - column: heading - data_type: float + - column: raid_auto_consent + data_type: tinyint column_key: "" - ordinal_position: "8" + ordinal_position: "87" is_nullable: "NO" - column_type: float + column_type: tinyint(11) unsigned column_default: "0" -character_buffs: - - column: character_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: slot_id + - column: guild_auto_consent data_type: tinyint - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "" - - column: spell_id - data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "88" is_nullable: "NO" - column_type: smallint(10) unsigned - column_default: "" - - column: caster_level + column_type: tinyint(11) unsigned + column_default: "0" + - column: leadership_exp_on data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "89" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "" - - column: caster_name - data_type: varchar + column_type: tinyint(11) unsigned + column_default: "0" + - column: RestTimer + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "90" is_nullable: "NO" - column_type: varchar(64) - column_default: "" - - column: ticsremaining + column_type: int(11) unsigned + column_default: "0" + - column: air_remaining data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "91" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: counters + column_type: int(11) unsigned + column_default: "0" + - column: autosplit_enabled data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "92" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: numhits - data_type: int + column_type: int(11) unsigned + column_default: "0" + - column: lfp + data_type: tinyint column_key: "" - ordinal_position: "8" + ordinal_position: "93" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: melee_rune - data_type: int + column_type: tinyint(1) unsigned + column_default: "0" + - column: lfg + data_type: tinyint column_key: "" - ordinal_position: "9" + ordinal_position: "94" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: magic_rune - data_type: int + column_type: tinyint(1) unsigned + column_default: "0" + - column: mailkey + data_type: char column_key: "" - ordinal_position: "10" + ordinal_position: "95" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: persistent + column_type: char(16) + column_default: '''''' + - column: xtargets data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "96" is_nullable: "NO" column_type: tinyint(3) unsigned - column_default: "" - - column: dot_rune - data_type: int + column_default: "5" + - column: firstlogon + data_type: tinyint column_key: "" - ordinal_position: "12" + ordinal_position: "97" is_nullable: "NO" - column_type: int(10) + column_type: tinyint(3) column_default: "0" - - column: caston_x + - column: e_aa_effects data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "98" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: caston_y + - column: e_percent_to_aa data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "99" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: caston_z + - column: e_expended_aa_spent data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "100" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: ExtraDIChance + - column: aa_points_spent_old data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "101" is_nullable: "NO" - column_type: int(10) + column_type: int(11) unsigned column_default: "0" - - column: instrument_mod + - column: aa_points_old data_type: int column_key: "" - ordinal_position: "17" - is_nullable: "NO" - column_type: int(10) - column_default: "10" -character_corpse_items: - - column: corpse_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: equip_slot - data_type: int - column_key: PRI - ordinal_position: "2" + ordinal_position: "102" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: item_id + column_default: "0" + - column: e_last_invsnapshot data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "YES" + ordinal_position: "103" + is_nullable: "NO" column_type: int(11) unsigned - column_default: "NULL" - - column: charges - data_type: int + column_default: "0" + - column: deleted_at + data_type: datetime column_key: "" - ordinal_position: "4" + ordinal_position: "104" is_nullable: "YES" - column_type: int(11) unsigned + column_type: datetime column_default: "NULL" - - column: aug_1 +character_disciplines: + - column: id data_type: int - column_key: "" - ordinal_position: "5" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: aug_2 - data_type: int - column_key: "" - ordinal_position: "6" - is_nullable: "YES" - column_type: int(11) unsigned + - column: slot_id + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: aug_3 - data_type: int + - column: disc_id + data_type: smallint column_key: "" - ordinal_position: "7" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: aug_4 +character_enabledtasks: + - column: charid data_type: int - column_key: "" - ordinal_position: "8" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: aug_5 + - column: taskid data_type: int - column_key: "" - ordinal_position: "9" - is_nullable: "YES" + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: aug_6 +character_exp_modifiers: + - column: character_id data_type: int - column_key: "" - ordinal_position: "10" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(11) - column_default: "0" - - column: attuned - data_type: smallint + column_default: "" + - column: zone_id + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: instance_version + data_type: int + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "-1" + - column: aa_modifier + data_type: float column_key: "" - ordinal_position: "11" + ordinal_position: "4" is_nullable: "NO" - column_type: smallint(5) - column_default: "0" - - column: custom_data - data_type: text + column_type: float + column_default: "" + - column: exp_modifier + data_type: float column_key: "" - ordinal_position: "12" - is_nullable: "YES" - column_type: text - column_default: "NULL" - - column: ornamenticon + ordinal_position: "5" + is_nullable: "NO" + column_type: float + column_default: "" +character_expedition_lockouts: + - column: id data_type: int - column_key: "" - ordinal_position: "13" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(10) unsigned - column_default: "0" - - column: ornamentidfile + column_default: "" + - column: character_id data_type: int - column_key: "" - ordinal_position: "14" + column_key: MUL + ordinal_position: "2" is_nullable: "NO" column_type: int(10) unsigned - column_default: "0" - - column: ornament_hero_model + column_default: "" + - column: expedition_name + data_type: varchar + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(128) + column_default: "" + - column: event_name + data_type: varchar + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: varchar(256) + column_default: "" + - column: expire_time + data_type: datetime + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: datetime + column_default: current_timestamp() + - column: duration data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "6" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" -character_corpses: + - column: from_expedition_uuid + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: varchar(36) + column_default: "" +character_inspect_messages: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned + column_default: "0" + - column: inspect_message + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(255) + column_default: '''''' +character_instance_safereturns: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "" - - column: charid + - column: character_id data_type: int - column_key: "" + column_key: UNI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: charname - data_type: varchar + column_type: int(10) unsigned + column_default: "" + - column: instance_zone_id + data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: zone_id - data_type: smallint - column_key: MUL + column_type: int(11) + column_default: "0" + - column: instance_id + data_type: int + column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) column_default: "0" - - column: instance_id - data_type: smallint - column_key: MUL + - column: safe_zone_id + data_type: int + column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(11) column_default: "0" - - column: x + - column: safe_x data_type: float column_key: "" ordinal_position: "6" is_nullable: "NO" column_type: float column_default: "0" - - column: "y" + - column: safe_y data_type: float column_key: "" ordinal_position: "7" is_nullable: "NO" column_type: float column_default: "0" - - column: z + - column: safe_z data_type: float column_key: "" ordinal_position: "8" is_nullable: "NO" column_type: float column_default: "0" - - column: heading + - column: safe_heading data_type: float column_key: "" ordinal_position: "9" is_nullable: "NO" column_type: float column_default: "0" - - column: time_of_death - data_type: datetime - column_key: "" - ordinal_position: "10" - is_nullable: "NO" - column_type: datetime - column_default: '''0000-00-00 00:00:00''' - - column: guild_consent_id +character_item_recast: + - column: id data_type: int - column_key: "" - ordinal_position: "11" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: is_rezzed - data_type: tinyint - column_key: "" - ordinal_position: "12" - is_nullable: "YES" - column_type: tinyint(3) unsigned - column_default: "0" - - column: is_buried - data_type: tinyint - column_key: "" - ordinal_position: "13" - is_nullable: "NO" - column_type: tinyint(3) - column_default: "0" - - column: was_at_graveyard - data_type: tinyint - column_key: "" - ordinal_position: "14" - is_nullable: "NO" - column_type: tinyint(3) - column_default: "0" - - column: is_locked - data_type: tinyint - column_key: "" - ordinal_position: "15" - is_nullable: "YES" - column_type: tinyint(11) - column_default: "0" - - column: exp + - column: recast_type data_type: int - column_key: "" - ordinal_position: "16" - is_nullable: "YES" + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: size + - column: timestamp data_type: int column_key: "" - ordinal_position: "17" - is_nullable: "YES" + ordinal_position: "3" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: level +character_languages: + - column: id data_type: int - column_key: "" - ordinal_position: "18" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned + column_default: "" + - column: lang_id + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: race - data_type: int + - column: value + data_type: smallint column_key: "" - ordinal_position: "19" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: gender +character_leadership_abilities: + - column: id data_type: int - column_key: "" - ordinal_position: "20" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: class - data_type: int + - column: slot + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned + column_default: "0" + - column: rank + data_type: smallint column_key: "" - ordinal_position: "21" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: deity +character_material: + - column: id data_type: int - column_key: "" - ordinal_position: "22" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned + column_default: "" + - column: slot + data_type: tinyint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: tinyint(11) unsigned column_default: "0" - - column: texture - data_type: int + - column: blue + data_type: tinyint column_key: "" - ordinal_position: "23" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(11) unsigned column_default: "0" - - column: helm_texture - data_type: int + - column: green + data_type: tinyint column_key: "" - ordinal_position: "24" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(11) unsigned column_default: "0" - - column: copper - data_type: int + - column: red + data_type: tinyint column_key: "" - ordinal_position: "25" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "5" + is_nullable: "NO" + column_type: tinyint(11) unsigned column_default: "0" - - column: silver - data_type: int + - column: use_tint + data_type: tinyint column_key: "" - ordinal_position: "26" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "6" + is_nullable: "NO" + column_type: tinyint(11) unsigned column_default: "0" - - column: gold + - column: color data_type: int column_key: "" - ordinal_position: "27" - is_nullable: "YES" + ordinal_position: "7" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: platinum +character_memmed_spells: + - column: id data_type: int - column_key: "" - ordinal_position: "28" - is_nullable: "YES" + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: hair_color - data_type: int + - column: slot_id + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned + column_default: "0" + - column: spell_id + data_type: smallint column_key: "" - ordinal_position: "29" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: beard_color +character_parcels: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: char_id data_type: int column_key: "" - ordinal_position: "30" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: eye_color_1 + - column: item_id data_type: int column_key: "" - ordinal_position: "31" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "3" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: eye_color_2 + - column: aug_slot_1 data_type: int column_key: "" - ordinal_position: "32" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "4" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: hair_style + - column: aug_slot_2 data_type: int column_key: "" - ordinal_position: "33" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "5" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: face + - column: aug_slot_3 data_type: int column_key: "" - ordinal_position: "34" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: beard + - column: aug_slot_4 data_type: int column_key: "" - ordinal_position: "35" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "7" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: drakkin_heritage + - column: aug_slot_5 data_type: int column_key: "" - ordinal_position: "36" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "8" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: drakkin_tattoo + - column: aug_slot_6 data_type: int column_key: "" - ordinal_position: "37" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "9" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: drakkin_details + - column: slot_id data_type: int - column_key: "" - ordinal_position: "38" - is_nullable: "YES" - column_type: int(11) unsigned + column_key: MUL + ordinal_position: "10" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: wc_1 + - column: quantity data_type: int column_key: "" - ordinal_position: "39" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_2 - data_type: int - column_key: "" - ordinal_position: "40" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_3 - data_type: int - column_key: "" - ordinal_position: "41" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_4 - data_type: int - column_key: "" - ordinal_position: "42" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_5 - data_type: int - column_key: "" - ordinal_position: "43" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_6 - data_type: int - column_key: "" - ordinal_position: "44" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "11" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" - - column: wc_7 - data_type: int + - column: from_name + data_type: varchar column_key: "" - ordinal_position: "45" + ordinal_position: "12" is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_8 - data_type: int + column_type: varchar(64) + column_default: "NULL" + - column: note + data_type: varchar column_key: "" - ordinal_position: "46" + ordinal_position: "13" is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: wc_9 - data_type: int + column_type: varchar(1024) + column_default: "NULL" + - column: sent_date + data_type: datetime column_key: "" - ordinal_position: "47" + ordinal_position: "14" is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" -character_currency: + column_type: datetime + column_default: "NULL" +character_parcels_containers: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: platinum + column_type: int(10) unsigned + column_default: "" + - column: parcels_id data_type: int - column_key: "" + column_key: MUL ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: gold + - column: slot_id data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: silver + - column: item_id data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: copper + - column: aug_slot_1 data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: platinum_bank + - column: aug_slot_2 data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: gold_bank + - column: aug_slot_3 data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: silver_bank + - column: aug_slot_4 data_type: int column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: copper_bank + - column: aug_slot_5 data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: platinum_cursor + - column: aug_slot_6 data_type: int column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: gold_cursor + - column: quantity data_type: int column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: silver_cursor +character_peqzone_flags: + - column: id data_type: int - column_key: "" - ordinal_position: "12" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: copper_cursor + - column: zone_id + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +character_pet_buffs: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: pet + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: slot + data_type: int + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: spell_id data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "4" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) + column_default: "" + - column: caster_level + data_type: tinyint + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: tinyint(4) column_default: "0" - - column: radiant_crystals + - column: castername + data_type: varchar + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: ticsremaining data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "7" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: career_radiant_crystals + - column: counters data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "8" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: ebon_crystals + - column: numhits data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "9" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: career_ebon_crystals + - column: rune data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "10" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" -character_data: - - column: id + - column: instrument_mod + data_type: tinyint + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "10" +character_pet_info: + - column: char_id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "" - - column: account_id + - column: pet data_type: int - column_key: MUL + column_key: PRI ordinal_position: "2" is_nullable: "NO" column_type: int(11) - column_default: "0" - - column: name + column_default: "" + - column: petname data_type: varchar - column_key: UNI + column_key: "" ordinal_position: "3" is_nullable: "NO" column_type: varchar(64) column_default: '''''' - - column: last_name - data_type: varchar + - column: petpower + data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: title - data_type: varchar + column_type: int(11) + column_default: "0" + - column: spell_id + data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: suffix - data_type: varchar + column_type: int(11) + column_default: "0" + - column: hp + data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: zone_id + column_type: int(11) + column_default: "0" + - column: mana data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: zone_instance - data_type: int + - column: size + data_type: float column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: int(11) unsigned + column_type: float column_default: "0" - - column: "y" - data_type: float + - column: taunting + data_type: tinyint column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: float - column_default: "0" - - column: x - data_type: float - column_key: "" - ordinal_position: "10" + column_type: tinyint(1) + column_default: "1" +character_pet_inventory: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: float - column_default: "0" - - column: z - data_type: float - column_key: "" - ordinal_position: "11" + column_type: int(11) + column_default: "" + - column: pet + data_type: int + column_key: PRI + ordinal_position: "2" is_nullable: "NO" - column_type: float - column_default: "0" - - column: heading - data_type: float - column_key: "" - ordinal_position: "12" + column_type: int(11) + column_default: "" + - column: slot + data_type: int + column_key: PRI + ordinal_position: "3" is_nullable: "NO" - column_type: float - column_default: "0" - - column: gender - data_type: tinyint + column_type: int(11) + column_default: "" + - column: item_id + data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "4" is_nullable: "NO" - column_type: tinyint(11) unsigned - column_default: "0" - - column: race - data_type: smallint - column_key: "" - ordinal_position: "14" + column_type: int(11) + column_default: "" +character_potionbelt: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: class + - column: potion_id data_type: tinyint - column_key: "" - ordinal_position: "15" + column_key: PRI + ordinal_position: "2" is_nullable: "NO" column_type: tinyint(11) unsigned column_default: "0" - - column: level + - column: item_id data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "3" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: deity + - column: icon data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "4" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: birthday +character_skills: + - column: id data_type: int - column_key: "" - ordinal_position: "18" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned + column_default: "" + - column: skill_id + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: last_login - data_type: int + - column: value + data_type: smallint column_key: "" - ordinal_position: "19" + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(11) unsigned column_default: "0" - - column: time_played +character_spells: + - column: id data_type: int - column_key: "" - ordinal_position: "20" + column_key: PRI + ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned + column_default: "" + - column: slot_id + data_type: smallint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(11) unsigned column_default: "0" - - column: level2 - data_type: tinyint + - column: spell_id + data_type: smallint column_key: "" - ordinal_position: "21" + ordinal_position: "3" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: smallint(11) unsigned column_default: "0" - - column: anon - data_type: tinyint - column_key: "" - ordinal_position: "22" +character_stats_record: + - column: character_id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: int(11) + column_default: "" + - column: name + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: status + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: gm - data_type: tinyint + - column: level + data_type: int column_key: "" - ordinal_position: "23" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "4" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: face + - column: class data_type: int column_key: "" - ordinal_position: "24" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "5" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: hair_color - data_type: tinyint + - column: race + data_type: int column_key: "" - ordinal_position: "25" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "6" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: hair_style - data_type: tinyint + - column: aa_points + data_type: int column_key: "" - ordinal_position: "26" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "7" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: beard - data_type: tinyint + - column: hp + data_type: bigint column_key: "" - ordinal_position: "27" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "8" + is_nullable: "YES" + column_type: bigint(20) column_default: "0" - - column: beard_color - data_type: tinyint + - column: mana + data_type: bigint column_key: "" - ordinal_position: "28" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "9" + is_nullable: "YES" + column_type: bigint(20) column_default: "0" - - column: eye_color_1 - data_type: tinyint + - column: endurance + data_type: bigint column_key: "" - ordinal_position: "29" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "10" + is_nullable: "YES" + column_type: bigint(20) column_default: "0" - - column: eye_color_2 - data_type: tinyint + - column: ac + data_type: int column_key: "" - ordinal_position: "30" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "11" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: drakkin_heritage + - column: strength data_type: int column_key: "" - ordinal_position: "31" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "12" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: drakkin_tattoo + - column: stamina data_type: int column_key: "" - ordinal_position: "32" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "13" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: drakkin_details + - column: dexterity data_type: int column_key: "" - ordinal_position: "33" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "14" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ability_time_seconds - data_type: tinyint + - column: agility + data_type: int column_key: "" - ordinal_position: "34" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "15" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ability_number - data_type: tinyint + - column: intelligence + data_type: int column_key: "" - ordinal_position: "35" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "16" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ability_time_minutes - data_type: tinyint + - column: wisdom + data_type: int column_key: "" - ordinal_position: "36" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "17" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ability_time_hours - data_type: tinyint + - column: charisma + data_type: int column_key: "" - ordinal_position: "37" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "18" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: exp + - column: magic_resist data_type: int column_key: "" - ordinal_position: "38" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "19" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: exp_enabled - data_type: tinyint - column_key: "" - ordinal_position: "39" - is_nullable: "NO" - column_type: tinyint(1) unsigned - column_default: "1" - - column: aa_points_spent + - column: fire_resist data_type: int column_key: "" - ordinal_position: "40" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "20" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: aa_exp + - column: cold_resist data_type: int column_key: "" - ordinal_position: "41" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "21" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: aa_points + - column: poison_resist data_type: int column_key: "" - ordinal_position: "42" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "22" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: group_leadership_exp + - column: disease_resist data_type: int column_key: "" - ordinal_position: "43" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "23" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: raid_leadership_exp + - column: corruption_resist data_type: int column_key: "" - ordinal_position: "44" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "24" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: group_leadership_points + - column: heroic_strength data_type: int column_key: "" - ordinal_position: "45" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "25" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: raid_leadership_points + - column: heroic_stamina data_type: int column_key: "" - ordinal_position: "46" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "26" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: points + - column: heroic_dexterity data_type: int column_key: "" - ordinal_position: "47" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "27" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: cur_hp + - column: heroic_agility data_type: int column_key: "" - ordinal_position: "48" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "28" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: mana + - column: heroic_intelligence data_type: int column_key: "" - ordinal_position: "49" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "29" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: endurance + - column: heroic_wisdom data_type: int column_key: "" - ordinal_position: "50" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "30" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: intoxication + - column: heroic_charisma data_type: int column_key: "" - ordinal_position: "51" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "31" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: str + - column: heroic_magic_resist data_type: int column_key: "" - ordinal_position: "52" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "32" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: sta + - column: heroic_fire_resist data_type: int column_key: "" - ordinal_position: "53" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "33" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: cha + - column: heroic_cold_resist data_type: int column_key: "" - ordinal_position: "54" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "34" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: dex + - column: heroic_poison_resist data_type: int column_key: "" - ordinal_position: "55" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "35" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: int + - column: heroic_disease_resist data_type: int column_key: "" - ordinal_position: "56" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "36" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: agi + - column: heroic_corruption_resist data_type: int column_key: "" - ordinal_position: "57" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "37" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: wis + - column: haste data_type: int column_key: "" - ordinal_position: "58" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "38" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: zone_change_count + - column: accuracy data_type: int column_key: "" - ordinal_position: "59" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "39" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: toxicity + - column: attack data_type: int column_key: "" - ordinal_position: "60" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "40" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: hunger_level + - column: avoidance data_type: int column_key: "" - ordinal_position: "61" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "41" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: thirst_level + - column: clairvoyance data_type: int column_key: "" - ordinal_position: "62" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "42" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ability_up + - column: combat_effects data_type: int column_key: "" - ordinal_position: "63" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "43" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_guk + - column: damage_shield_mitigation data_type: int column_key: "" - ordinal_position: "64" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "44" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_mir + - column: damage_shield data_type: int column_key: "" - ordinal_position: "65" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "45" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_mmc + - column: dot_shielding data_type: int column_key: "" - ordinal_position: "66" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "46" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_ruj + - column: hp_regen data_type: int column_key: "" - ordinal_position: "67" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "47" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_tak + - column: mana_regen data_type: int column_key: "" - ordinal_position: "68" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "48" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: ldon_points_available + - column: endurance_regen data_type: int column_key: "" - ordinal_position: "69" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "49" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: tribute_time_remaining + - column: shielding data_type: int column_key: "" - ordinal_position: "70" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "50" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: career_tribute_points + - column: spell_damage data_type: int column_key: "" - ordinal_position: "71" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "51" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: tribute_points + - column: spell_shielding data_type: int column_key: "" - ordinal_position: "72" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "52" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: tribute_active + - column: strikethrough data_type: int column_key: "" - ordinal_position: "73" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: pvp_status - data_type: tinyint - column_key: "" - ordinal_position: "74" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "53" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_kills + - column: stun_resist data_type: int column_key: "" - ordinal_position: "75" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "54" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_deaths + - column: backstab data_type: int column_key: "" - ordinal_position: "76" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "55" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_current_points + - column: wind data_type: int column_key: "" - ordinal_position: "77" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "56" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_career_points + - column: brass data_type: int column_key: "" - ordinal_position: "78" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "57" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_best_kill_streak + - column: string data_type: int column_key: "" - ordinal_position: "79" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "58" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_worst_death_streak + - column: percussion data_type: int column_key: "" - ordinal_position: "80" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "59" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_current_kill_streak + - column: singing data_type: int column_key: "" - ordinal_position: "81" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "60" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp2 + - column: baking data_type: int column_key: "" - ordinal_position: "82" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "61" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: pvp_type + - column: alchemy data_type: int column_key: "" - ordinal_position: "83" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "62" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: show_helm + - column: tailoring data_type: int column_key: "" - ordinal_position: "84" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "63" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: group_auto_consent - data_type: tinyint + - column: blacksmithing + data_type: int column_key: "" - ordinal_position: "85" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "64" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: raid_auto_consent - data_type: tinyint + - column: fletching + data_type: int column_key: "" - ordinal_position: "86" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "65" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: guild_auto_consent - data_type: tinyint + - column: brewing + data_type: int column_key: "" - ordinal_position: "87" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "66" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: leadership_exp_on - data_type: tinyint + - column: jewelry + data_type: int column_key: "" - ordinal_position: "88" - is_nullable: "NO" - column_type: tinyint(11) unsigned + ordinal_position: "67" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: RestTimer + - column: pottery data_type: int column_key: "" - ordinal_position: "89" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "68" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: air_remaining + - column: research data_type: int column_key: "" - ordinal_position: "90" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "69" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: autosplit_enabled + - column: alcohol data_type: int column_key: "" - ordinal_position: "91" - is_nullable: "NO" - column_type: int(11) unsigned + ordinal_position: "70" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: lfp - data_type: tinyint + - column: fishing + data_type: int column_key: "" - ordinal_position: "92" - is_nullable: "NO" - column_type: tinyint(1) unsigned + ordinal_position: "71" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: lfg - data_type: tinyint + - column: tinkering + data_type: int column_key: "" - ordinal_position: "93" - is_nullable: "NO" - column_type: tinyint(1) unsigned + ordinal_position: "72" + is_nullable: "YES" + column_type: int(11) column_default: "0" - - column: mailkey - data_type: char - column_key: "" - ordinal_position: "94" - is_nullable: "NO" - column_type: char(16) - column_default: '''''' - - column: xtargets - data_type: tinyint + - column: created_at + data_type: datetime column_key: "" - ordinal_position: "95" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "5" - - column: firstlogon - data_type: tinyint + ordinal_position: "73" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: updated_at + data_type: datetime column_key: "" - ordinal_position: "96" + ordinal_position: "74" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" +character_task_timers: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(3) - column_default: "0" - - column: e_aa_effects + column_type: int(10) unsigned + column_default: "" + - column: character_id data_type: int - column_key: "" - ordinal_position: "97" + column_key: MUL + ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: e_percent_to_aa + - column: task_id data_type: int - column_key: "" - ordinal_position: "98" + column_key: MUL + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: e_expended_aa_spent + - column: timer_type data_type: int column_key: "" - ordinal_position: "99" + ordinal_position: "4" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: aa_points_spent_old + - column: timer_group data_type: int column_key: "" - ordinal_position: "100" + ordinal_position: "5" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: aa_points_old - data_type: int + - column: expire_time + data_type: datetime column_key: "" - ordinal_position: "101" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: e_last_invsnapshot - data_type: int - column_key: "" - ordinal_position: "102" + ordinal_position: "6" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: deleted_at - data_type: datetime - column_key: "" - ordinal_position: "103" - is_nullable: "YES" column_type: datetime - column_default: "NULL" -character_disciplines: - - column: id + column_default: current_timestamp() +character_tasks: + - column: charid data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: slot_id - data_type: smallint + - column: taskid + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: disc_id - data_type: smallint + - column: slot + data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" -character_enabledtasks: - - column: charid - data_type: int - column_key: PRI - ordinal_position: "1" + - column: type + data_type: tinyint + column_key: "" + ordinal_position: "4" is_nullable: "NO" - column_type: int(11) unsigned + column_type: tinyint(4) column_default: "0" - - column: taskid + - column: acceptedtime data_type: int - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" + column_key: "" + ordinal_position: "5" + is_nullable: "YES" column_type: int(11) unsigned + column_default: "NULL" + - column: was_rewarded + data_type: tinyint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: tinyint(4) column_default: "0" -character_exp_modifiers: - - column: character_id +character_tribute: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) column_default: "" - - column: zone_id + - column: character_id data_type: int - column_key: PRI + column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: instance_version - data_type: int - column_key: PRI + column_type: int(11) unsigned + column_default: "0" + - column: tier + data_type: tinyint + column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(11) - column_default: "-1" - - column: aa_modifier - data_type: float + column_type: tinyint(11) unsigned + column_default: "0" + - column: tribute + data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: float + column_type: int(11) unsigned + column_default: "0" +chatchannel_reserved_names: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) column_default: "" - - column: exp_modifier - data_type: float - column_key: "" - ordinal_position: "5" + - column: name + data_type: varchar + column_key: UNI + ordinal_position: "2" is_nullable: "NO" - column_type: float + column_type: varchar(64) column_default: "" -character_expedition_lockouts: +chatchannels: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "" - - column: character_id - data_type: int - column_key: MUL + - column: name + data_type: varchar + column_key: UNI ordinal_position: "2" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: expedition_name + column_type: varchar(64) + column_default: '''''' + - column: owner data_type: varchar column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: varchar(128) - column_default: "" - - column: event_name + column_type: varchar(64) + column_default: '''''' + - column: password data_type: varchar column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: varchar(256) - column_default: "" - - column: expire_time - data_type: datetime - column_key: "" - ordinal_position: "5" - is_nullable: "NO" - column_type: datetime - column_default: current_timestamp() - - column: duration + column_type: varchar(64) + column_default: '''''' + - column: minstatus data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "5" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(5) column_default: "0" - - column: from_expedition_uuid +command_settings: + - column: command data_type: varchar - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: varchar(36) - column_default: "" -character_inspect_messages: - - column: id - data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: varchar(128) + column_default: '''''' + - column: access + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: inspect_message + - column: aliases data_type: varchar column_key: "" - ordinal_position: "2" + ordinal_position: "3" is_nullable: "NO" - column_type: varchar(255) + column_type: varchar(256) column_default: '''''' -character_instance_safereturns: +command_subsettings: - column: id data_type: int column_key: PRI @@ -4770,3306 +4985,6678 @@ character_instance_safereturns: is_nullable: "NO" column_type: int(10) unsigned column_default: "" - - column: character_id - data_type: int - column_key: UNI + - column: parent_command + data_type: varchar + column_key: MUL ordinal_position: "2" is_nullable: "NO" - column_type: int(10) unsigned + column_type: varchar(32) column_default: "" - - column: instance_zone_id - data_type: int + - column: sub_command + data_type: varchar column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: instance_id + column_type: varchar(32) + column_default: "" + - column: access_level data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: safe_zone_id - data_type: int + - column: top_level_aliases + data_type: varchar column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: safe_x - data_type: float - column_key: "" - ordinal_position: "6" - is_nullable: "NO" - column_type: float - column_default: "0" - - column: safe_y - data_type: float - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: float - column_default: "0" - - column: safe_z - data_type: float - column_key: "" - ordinal_position: "8" - is_nullable: "NO" - column_type: float - column_default: "0" - - column: safe_heading - data_type: float - column_key: "" - ordinal_position: "9" - is_nullable: "NO" - column_type: float - column_default: "0" -character_item_recast: - - column: id - data_type: int + column_type: varchar(255) + column_default: "" +completed_shared_task_activity_state: + - column: shared_task_id + data_type: bigint column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: recast_type + column_type: bigint(20) + column_default: "" + - column: activity_id data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: timestamp + column_type: int(11) + column_default: "" + - column: done_count data_type: int column_key: "" ordinal_position: "3" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" -character_languages: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) unsigned + is_nullable: "YES" + column_type: int(11) + column_default: "NULL" + - column: updated_time + data_type: datetime + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: completed_time + data_type: datetime + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" +completed_shared_task_members: + - column: shared_task_id + data_type: bigint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: bigint(20) column_default: "" - - column: lang_id - data_type: smallint + - column: character_id + data_type: bigint column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: smallint(11) unsigned - column_default: "0" - - column: value - data_type: smallint + column_type: bigint(20) + column_default: "" + - column: is_leader + data_type: tinyint column_key: "" ordinal_position: "3" - is_nullable: "NO" - column_type: smallint(11) unsigned - column_default: "0" -character_leadership_abilities: + is_nullable: "YES" + column_type: tinyint(4) + column_default: "NULL" +completed_shared_tasks: - column: id + data_type: bigint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: bigint(20) + column_default: "" + - column: task_id + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: int(11) + column_default: "NULL" + - column: accepted_time + data_type: datetime + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: expire_time + data_type: datetime + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: completion_time + data_type: datetime + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: is_locked + data_type: tinyint + column_key: "" + ordinal_position: "6" + is_nullable: "YES" + column_type: tinyint(1) + column_default: "NULL" +completed_tasks: + - column: charid data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - - column: slot - data_type: smallint + - column: completedtime + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" - - column: rank - data_type: smallint - column_key: "" + - column: taskid + data_type: int + column_key: PRI ordinal_position: "3" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(11) unsigned column_default: "0" -character_material: + - column: activityid + data_type: int + column_key: PRI + ordinal_position: "4" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +content_flags: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "" - - column: slot + - column: flag_name + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: varchar(75) + column_default: "NULL" + - column: enabled data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: tinyint(4) + column_default: "NULL" + - column: notes + data_type: text + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: text + column_default: "NULL" +damageshieldtypes: + - column: spellid + data_type: int column_key: PRI - ordinal_position: "2" + ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: blue + - column: type data_type: tinyint column_key: "" - ordinal_position: "3" + ordinal_position: "2" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: tinyint(3) unsigned column_default: "0" - - column: green - data_type: tinyint +data_buckets: + - column: id + data_type: bigint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: bigint(11) unsigned + column_default: "" + - column: key + data_type: varchar + column_key: MUL + ordinal_position: "2" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: value + data_type: text + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: expires + data_type: int column_key: "" ordinal_position: "4" - is_nullable: "NO" - column_type: tinyint(11) unsigned + is_nullable: "YES" + column_type: int(11) unsigned column_default: "0" - - column: red - data_type: tinyint + - column: character_id + data_type: bigint column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: bigint(11) column_default: "0" - - column: use_tint - data_type: tinyint + - column: npc_id + data_type: bigint column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: bigint(11) column_default: "0" - - column: color - data_type: int + - column: bot_id + data_type: bigint column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: int(11) unsigned + column_type: bigint(11) column_default: "0" -character_memmed_spells: +db_str: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: slot_id - data_type: smallint + column_type: int(10) + column_default: "" + - column: type + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: smallint(11) unsigned - column_default: "0" - - column: spell_id - data_type: smallint + column_type: int(10) + column_default: "" + - column: value + data_type: text column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: smallint(11) unsigned - column_default: "0" -character_peqzone_flags: - - column: id + column_type: text + column_default: "" +db_version: + - column: version data_type: int - column_key: PRI + column_key: "" ordinal_position: "1" - is_nullable: "NO" + is_nullable: "YES" column_type: int(11) column_default: "0" - - column: zone_id + - column: bots_version data_type: int - column_key: PRI + column_key: "" ordinal_position: "2" - is_nullable: "NO" + is_nullable: "YES" column_type: int(11) column_default: "0" -character_pet_buffs: - - column: char_id +discord_webhooks: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) column_default: "" - - column: pet - data_type: int - column_key: PRI + - column: webhook_name + data_type: varchar + column_key: "" ordinal_position: "2" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: slot - data_type: int - column_key: PRI + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: webhook_url + data_type: varchar + column_key: "" ordinal_position: "3" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: spell_id - data_type: int + is_nullable: "YES" + column_type: varchar(255) + column_default: "NULL" + - column: created_at + data_type: datetime column_key: "" ordinal_position: "4" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: caster_level - data_type: tinyint + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: deleted_at + data_type: datetime column_key: "" ordinal_position: "5" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" +discovered_items: + - column: item_id + data_type: int + column_key: PRI + ordinal_position: "1" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) unsigned column_default: "0" - - column: castername + - column: char_name data_type: varchar column_key: "" - ordinal_position: "6" + ordinal_position: "2" is_nullable: "NO" column_type: varchar(64) column_default: '''''' - - column: ticsremaining - data_type: int - column_key: "" - ordinal_position: "7" - is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: counters - data_type: int - column_key: "" - ordinal_position: "8" - is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: numhits + - column: discovered_date data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: rune + - column: account_status data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "4" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: instrument_mod - data_type: tinyint - column_key: "" - ordinal_position: "11" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "10" -character_pet_info: - - column: char_id +doors: + - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" column_type: int(11) column_default: "" - - column: pet - data_type: int - column_key: PRI + - column: doorid + data_type: smallint + column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: petname + column_type: smallint(4) + column_default: "0" + - column: zone data_type: varchar - column_key: "" + column_key: MUL ordinal_position: "3" - is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: petpower - data_type: int + is_nullable: "YES" + column_type: varchar(32) + column_default: "NULL" + - column: version + data_type: smallint column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: int(11) + column_type: smallint(5) column_default: "0" - - column: spell_id - data_type: int + - column: name + data_type: varchar column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: hp - data_type: int + column_type: varchar(32) + column_default: '''''' + - column: pos_y + data_type: float column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: int(11) + column_type: float column_default: "0" - - column: mana - data_type: int + - column: pos_x + data_type: float column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: int(11) + column_type: float column_default: "0" - - column: size + - column: pos_z data_type: float column_key: "" ordinal_position: "8" is_nullable: "NO" column_type: float column_default: "0" - - column: taunting - data_type: tinyint + - column: heading + data_type: float column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: tinyint(1) - column_default: "1" -character_pet_inventory: - - column: char_id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: pet - data_type: int - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: slot - data_type: int - column_key: PRI - ordinal_position: "3" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: item_id - data_type: int + column_type: float + column_default: "0" + - column: opentype + data_type: smallint column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: int(11) - column_default: "" -character_potionbelt: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + ordinal_position: "10" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(4) column_default: "0" - - column: potion_id - data_type: tinyint - column_key: PRI - ordinal_position: "2" + - column: guild + data_type: smallint + column_key: "" + ordinal_position: "11" is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: smallint(4) column_default: "0" - - column: item_id - data_type: int + - column: lockpick + data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "12" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(4) column_default: "0" - - column: icon + - column: keyitem data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "13" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" -character_skills: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + - column: nokeyring + data_type: tinyint + column_key: "" + ordinal_position: "14" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: skill_id + column_type: tinyint(3) unsigned + column_default: "0" + - column: triggerdoor data_type: smallint - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "15" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: smallint(4) column_default: "0" - - column: value + - column: triggertype data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "16" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: smallint(4) column_default: "0" -character_spells: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + - column: disable_timer + data_type: tinyint + column_key: "" + ordinal_position: "17" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: slot_id + column_type: tinyint(2) + column_default: "0" + - column: doorisopen data_type: smallint - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "18" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: smallint(4) column_default: "0" - - column: spell_id - data_type: smallint + - column: door_param + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "19" is_nullable: "NO" - column_type: smallint(11) unsigned + column_type: int(4) column_default: "0" -character_task_timers: - - column: id + - column: dest_zone + data_type: varchar + column_key: "" + ordinal_position: "20" + is_nullable: "YES" + column_type: varchar(32) + column_default: '''NONE''' + - column: dest_instance data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "21" is_nullable: "NO" column_type: int(10) unsigned - column_default: "" - - column: character_id - data_type: int - column_key: MUL - ordinal_position: "2" + column_default: "0" + - column: dest_x + data_type: float + column_key: "" + ordinal_position: "22" is_nullable: "NO" - column_type: int(10) unsigned + column_type: float column_default: "0" - - column: task_id - data_type: int - column_key: MUL - ordinal_position: "3" + - column: dest_y + data_type: float + column_key: "" + ordinal_position: "23" is_nullable: "NO" - column_type: int(10) unsigned + column_type: float column_default: "0" - - column: timer_type + - column: dest_z + data_type: float + column_key: "" + ordinal_position: "24" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: dest_heading + data_type: float + column_key: "" + ordinal_position: "25" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: invert_state data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "26" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: timer_group + - column: incline data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "27" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: expire_time - data_type: datetime + - column: size + data_type: smallint column_key: "" - ordinal_position: "6" + ordinal_position: "28" is_nullable: "NO" - column_type: datetime - column_default: current_timestamp() -character_tasks: - - column: charid - data_type: int - column_key: PRI - ordinal_position: "1" + column_type: smallint(5) unsigned + column_default: "100" + - column: buffer + data_type: float + column_key: "" + ordinal_position: "29" is_nullable: "NO" - column_type: int(11) unsigned + column_type: float column_default: "0" - - column: taskid + - column: client_version_mask data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "30" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned + column_default: "4294967295" + - column: is_ldon_door + data_type: smallint + column_key: "" + ordinal_position: "31" + is_nullable: "NO" + column_type: smallint(6) column_default: "0" - - column: slot + - column: close_timer_ms + data_type: smallint + column_key: "" + ordinal_position: "32" + is_nullable: "NO" + column_type: smallint(8) unsigned + column_default: "5000" + - column: dz_switch_id data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "33" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: type + - column: min_expansion data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "34" is_nullable: "NO" column_type: tinyint(4) - column_default: "0" - - column: acceptedtime - data_type: int - column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "NULL" - - column: was_rewarded + column_default: "-1" + - column: max_expansion data_type: tinyint column_key: "" - ordinal_position: "6" + ordinal_position: "35" is_nullable: "NO" column_type: tinyint(4) - column_default: "0" -character_tribute: + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "36" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "37" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +dynamic_zone_members: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) + column_type: int(10) unsigned column_default: "" - - column: character_id + - column: dynamic_zone_id data_type: int - column_key: "" + column_key: MUL ordinal_position: "2" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: tier - data_type: tinyint - column_key: "" - ordinal_position: "3" - is_nullable: "NO" - column_type: tinyint(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: tribute + - column: character_id data_type: int - column_key: "" - ordinal_position: "4" + column_key: MUL + ordinal_position: "3" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" -chatchannel_reserved_names: +dynamic_zone_templates: - column: id data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: name - data_type: varchar - column_key: UNI - ordinal_position: "2" - is_nullable: "NO" - column_type: varchar(64) + column_type: int(10) unsigned column_default: "" -chatchannels: - - column: id + - column: zone_id data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: name - data_type: varchar - column_key: UNI + column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: owner - data_type: varchar + column_type: int(11) + column_default: "0" + - column: zone_version + data_type: int column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: password + column_type: int(11) + column_default: "0" + - column: name data_type: varchar column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: varchar(64) + column_type: varchar(128) column_default: '''''' - - column: minstatus + - column: min_players data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: int(5) + column_type: int(11) column_default: "0" -command_settings: - - column: command - data_type: varchar - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: varchar(128) - column_default: '''''' - - column: access + - column: max_players data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "6" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: aliases - data_type: varchar + - column: duration_seconds + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "7" is_nullable: "NO" - column_type: varchar(256) - column_default: '''''' -command_subsettings: - - column: id + column_type: int(11) + column_default: "0" + - column: dz_switch_id data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: parent_command - data_type: varchar - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: varchar(32) - column_default: "" - - column: sub_command - data_type: varchar column_key: "" - ordinal_position: "3" + ordinal_position: "8" is_nullable: "NO" - column_type: varchar(32) - column_default: "" - - column: access_level + column_type: int(11) + column_default: "0" + - column: compass_zone_id data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "9" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: top_level_aliases - data_type: varchar + - column: compass_x + data_type: float column_key: "" - ordinal_position: "5" - is_nullable: "NO" - column_type: varchar(255) - column_default: "" -completed_shared_task_activity_state: - - column: shared_task_id - data_type: bigint - column_key: PRI - ordinal_position: "1" + ordinal_position: "10" is_nullable: "NO" - column_type: bigint(20) - column_default: "" - - column: activity_id - data_type: int - column_key: PRI - ordinal_position: "2" + column_type: float + column_default: "0" + - column: compass_y + data_type: float + column_key: "" + ordinal_position: "11" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: done_count + column_type: float + column_default: "0" + - column: compass_z + data_type: float + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: return_zone_id data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "YES" + ordinal_position: "13" + is_nullable: "NO" column_type: int(11) - column_default: "NULL" - - column: updated_time - data_type: datetime + column_default: "0" + - column: return_x + data_type: float column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" - - column: completed_time - data_type: datetime + ordinal_position: "14" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: return_y + data_type: float column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" -completed_shared_task_members: - - column: shared_task_id - data_type: bigint - column_key: PRI - ordinal_position: "1" + ordinal_position: "15" is_nullable: "NO" - column_type: bigint(20) - column_default: "" - - column: character_id - data_type: bigint - column_key: PRI - ordinal_position: "2" + column_type: float + column_default: "0" + - column: return_z + data_type: float + column_key: "" + ordinal_position: "16" is_nullable: "NO" - column_type: bigint(20) - column_default: "" - - column: is_leader + column_type: float + column_default: "0" + - column: return_h + data_type: float + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: override_zone_in data_type: tinyint column_key: "" - ordinal_position: "3" - is_nullable: "YES" + ordinal_position: "18" + is_nullable: "NO" column_type: tinyint(4) - column_default: "NULL" -completed_shared_tasks: + column_default: "0" + - column: zone_in_x + data_type: float + column_key: "" + ordinal_position: "19" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_y + data_type: float + column_key: "" + ordinal_position: "20" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_z + data_type: float + column_key: "" + ordinal_position: "21" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_h + data_type: float + column_key: "" + ordinal_position: "22" + is_nullable: "NO" + column_type: float + column_default: "0" +dynamic_zones: - column: id - data_type: bigint + data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: bigint(20) + column_type: int(10) unsigned column_default: "" - - column: task_id + - column: instance_id data_type: int - column_key: "" + column_key: UNI ordinal_position: "2" - is_nullable: "YES" - column_type: int(11) - column_default: "NULL" - - column: accepted_time - data_type: datetime + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: type + data_type: tinyint column_key: "" ordinal_position: "3" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" - - column: expire_time - data_type: datetime + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: uuid + data_type: varchar column_key: "" ordinal_position: "4" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" - - column: completion_time - data_type: datetime + is_nullable: "NO" + column_type: varchar(36) + column_default: "" + - column: name + data_type: varchar column_key: "" ordinal_position: "5" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" - - column: is_locked - data_type: tinyint + is_nullable: "NO" + column_type: varchar(128) + column_default: '''''' + - column: leader_id + data_type: int column_key: "" ordinal_position: "6" - is_nullable: "YES" - column_type: tinyint(1) - column_default: "NULL" -completed_tasks: - - column: charid + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: min_players data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "7" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: completedtime + - column: max_players data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "8" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(10) unsigned column_default: "0" - - column: taskid + - column: dz_switch_id + data_type: int + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: compass_zone_id + data_type: int + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: compass_x + data_type: float + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: compass_y + data_type: float + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: compass_z + data_type: float + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: safe_return_zone_id + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: safe_return_x + data_type: float + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: safe_return_y + data_type: float + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: safe_return_z + data_type: float + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: safe_return_heading + data_type: float + column_key: "" + ordinal_position: "18" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_x + data_type: float + column_key: "" + ordinal_position: "19" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_y + data_type: float + column_key: "" + ordinal_position: "20" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_z + data_type: float + column_key: "" + ordinal_position: "21" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: zone_in_heading + data_type: float + column_key: "" + ordinal_position: "22" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: has_zone_in + data_type: tinyint + column_key: "" + ordinal_position: "23" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" +eqtime: + - column: minute + data_type: tinyint + column_key: "" + ordinal_position: "1" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" + - column: hour + data_type: tinyint + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" + - column: day + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" + - column: month + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" + - column: year + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: realtime + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +expedition_lockouts: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: expedition_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: event_name + data_type: varchar + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(256) + column_default: "" + - column: expire_time + data_type: datetime + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: datetime + column_default: current_timestamp() + - column: duration + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: from_expedition_uuid + data_type: varchar + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: varchar(36) + column_default: "" +expeditions: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: dynamic_zone_id + data_type: int + column_key: UNI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: add_replay_on_join + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "1" + - column: is_locked + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" +faction_association: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) + column_default: "" + - column: id_1 + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_1 + data_type: float + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_2 + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_2 + data_type: float + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_3 + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_3 + data_type: float + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_4 + data_type: int + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_4 + data_type: float + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_5 + data_type: int + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_5 + data_type: float + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_6 + data_type: int + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_6 + data_type: float + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_7 + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_7 + data_type: float + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_8 + data_type: int + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_8 + data_type: float + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_9 + data_type: int + column_key: "" + ordinal_position: "18" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_9 + data_type: float + column_key: "" + ordinal_position: "19" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: id_10 + data_type: int + column_key: "" + ordinal_position: "20" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: mod_10 + data_type: float + column_key: "" + ordinal_position: "21" + is_nullable: "NO" + column_type: float + column_default: "0" +faction_base_data: + - column: client_faction_id + data_type: smallint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: smallint(6) + column_default: "" + - column: min + data_type: smallint + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: smallint(6) + column_default: "-2000" + - column: max + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: smallint(6) + column_default: "2000" + - column: unk_hero1 + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: smallint(6) + column_default: "NULL" + - column: unk_hero2 + data_type: smallint + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: smallint(6) + column_default: "NULL" + - column: unk_hero3 + data_type: smallint + column_key: "" + ordinal_position: "6" + is_nullable: "YES" + column_type: smallint(6) + column_default: "NULL" +faction_list: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: name + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(50) + column_default: '''''' + - column: base + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" +faction_list_mod: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: faction_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: mod + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(6) + column_default: "" + - column: mod_name + data_type: varchar + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: varchar(16) + column_default: "" +faction_values: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: faction_id + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: current_value + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: temp + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" +fishing: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: zoneid + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: Itemid + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: skill_level + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: chance + data_type: smallint + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: npc_id + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: npc_chance + data_type: int + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "10" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "11" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +forage: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: zoneid + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: Itemid + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: level + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: chance + data_type: smallint + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "8" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "9" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +friends: + - column: charid + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: type + data_type: tinyint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "1" + - column: name + data_type: varchar + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(64) + column_default: "" +global_loot: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: description + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: varchar(255) + column_default: "NULL" + - column: loottable_id + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: enabled + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "1" + - column: min_level + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: max_level + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: rare + data_type: tinyint + column_key: "" + ordinal_position: "7" + is_nullable: "YES" + column_type: tinyint(4) + column_default: "NULL" + - column: raid + data_type: tinyint + column_key: "" + ordinal_position: "8" + is_nullable: "YES" + column_type: tinyint(4) + column_default: "NULL" + - column: race + data_type: mediumtext + column_key: "" + ordinal_position: "9" + is_nullable: "YES" + column_type: mediumtext + column_default: "NULL" + - column: class + data_type: mediumtext + column_key: "" + ordinal_position: "10" + is_nullable: "YES" + column_type: mediumtext + column_default: "NULL" + - column: bodytype + data_type: mediumtext + column_key: "" + ordinal_position: "11" + is_nullable: "YES" + column_type: mediumtext + column_default: "NULL" + - column: zone + data_type: mediumtext + column_key: "" + ordinal_position: "12" + is_nullable: "YES" + column_type: mediumtext + column_default: "NULL" + - column: hot_zone + data_type: tinyint + column_key: "" + ordinal_position: "13" + is_nullable: "YES" + column_type: tinyint(4) + column_default: "NULL" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "16" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "17" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +gm_ips: + - column: name + data_type: varchar + column_key: "" + ordinal_position: "1" + is_nullable: "NO" + column_type: varchar(64) + column_default: "" + - column: account_id + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: ip_address + data_type: varchar + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(15) + column_default: "" +graveyard: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: zone_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: x + data_type: float + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: "y" + data_type: float + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: z + data_type: float + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: heading + data_type: float + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: float + column_default: "0" +grid: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: zoneid + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: type + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: type2 + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: int(10) + column_default: "0" +grid_entries: + - column: gridid + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: zoneid + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: number + data_type: int + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: x + data_type: float + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: "y" + data_type: float + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: z + data_type: float + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: heading + data_type: float + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: pause + data_type: int + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: centerpoint + data_type: tinyint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" +ground_spawns: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "" + - column: zoneid + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: version + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(5) + column_default: "0" + - column: max_x + data_type: float + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: float + column_default: "2000" + - column: max_y + data_type: float + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: float + column_default: "2000" + - column: max_z + data_type: float + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: float + column_default: "10000" + - column: min_x + data_type: float + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: float + column_default: "-2000" + - column: min_y + data_type: float + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: float + column_default: "-2000" + - column: heading + data_type: float + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: name + data_type: varchar + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: varchar(16) + column_default: '''''' + - column: item + data_type: int + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: max_allowed + data_type: int + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "1" + - column: comment + data_type: varchar + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: varchar(255) + column_default: '''''' + - column: respawn_timer + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "300" + - column: fix_z + data_type: tinyint + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "1" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "18" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "19" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" +group_id: + - column: group_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: name + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: character_id + data_type: int + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: bot_id + data_type: int + column_key: PRI + ordinal_position: "4" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: merc_id + data_type: int + column_key: PRI + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" +guild_bank: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" + - column: guildid + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: area + data_type: tinyint + column_key: MUL + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: slot + data_type: int + column_key: MUL + ordinal_position: "4" + is_nullable: "NO" + column_type: int(4) unsigned + column_default: "0" + - column: itemid + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: qty + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) + column_default: "0" + - column: donator + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "YES" + column_type: varchar(64) + column_default: "NULL" + - column: permissions + data_type: tinyint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: whofor + data_type: varchar + column_key: "" + ordinal_position: "9" + is_nullable: "YES" + column_type: varchar(64) + column_default: "NULL" +guild_members: + - column: char_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: guild_id + data_type: mediumint + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: mediumint(8) unsigned + column_default: "0" + - column: rank + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: tribute_enable + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: total_tribute + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: last_tribute + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: banker + data_type: tinyint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: public_note + data_type: text + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: text + column_default: "" + - column: alt + data_type: tinyint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: online + data_type: tinyint + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" +guild_permissions: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: perm_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: guild_id + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: permission + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +guild_ranks: + - column: guild_id + data_type: mediumint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: mediumint(8) unsigned + column_default: "0" + - column: rank + data_type: tinyint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: title + data_type: varchar + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(128) + column_default: '''''' +guild_relations: + - column: guild1 + data_type: mediumint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: mediumint(8) unsigned + column_default: "0" + - column: guild2 + data_type: mediumint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: mediumint(8) unsigned + column_default: "0" + - column: relation + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "0" +guild_tributes: + - column: guild_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: tribute_id_1 + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: tribute_id_1_tier + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: tribute_id_2 + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: tribute_id_2_tier + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: time_remaining + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: enabled + data_type: int + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" +guilds: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: name + data_type: varchar + column_key: UNI + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: leader + data_type: int + column_key: UNI + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: minstatus + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: smallint(5) + column_default: "0" + - column: motd + data_type: text + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: text + column_default: "" + - column: tribute + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: motd_setter + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: channel + data_type: varchar + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: varchar(128) + column_default: '''''' + - column: url + data_type: varchar + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: varchar(512) + column_default: '''''' + - column: favor + data_type: int + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" +horses: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(20) + column_default: "" + - column: filename + data_type: varchar + column_key: UNI + ordinal_position: "2" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: race + data_type: smallint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: smallint(3) + column_default: "216" + - column: gender + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(1) + column_default: "0" + - column: texture + data_type: tinyint + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: tinyint(2) + column_default: "0" + - column: mountspeed + data_type: float + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: float(4,2) + column_default: "0.75" + - column: notes + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "YES" + column_type: varchar(64) + column_default: '''Notes''' +instance_list: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: zone + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: version + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(4) unsigned + column_default: "0" + - column: is_global + data_type: tinyint + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: start_time + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: duration + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: never_expires + data_type: tinyint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: notes + data_type: varchar + column_key: "" + ordinal_position: "8" + is_nullable: "YES" + column_type: varchar(50) + column_default: '''''' +instance_list_player: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: charid + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" +inventory: + - column: charid + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: slotid + data_type: mediumint + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: itemid + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: charges + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: smallint(3) unsigned + column_default: "0" + - column: color + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: augslot1 + data_type: mediumint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot2 + data_type: mediumint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot3 + data_type: mediumint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot4 + data_type: mediumint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot5 + data_type: mediumint + column_key: "" + ordinal_position: "10" + is_nullable: "YES" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot6 + data_type: mediumint + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: mediumint(7) + column_default: "0" + - column: instnodrop + data_type: tinyint + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "0" + - column: custom_data + data_type: text + column_key: "" + ordinal_position: "13" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: ornamenticon + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: ornamentidfile + data_type: int + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: ornament_hero_model + data_type: int + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +inventory_snapshots: + - column: time_index + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: charid + data_type: int + column_key: PRI + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: slotid + data_type: mediumint + column_key: PRI + ordinal_position: "3" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: itemid + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: int(11) unsigned + column_default: "0" + - column: charges + data_type: smallint + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: smallint(3) unsigned + column_default: "0" + - column: color + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: augslot1 + data_type: mediumint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot2 + data_type: mediumint + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot3 + data_type: mediumint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot4 + data_type: mediumint + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot5 + data_type: mediumint + column_key: "" + ordinal_position: "11" + is_nullable: "YES" + column_type: mediumint(7) unsigned + column_default: "0" + - column: augslot6 + data_type: mediumint + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: mediumint(7) + column_default: "0" + - column: instnodrop + data_type: tinyint + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "0" + - column: custom_data + data_type: text + column_key: "" + ordinal_position: "14" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: ornamenticon + data_type: int + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: ornamentidfile + data_type: int + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: ornament_hero_model + data_type: int + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: int(11) + column_default: "0" +inventory_versions: + - column: version + data_type: int + column_key: "" + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: step + data_type: int + column_key: "" + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: bot_step + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" +ip_exemptions: + - column: exemption_id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "" + - column: exemption_ip + data_type: varchar + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: varchar(255) + column_default: "NULL" + - column: exemption_amount + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: int(11) + column_default: "NULL" +items: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: minstatus + data_type: smallint + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: smallint(5) + column_default: "0" + - column: Name + data_type: varchar + column_key: MUL + ordinal_position: "3" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: aagi + data_type: int + column_key: "" + ordinal_position: "4" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: ac + data_type: int + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: accuracy + data_type: int + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: acha + data_type: int + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: adex + data_type: int + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: aint + data_type: int + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: artifactflag + data_type: tinyint + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: asta + data_type: int + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: astr + data_type: int + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: attack + data_type: int + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augrestrict + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot1type + data_type: tinyint + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot1visible + data_type: tinyint + column_key: "" + ordinal_position: "16" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot2type + data_type: tinyint + column_key: "" + ordinal_position: "17" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot2visible + data_type: tinyint + column_key: "" + ordinal_position: "18" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot3type + data_type: tinyint + column_key: "" + ordinal_position: "19" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot3visible + data_type: tinyint + column_key: "" + ordinal_position: "20" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot4type + data_type: tinyint + column_key: "" + ordinal_position: "21" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot4visible + data_type: tinyint + column_key: "" + ordinal_position: "22" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot5type + data_type: tinyint + column_key: "" + ordinal_position: "23" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot5visible + data_type: tinyint + column_key: "" + ordinal_position: "24" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot6type + data_type: tinyint + column_key: "" + ordinal_position: "25" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot6visible + data_type: tinyint + column_key: "" + ordinal_position: "26" + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augtype + data_type: int + column_key: "" + ordinal_position: "27" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: avoidance + data_type: int + column_key: "" + ordinal_position: "28" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: awis + data_type: int + column_key: "" + ordinal_position: "29" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bagsize + data_type: int + column_key: "" + ordinal_position: "30" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bagslots + data_type: int + column_key: "" + ordinal_position: "31" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bagtype + data_type: int + column_key: "" + ordinal_position: "32" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bagwr + data_type: int + column_key: "" + ordinal_position: "33" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: banedmgamt + data_type: int + column_key: "" + ordinal_position: "34" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: banedmgraceamt + data_type: int + column_key: "" + ordinal_position: "35" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: banedmgbody + data_type: int + column_key: "" + ordinal_position: "36" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: banedmgrace + data_type: int + column_key: "" + ordinal_position: "37" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bardtype + data_type: int + column_key: "" + ordinal_position: "38" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: bardvalue + data_type: int + column_key: "" + ordinal_position: "39" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: book + data_type: int + column_key: "" + ordinal_position: "40" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: casttime + data_type: int + column_key: "" + ordinal_position: "41" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: casttime_ + data_type: int + column_key: "" + ordinal_position: "42" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: charmfile + data_type: varchar + column_key: "" + ordinal_position: "43" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: charmfileid + data_type: varchar + column_key: "" + ordinal_position: "44" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: classes + data_type: int + column_key: "" + ordinal_position: "45" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: color + data_type: int + column_key: "" + ordinal_position: "46" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: combateffects + data_type: varchar + column_key: "" + ordinal_position: "47" + is_nullable: "NO" + column_type: varchar(10) + column_default: '''''' + - column: extradmgskill + data_type: int + column_key: "" + ordinal_position: "48" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: extradmgamt + data_type: int + column_key: "" + ordinal_position: "49" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: price + data_type: int + column_key: "" + ordinal_position: "50" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: cr + data_type: int + column_key: "" + ordinal_position: "51" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: damage + data_type: int + column_key: "" + ordinal_position: "52" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: damageshield + data_type: int + column_key: "" + ordinal_position: "53" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: deity + data_type: int + column_key: "" + ordinal_position: "54" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: delay + data_type: int + column_key: "" + ordinal_position: "55" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augdistiller + data_type: int + column_key: "" + ordinal_position: "56" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: dotshielding + data_type: int + column_key: "" + ordinal_position: "57" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: dr + data_type: int + column_key: "" + ordinal_position: "58" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clicktype + data_type: int + column_key: "" + ordinal_position: "59" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clicklevel2 + data_type: int + column_key: "" + ordinal_position: "60" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: elemdmgtype + data_type: int + column_key: "" + ordinal_position: "61" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: elemdmgamt + data_type: int + column_key: "" + ordinal_position: "62" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: endur + data_type: int + column_key: "" + ordinal_position: "63" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionamt1 + data_type: int + column_key: "" + ordinal_position: "64" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionamt2 + data_type: int + column_key: "" + ordinal_position: "65" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionamt3 + data_type: int + column_key: "" + ordinal_position: "66" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionamt4 + data_type: int + column_key: "" + ordinal_position: "67" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionmod1 + data_type: int + column_key: "" + ordinal_position: "68" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionmod2 + data_type: int + column_key: "" + ordinal_position: "69" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionmod3 + data_type: int + column_key: "" + ordinal_position: "70" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: factionmod4 + data_type: int + column_key: "" + ordinal_position: "71" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: filename + data_type: varchar + column_key: "" + ordinal_position: "72" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: focuseffect + data_type: int + column_key: "" + ordinal_position: "73" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: fr + data_type: int + column_key: "" + ordinal_position: "74" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: fvnodrop + data_type: int + column_key: "" + ordinal_position: "75" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: haste + data_type: int + column_key: "" + ordinal_position: "76" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clicklevel + data_type: int + column_key: "" + ordinal_position: "77" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: hp + data_type: int + column_key: "" + ordinal_position: "78" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: regen + data_type: int + column_key: "" + ordinal_position: "79" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: icon + data_type: int + column_key: "" + ordinal_position: "80" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: idfile + data_type: varchar + column_key: "" + ordinal_position: "81" + is_nullable: "NO" + column_type: varchar(30) + column_default: '''''' + - column: itemclass + data_type: int + column_key: "" + ordinal_position: "82" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: itemtype + data_type: int + column_key: "" + ordinal_position: "83" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: ldonprice + data_type: int + column_key: "" + ordinal_position: "84" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: ldontheme + data_type: int + column_key: "" + ordinal_position: "85" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: ldonsold + data_type: int + column_key: "" + ordinal_position: "86" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: light + data_type: int + column_key: "" + ordinal_position: "87" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: lore + data_type: varchar + column_key: MUL + ordinal_position: "88" + is_nullable: "NO" + column_type: varchar(80) + column_default: '''''' + - column: loregroup + data_type: int + column_key: "" + ordinal_position: "89" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: magic + data_type: int + column_key: "" + ordinal_position: "90" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: mana + data_type: int + column_key: "" + ordinal_position: "91" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: manaregen + data_type: int + column_key: "" + ordinal_position: "92" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: enduranceregen + data_type: int + column_key: "" + ordinal_position: "93" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: material + data_type: int + column_key: "" + ordinal_position: "94" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: herosforgemodel + data_type: int + column_key: "" + ordinal_position: "95" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: maxcharges + data_type: int + column_key: "" + ordinal_position: "96" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: mr + data_type: int + column_key: "" + ordinal_position: "97" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: nodrop + data_type: int + column_key: "" + ordinal_position: "98" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: norent + data_type: int + column_key: "" + ordinal_position: "99" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: pendingloreflag + data_type: tinyint + column_key: "" + ordinal_position: "100" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: pr + data_type: int + column_key: "" + ordinal_position: "101" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procrate + data_type: int + column_key: "" + ordinal_position: "102" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: races + data_type: int + column_key: "" + ordinal_position: "103" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: range + data_type: int + column_key: "" + ordinal_position: "104" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: reclevel + data_type: int + column_key: "" + ordinal_position: "105" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: recskill + data_type: int + column_key: "" + ordinal_position: "106" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: reqlevel + data_type: int + column_key: "" + ordinal_position: "107" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: sellrate + data_type: float + column_key: "" + ordinal_position: "108" + is_nullable: "NO" + column_type: float + column_default: "0" + - column: shielding + data_type: int + column_key: "" + ordinal_position: "109" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: size + data_type: int + column_key: "" + ordinal_position: "110" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: skillmodtype + data_type: int + column_key: "" + ordinal_position: "111" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: skillmodvalue + data_type: int + column_key: "" + ordinal_position: "112" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: slots + data_type: int + column_key: "" + ordinal_position: "113" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clickeffect + data_type: int + column_key: "" + ordinal_position: "114" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: spellshield + data_type: int + column_key: "" + ordinal_position: "115" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: strikethrough + data_type: int + column_key: "" + ordinal_position: "116" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: stunresist + data_type: int + column_key: "" + ordinal_position: "117" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: summonedflag + data_type: tinyint + column_key: "" + ordinal_position: "118" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: tradeskills + data_type: int + column_key: "" + ordinal_position: "119" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: favor + data_type: int + column_key: "" + ordinal_position: "120" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: weight + data_type: int + column_key: "" + ordinal_position: "121" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK012 + data_type: int + column_key: "" + ordinal_position: "122" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK013 + data_type: int + column_key: "" + ordinal_position: "123" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: benefitflag + data_type: int + column_key: "" + ordinal_position: "124" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK054 + data_type: int + column_key: "" + ordinal_position: "125" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK059 + data_type: int + column_key: "" + ordinal_position: "126" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: booktype + data_type: int + column_key: "" + ordinal_position: "127" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: recastdelay + data_type: int + column_key: "" + ordinal_position: "128" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: recasttype + data_type: int + column_key: "" + ordinal_position: "129" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: guildfavor + data_type: int + column_key: "" + ordinal_position: "130" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK123 + data_type: int + column_key: "" + ordinal_position: "131" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK124 + data_type: int + column_key: "" + ordinal_position: "132" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: attuneable + data_type: int + column_key: "" + ordinal_position: "133" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: nopet + data_type: int + column_key: "" + ordinal_position: "134" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: updated + data_type: datetime + column_key: "" + ordinal_position: "135" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: comment + data_type: varchar + column_key: "" + ordinal_position: "136" + is_nullable: "NO" + column_type: varchar(255) + column_default: '''''' + - column: UNK127 + data_type: int + column_key: "" + ordinal_position: "137" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: pointtype + data_type: int + column_key: "" + ordinal_position: "138" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: potionbelt + data_type: int + column_key: "" + ordinal_position: "139" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: potionbeltslots + data_type: int + column_key: "" + ordinal_position: "140" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: stacksize + data_type: int + column_key: "" + ordinal_position: "141" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: notransfer + data_type: int + column_key: "" + ordinal_position: "142" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: stackable + data_type: int + column_key: "" + ordinal_position: "143" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK134 + data_type: varchar + column_key: "" + ordinal_position: "144" + is_nullable: "NO" + column_type: varchar(255) + column_default: '''''' + - column: UNK137 + data_type: int + column_key: "" + ordinal_position: "145" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: proceffect + data_type: int + column_key: "" + ordinal_position: "146" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: proctype + data_type: int + column_key: "" + ordinal_position: "147" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: proclevel2 + data_type: int + column_key: "" + ordinal_position: "148" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: proclevel + data_type: int + column_key: "" + ordinal_position: "149" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK142 + data_type: int + column_key: "" + ordinal_position: "150" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: worneffect + data_type: int + column_key: "" + ordinal_position: "151" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: worntype + data_type: int + column_key: "" + ordinal_position: "152" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornlevel2 + data_type: int + column_key: "" + ordinal_position: "153" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornlevel + data_type: int + column_key: "" + ordinal_position: "154" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK147 + data_type: int + column_key: "" + ordinal_position: "155" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focustype + data_type: int + column_key: "" + ordinal_position: "156" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focuslevel2 + data_type: int + column_key: "" + ordinal_position: "157" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focuslevel + data_type: int + column_key: "" + ordinal_position: "158" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK152 + data_type: int + column_key: "" + ordinal_position: "159" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrolleffect + data_type: int + column_key: "" + ordinal_position: "160" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrolltype + data_type: int + column_key: "" + ordinal_position: "161" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrolllevel2 + data_type: int + column_key: "" + ordinal_position: "162" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrolllevel + data_type: int + column_key: "" + ordinal_position: "163" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK157 + data_type: int + column_key: "" + ordinal_position: "164" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: serialized + data_type: datetime + column_key: "" + ordinal_position: "165" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: verified + data_type: datetime + column_key: "" + ordinal_position: "166" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: serialization + data_type: text + column_key: "" + ordinal_position: "167" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: source + data_type: varchar + column_key: "" + ordinal_position: "168" + is_nullable: "NO" + column_type: varchar(20) + column_default: '''''' + - column: UNK033 + data_type: int + column_key: "" + ordinal_position: "169" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: lorefile + data_type: varchar + column_key: "" + ordinal_position: "170" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: UNK014 + data_type: int + column_key: "" + ordinal_position: "171" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: svcorruption + data_type: int + column_key: "" + ordinal_position: "172" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: skillmodmax + data_type: int + column_key: "" + ordinal_position: "173" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK060 + data_type: int + column_key: "" + ordinal_position: "174" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot1unk2 + data_type: int + column_key: "" + ordinal_position: "175" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot2unk2 + data_type: int + column_key: "" + ordinal_position: "176" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot3unk2 + data_type: int + column_key: "" + ordinal_position: "177" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot4unk2 + data_type: int + column_key: "" + ordinal_position: "178" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot5unk2 + data_type: int + column_key: "" + ordinal_position: "179" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot6unk2 + data_type: int + column_key: "" + ordinal_position: "180" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK120 + data_type: int + column_key: "" + ordinal_position: "181" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK121 + data_type: int + column_key: "" + ordinal_position: "182" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: questitemflag + data_type: int + column_key: "" + ordinal_position: "183" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK132 + data_type: text + column_key: "" + ordinal_position: "184" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: clickunk5 + data_type: int + column_key: "" + ordinal_position: "185" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clickunk6 + data_type: varchar + column_key: "" + ordinal_position: "186" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: clickunk7 + data_type: int + column_key: "" + ordinal_position: "187" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procunk1 + data_type: int + column_key: "" + ordinal_position: "188" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procunk2 + data_type: int + column_key: "" + ordinal_position: "189" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procunk3 + data_type: int + column_key: "" + ordinal_position: "190" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procunk4 + data_type: int + column_key: "" + ordinal_position: "191" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: procunk6 + data_type: varchar + column_key: "" + ordinal_position: "192" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: procunk7 + data_type: int + column_key: "" + ordinal_position: "193" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk1 + data_type: int + column_key: "" + ordinal_position: "194" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk2 + data_type: int + column_key: "" + ordinal_position: "195" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk3 + data_type: int + column_key: "" + ordinal_position: "196" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk4 + data_type: int + column_key: "" + ordinal_position: "197" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk5 + data_type: int + column_key: "" + ordinal_position: "198" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: wornunk6 + data_type: varchar + column_key: "" + ordinal_position: "199" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: wornunk7 + data_type: int + column_key: "" + ordinal_position: "200" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk1 + data_type: int + column_key: "" + ordinal_position: "201" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk2 + data_type: int + column_key: "" + ordinal_position: "202" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk3 + data_type: int + column_key: "" + ordinal_position: "203" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk4 + data_type: int + column_key: "" + ordinal_position: "204" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk5 + data_type: int + column_key: "" + ordinal_position: "205" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: focusunk6 + data_type: varchar + column_key: "" + ordinal_position: "206" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: focusunk7 + data_type: int + column_key: "" + ordinal_position: "207" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrollunk1 + data_type: int + column_key: "" + ordinal_position: "208" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: scrollunk2 + data_type: int + column_key: "" + ordinal_position: "209" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrollunk3 + data_type: int + column_key: "" + ordinal_position: "210" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrollunk4 + data_type: int + column_key: "" + ordinal_position: "211" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrollunk5 + data_type: int + column_key: "" + ordinal_position: "212" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: scrollunk6 + data_type: varchar + column_key: "" + ordinal_position: "213" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: scrollunk7 + data_type: int + column_key: "" + ordinal_position: "214" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK193 + data_type: int + column_key: "" + ordinal_position: "215" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: purity + data_type: int + column_key: "" + ordinal_position: "216" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: evoitem + data_type: int + column_key: "" + ordinal_position: "217" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: evoid + data_type: int + column_key: "" + ordinal_position: "218" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: evolvinglevel + data_type: int + column_key: "" + ordinal_position: "219" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: evomax + data_type: int + column_key: "" + ordinal_position: "220" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: clickname + data_type: varchar + column_key: "" + ordinal_position: "221" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: procname + data_type: varchar + column_key: "" + ordinal_position: "222" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: wornname + data_type: varchar + column_key: "" + ordinal_position: "223" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: focusname + data_type: varchar + column_key: "" + ordinal_position: "224" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: scrollname + data_type: varchar + column_key: "" + ordinal_position: "225" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: dsmitigation + data_type: smallint + column_key: "" + ordinal_position: "226" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_str + data_type: smallint + column_key: "" + ordinal_position: "227" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_int + data_type: smallint + column_key: "" + ordinal_position: "228" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_wis + data_type: smallint + column_key: "" + ordinal_position: "229" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_agi + data_type: smallint + column_key: "" + ordinal_position: "230" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_dex + data_type: smallint + column_key: "" + ordinal_position: "231" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_sta + data_type: smallint + column_key: "" + ordinal_position: "232" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_cha + data_type: smallint + column_key: "" + ordinal_position: "233" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_pr + data_type: smallint + column_key: "" + ordinal_position: "234" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_dr + data_type: smallint + column_key: "" + ordinal_position: "235" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_fr + data_type: smallint + column_key: "" + ordinal_position: "236" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_cr + data_type: smallint + column_key: "" + ordinal_position: "237" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_mr + data_type: smallint + column_key: "" + ordinal_position: "238" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_svcorrup + data_type: smallint + column_key: "" + ordinal_position: "239" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: healamt + data_type: smallint + column_key: "" + ordinal_position: "240" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: spelldmg + data_type: smallint + column_key: "" + ordinal_position: "241" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: clairvoyance + data_type: smallint + column_key: "" + ordinal_position: "242" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: backstabdmg + data_type: smallint + column_key: "" + ordinal_position: "243" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: created + data_type: varchar + column_key: "" + ordinal_position: "244" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: elitematerial + data_type: smallint + column_key: "" + ordinal_position: "245" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: ldonsellbackrate + data_type: smallint + column_key: "" + ordinal_position: "246" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: scriptfileid + data_type: mediumint + column_key: "" + ordinal_position: "247" + is_nullable: "NO" + column_type: mediumint(6) + column_default: "0" + - column: expendablearrow + data_type: smallint + column_key: "" + ordinal_position: "248" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: powersourcecapacity + data_type: mediumint + column_key: "" + ordinal_position: "249" + is_nullable: "NO" + column_type: mediumint(7) + column_default: "0" + - column: bardeffect + data_type: mediumint + column_key: "" + ordinal_position: "250" + is_nullable: "NO" + column_type: mediumint(6) + column_default: "0" + - column: bardeffecttype + data_type: smallint + column_key: "" + ordinal_position: "251" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardlevel2 + data_type: smallint + column_key: "" + ordinal_position: "252" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardlevel + data_type: smallint + column_key: "" + ordinal_position: "253" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk1 + data_type: smallint + column_key: "" + ordinal_position: "254" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk2 + data_type: smallint + column_key: "" + ordinal_position: "255" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk3 + data_type: smallint + column_key: "" + ordinal_position: "256" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk4 + data_type: smallint + column_key: "" + ordinal_position: "257" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk5 + data_type: smallint + column_key: "" + ordinal_position: "258" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardname + data_type: varchar + column_key: "" + ordinal_position: "259" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: bardunk7 + data_type: smallint + column_key: "" + ordinal_position: "260" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: UNK214 + data_type: smallint + column_key: "" + ordinal_position: "261" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: subtype + data_type: int + column_key: "" + ordinal_position: "262" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK220 + data_type: int + column_key: "" + ordinal_position: "263" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK221 + data_type: int + column_key: "" + ordinal_position: "264" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: heirloom + data_type: int + column_key: "" + ordinal_position: "265" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK223 + data_type: int + column_key: "" + ordinal_position: "266" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK224 + data_type: int + column_key: "" + ordinal_position: "267" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: UNK225 data_type: int - column_key: PRI - ordinal_position: "3" + column_key: "" + ordinal_position: "268" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: activityid + - column: UNK226 data_type: int - column_key: PRI - ordinal_position: "4" + column_key: "" + ordinal_position: "269" is_nullable: "NO" column_type: int(11) column_default: "0" -content_flags: - - column: id + - column: UNK227 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "270" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: flag_name - data_type: varchar - column_key: "" - ordinal_position: "2" - is_nullable: "YES" - column_type: varchar(75) - column_default: "NULL" - - column: enabled - data_type: tinyint - column_key: "" - ordinal_position: "3" - is_nullable: "YES" - column_type: tinyint(4) - column_default: "NULL" - - column: notes - data_type: text - column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: text - column_default: "NULL" -damageshieldtypes: - - column: spellid + column_default: "0" + - column: UNK228 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "271" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: type - data_type: tinyint + - column: UNK229 + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "272" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" -data_buckets: - - column: id - data_type: bigint - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: bigint(11) unsigned - column_default: "" - - column: key - data_type: varchar - column_key: MUL - ordinal_position: "2" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: value - data_type: text - column_key: "" - ordinal_position: "3" - is_nullable: "YES" - column_type: text - column_default: "NULL" - - column: expires + - column: UNK230 data_type: int column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "273" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: character_id - data_type: bigint + - column: UNK231 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "274" is_nullable: "NO" - column_type: bigint(11) + column_type: int(11) column_default: "0" - - column: npc_id - data_type: bigint + - column: UNK232 + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "275" is_nullable: "NO" - column_type: bigint(11) + column_type: int(11) column_default: "0" - - column: bot_id - data_type: bigint + - column: UNK233 + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "276" is_nullable: "NO" - column_type: bigint(11) + column_type: int(11) column_default: "0" -db_str: - - column: id + - column: UNK234 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "277" is_nullable: "NO" - column_type: int(10) - column_default: "" - - column: type + column_type: int(11) + column_default: "0" + - column: placeable data_type: int - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) - column_default: "" - - column: value - data_type: text column_key: "" - ordinal_position: "3" + ordinal_position: "278" is_nullable: "NO" - column_type: text - column_default: "" -db_version: - - column: version + column_type: int(11) + column_default: "0" + - column: UNK236 data_type: int column_key: "" - ordinal_position: "1" - is_nullable: "YES" + ordinal_position: "279" + is_nullable: "NO" column_type: int(11) column_default: "0" - - column: bots_version + - column: UNK237 data_type: int column_key: "" - ordinal_position: "2" - is_nullable: "YES" + ordinal_position: "280" + is_nullable: "NO" column_type: int(11) column_default: "0" -discord_webhooks: - - column: id + - column: UNK238 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "281" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: webhook_name - data_type: varchar - column_key: "" - ordinal_position: "2" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: webhook_url - data_type: varchar - column_key: "" - ordinal_position: "3" - is_nullable: "YES" - column_type: varchar(255) - column_default: "NULL" - - column: created_at - data_type: datetime - column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" - - column: deleted_at - data_type: datetime - column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: datetime - column_default: "NULL" -discovered_items: - - column: item_id + column_default: "0" + - column: UNK239 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "282" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: char_name - data_type: varchar + - column: UNK240 + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "283" is_nullable: "NO" - column_type: varchar(64) - column_default: '''''' - - column: discovered_date + column_type: int(11) + column_default: "0" + - column: UNK241 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "284" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: account_status + - column: epicitem data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "285" is_nullable: "NO" column_type: int(11) column_default: "0" -doors: +items_new: - column: id data_type: int - column_key: PRI + column_key: "" ordinal_position: "1" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: doorid + column_default: "0" + - column: minstatus data_type: smallint column_key: "" ordinal_position: "2" is_nullable: "NO" - column_type: smallint(4) + column_type: smallint(5) column_default: "0" - - column: zone + - column: Name data_type: varchar - column_key: MUL + column_key: "" ordinal_position: "3" - is_nullable: "YES" - column_type: varchar(32) - column_default: "NULL" - - column: version - data_type: smallint + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: aagi + data_type: int column_key: "" ordinal_position: "4" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) column_default: "0" - - column: name - data_type: varchar + - column: ac + data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: pos_y - data_type: float + column_type: int(11) + column_default: "0" + - column: accuracy + data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: pos_x - data_type: float + - column: acha + data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: pos_z - data_type: float + - column: adex + data_type: int column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: heading - data_type: float + - column: aint + data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: opentype - data_type: smallint + - column: artifactflag + data_type: tinyint column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: smallint(4) + column_type: tinyint(3) unsigned column_default: "0" - - column: guild - data_type: smallint + - column: asta + data_type: int column_key: "" ordinal_position: "11" is_nullable: "NO" - column_type: smallint(4) + column_type: int(11) column_default: "0" - - column: lockpick - data_type: smallint + - column: astr + data_type: int column_key: "" ordinal_position: "12" is_nullable: "NO" - column_type: smallint(4) + column_type: int(11) column_default: "0" - - column: keyitem + - column: attack data_type: int column_key: "" ordinal_position: "13" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: nokeyring - data_type: tinyint + - column: augrestrict + data_type: int column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: triggerdoor - data_type: smallint + - column: augslot1type + data_type: tinyint column_key: "" ordinal_position: "15" is_nullable: "NO" - column_type: smallint(4) + column_type: tinyint(3) column_default: "0" - - column: triggertype - data_type: smallint + - column: augslot1visible + data_type: tinyint column_key: "" ordinal_position: "16" is_nullable: "NO" - column_type: smallint(4) + column_type: tinyint(3) column_default: "0" - - column: disable_timer + - column: augslot2type data_type: tinyint column_key: "" ordinal_position: "17" is_nullable: "NO" - column_type: tinyint(2) + column_type: tinyint(3) column_default: "0" - - column: doorisopen - data_type: smallint + - column: augslot2visible + data_type: tinyint column_key: "" ordinal_position: "18" is_nullable: "NO" - column_type: smallint(4) + column_type: tinyint(3) column_default: "0" - - column: door_param - data_type: int + - column: augslot3type + data_type: tinyint column_key: "" ordinal_position: "19" is_nullable: "NO" - column_type: int(4) + column_type: tinyint(3) column_default: "0" - - column: dest_zone - data_type: varchar + - column: augslot3visible + data_type: tinyint column_key: "" ordinal_position: "20" - is_nullable: "YES" - column_type: varchar(32) - column_default: '''NONE''' - - column: dest_instance - data_type: int + is_nullable: "NO" + column_type: tinyint(3) + column_default: "0" + - column: augslot4type + data_type: tinyint column_key: "" ordinal_position: "21" is_nullable: "NO" - column_type: int(10) unsigned + column_type: tinyint(3) column_default: "0" - - column: dest_x - data_type: float + - column: augslot4visible + data_type: tinyint column_key: "" ordinal_position: "22" is_nullable: "NO" - column_type: float + column_type: tinyint(3) column_default: "0" - - column: dest_y - data_type: float + - column: augslot5type + data_type: tinyint column_key: "" ordinal_position: "23" is_nullable: "NO" - column_type: float + column_type: tinyint(3) column_default: "0" - - column: dest_z - data_type: float + - column: augslot5visible + data_type: tinyint column_key: "" ordinal_position: "24" is_nullable: "NO" - column_type: float + column_type: tinyint(3) column_default: "0" - - column: dest_heading - data_type: float + - column: augslot6type + data_type: tinyint column_key: "" ordinal_position: "25" is_nullable: "NO" - column_type: float + column_type: tinyint(3) column_default: "0" - - column: invert_state - data_type: int + - column: augslot6visible + data_type: tinyint column_key: "" ordinal_position: "26" is_nullable: "NO" - column_type: int(11) + column_type: tinyint(3) column_default: "0" - - column: incline + - column: augtype data_type: int column_key: "" ordinal_position: "27" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: size - data_type: smallint + - column: avoidance + data_type: int column_key: "" ordinal_position: "28" is_nullable: "NO" - column_type: smallint(5) unsigned - column_default: "100" - - column: buffer - data_type: float - column_key: "" - ordinal_position: "29" - is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: client_version_mask + - column: awis data_type: int column_key: "" - ordinal_position: "30" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "4294967295" - - column: is_ldon_door - data_type: smallint - column_key: "" - ordinal_position: "31" + ordinal_position: "29" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: dz_switch_id + - column: bagsize data_type: int column_key: "" - ordinal_position: "32" + ordinal_position: "30" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: min_expansion - data_type: tinyint - column_key: "" - ordinal_position: "33" - is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint - column_key: "" - ordinal_position: "34" - is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar - column_key: "" - ordinal_position: "35" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: content_flags_disabled - data_type: varchar - column_key: "" - ordinal_position: "36" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" -dynamic_zone_members: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: dynamic_zone_id - data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" - - column: character_id - data_type: int - column_key: MUL - ordinal_position: "3" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "0" -dynamic_zone_templates: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: zone_id + - column: bagslots data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "31" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: zone_version + - column: bagtype data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "32" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: name - data_type: varchar - column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: varchar(128) - column_default: '''''' - - column: min_players + - column: bagwr data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "33" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: max_players + - column: banedmgamt data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "34" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: duration_seconds + - column: banedmgraceamt data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "35" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: dz_switch_id + - column: banedmgbody data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "36" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: compass_zone_id + - column: banedmgrace data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "37" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: compass_x - data_type: float - column_key: "" - ordinal_position: "10" - is_nullable: "NO" - column_type: float - column_default: "0" - - column: compass_y - data_type: float + - column: bardtype + data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "38" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: compass_z - data_type: float + - column: bardvalue + data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "39" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: return_zone_id + - column: book data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "40" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: return_x - data_type: float + - column: casttime + data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "41" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: return_y - data_type: float + - column: casttime_ + data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "42" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: return_z - data_type: float + - column: charmfile + data_type: varchar column_key: "" - ordinal_position: "16" + ordinal_position: "43" is_nullable: "NO" - column_type: float - column_default: "0" - - column: return_h - data_type: float + column_type: varchar(32) + column_default: '''''' + - column: charmfileid + data_type: varchar column_key: "" - ordinal_position: "17" + ordinal_position: "44" is_nullable: "NO" - column_type: float - column_default: "0" - - column: override_zone_in - data_type: tinyint + column_type: varchar(32) + column_default: '''''' + - column: classes + data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "45" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" - - column: zone_in_x - data_type: float + - column: color + data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "46" is_nullable: "NO" - column_type: float + column_type: int(10) unsigned column_default: "0" - - column: zone_in_y - data_type: float + - column: combateffects + data_type: varchar column_key: "" - ordinal_position: "20" + ordinal_position: "47" is_nullable: "NO" - column_type: float - column_default: "0" - - column: zone_in_z - data_type: float + column_type: varchar(10) + column_default: '''''' + - column: extradmgskill + data_type: int column_key: "" - ordinal_position: "21" + ordinal_position: "48" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: zone_in_h - data_type: float + - column: extradmgamt + data_type: int column_key: "" - ordinal_position: "22" + ordinal_position: "49" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" -dynamic_zones: - - column: id + - column: price data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "50" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: instance_id + column_type: int(11) + column_default: "0" + - column: cr data_type: int - column_key: UNI - ordinal_position: "2" + column_key: "" + ordinal_position: "51" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: type - data_type: tinyint + - column: damage + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "52" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: uuid - data_type: varchar + - column: damageshield + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "53" is_nullable: "NO" - column_type: varchar(36) - column_default: "" - - column: name - data_type: varchar + column_type: int(11) + column_default: "0" + - column: deity + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "54" is_nullable: "NO" - column_type: varchar(128) - column_default: '''''' - - column: leader_id + column_type: int(11) + column_default: "0" + - column: delay data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "55" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: min_players + - column: augdistiller data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "56" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) unsigned column_default: "0" - - column: max_players + - column: dotshielding data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "57" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: dz_switch_id + - column: dr data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "58" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: compass_zone_id + - column: clicktype data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "59" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: compass_x - data_type: float + - column: clicklevel2 + data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "60" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: compass_y - data_type: float + - column: elemdmgtype + data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "61" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: compass_z - data_type: float + - column: elemdmgamt + data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "62" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: safe_return_zone_id + - column: endur data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "63" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: safe_return_x - data_type: float + - column: factionamt1 + data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "64" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: safe_return_y - data_type: float + - column: factionamt2 + data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "65" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: safe_return_z - data_type: float + - column: factionamt3 + data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "66" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: safe_return_heading - data_type: float + - column: factionamt4 + data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "67" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: zone_in_x - data_type: float + - column: factionmod1 + data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "68" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: zone_in_y - data_type: float + - column: factionmod2 + data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "69" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: zone_in_z - data_type: float + - column: factionmod3 + data_type: int column_key: "" - ordinal_position: "21" + ordinal_position: "70" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: zone_in_heading - data_type: float + - column: factionmod4 + data_type: int column_key: "" - ordinal_position: "22" + ordinal_position: "71" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: has_zone_in - data_type: tinyint + - column: filename + data_type: varchar column_key: "" - ordinal_position: "23" + ordinal_position: "72" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" -eqtime: - - column: minute - data_type: tinyint + column_type: varchar(32) + column_default: '''''' + - column: focuseffect + data_type: int column_key: "" - ordinal_position: "1" + ordinal_position: "73" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" - - column: hour - data_type: tinyint + - column: fr + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "74" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" - - column: day - data_type: tinyint + - column: fvnodrop + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "75" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" - - column: month - data_type: tinyint + - column: haste + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "76" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" - - column: year + - column: clicklevel data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "77" is_nullable: "NO" - column_type: int(4) + column_type: int(11) column_default: "0" - - column: realtime + - column: hp data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "78" is_nullable: "NO" column_type: int(11) column_default: "0" -expedition_lockouts: - - column: id + - column: regen data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "79" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: expedition_id + column_type: int(11) + column_default: "0" + - column: icon data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: event_name - data_type: varchar column_key: "" - ordinal_position: "3" + ordinal_position: "80" is_nullable: "NO" - column_type: varchar(256) - column_default: "" - - column: expire_time - data_type: datetime + column_type: int(11) + column_default: "0" + - column: idfile + data_type: varchar column_key: "" - ordinal_position: "4" + ordinal_position: "81" is_nullable: "NO" - column_type: datetime - column_default: current_timestamp() - - column: duration + column_type: varchar(30) + column_default: '''''' + - column: itemclass data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "82" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: from_expedition_uuid - data_type: varchar + - column: itemtype + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "83" is_nullable: "NO" - column_type: varchar(36) - column_default: "" -expeditions: - - column: id + column_type: int(11) + column_default: "0" + - column: ldonprice data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "84" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: dynamic_zone_id + column_type: int(11) + column_default: "0" + - column: ldontheme data_type: int - column_key: UNI - ordinal_position: "2" + column_key: "" + ordinal_position: "85" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: add_replay_on_join - data_type: tinyint + - column: ldonsold + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "86" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "1" - - column: is_locked - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: light + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "87" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" -faction_association: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + - column: lore + data_type: varchar + column_key: "" + ordinal_position: "88" is_nullable: "NO" - column_type: int(10) - column_default: "" - - column: id_1 + column_type: varchar(80) + column_default: '''''' + - column: loregroup data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "89" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_1 - data_type: float + - column: magic + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "90" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_2 + - column: mana data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "91" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_2 - data_type: float + - column: manaregen + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "92" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_3 + - column: enduranceregen data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "93" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_3 - data_type: float + - column: material + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "94" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_4 + - column: herosforgemodel data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "95" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_4 - data_type: float + - column: maxcharges + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "96" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_5 + - column: mr data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "97" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_5 - data_type: float + - column: nodrop + data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "98" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_6 + - column: norent data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "99" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_6 - data_type: float + - column: pendingloreflag + data_type: tinyint column_key: "" - ordinal_position: "13" + ordinal_position: "100" is_nullable: "NO" - column_type: float + column_type: tinyint(3) unsigned column_default: "0" - - column: id_7 + - column: pr data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "101" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_7 - data_type: float + - column: procrate + data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "102" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_8 + - column: races data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "103" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_8 - data_type: float + - column: range + data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "104" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_9 + - column: reclevel data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "105" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_9 - data_type: float + - column: recskill + data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "106" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: id_10 + - column: reqlevel data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "107" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: mod_10 + - column: sellrate data_type: float column_key: "" - ordinal_position: "21" + ordinal_position: "108" is_nullable: "NO" column_type: float column_default: "0" -faction_base_data: - - column: client_faction_id - data_type: smallint - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: smallint(6) - column_default: "" - - column: min - data_type: smallint - column_key: "" - ordinal_position: "2" - is_nullable: "YES" - column_type: smallint(6) - column_default: "-2000" - - column: max - data_type: smallint - column_key: "" - ordinal_position: "3" - is_nullable: "YES" - column_type: smallint(6) - column_default: "2000" - - column: unk_hero1 - data_type: smallint - column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: smallint(6) - column_default: "NULL" - - column: unk_hero2 - data_type: smallint - column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: smallint(6) - column_default: "NULL" - - column: unk_hero3 - data_type: smallint - column_key: "" - ordinal_position: "6" - is_nullable: "YES" - column_type: smallint(6) - column_default: "NULL" -faction_list: - - column: id + - column: shielding data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "109" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: name - data_type: varchar + column_default: "0" + - column: size + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "110" is_nullable: "NO" - column_type: varchar(50) - column_default: '''''' - - column: base - data_type: smallint + column_type: int(11) + column_default: "0" + - column: skillmodtype + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "111" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" -faction_list_mod: - - column: id + - column: skillmodvalue data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "112" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: faction_id + column_type: int(11) + column_default: "0" + - column: slots data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: mod - data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "113" is_nullable: "NO" - column_type: smallint(6) - column_default: "" - - column: mod_name - data_type: varchar + column_type: int(11) + column_default: "0" + - column: clickeffect + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "114" is_nullable: "NO" - column_type: varchar(16) - column_default: "" -faction_values: - - column: char_id + column_type: int(11) + column_default: "0" + - column: spellshield data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "115" is_nullable: "NO" - column_type: int(4) + column_type: int(11) column_default: "0" - - column: faction_id + - column: strikethrough data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "116" is_nullable: "NO" - column_type: int(4) + column_type: int(11) column_default: "0" - - column: current_value - data_type: smallint + - column: stunresist + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "117" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: temp + - column: summonedflag data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "118" is_nullable: "NO" - column_type: tinyint(3) + column_type: tinyint(3) unsigned column_default: "0" -fishing: - - column: id + - column: tradeskills data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "119" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: zoneid + column_default: "0" + - column: favor data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "120" is_nullable: "NO" - column_type: int(4) + column_type: int(11) column_default: "0" - - column: Itemid + - column: weight data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "121" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: skill_level - data_type: smallint + - column: UNK012 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "122" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: chance - data_type: smallint + - column: UNK013 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "123" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: npc_id + - column: benefitflag data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "124" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: npc_chance + - column: UNK054 data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "125" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: min_expansion - data_type: tinyint + - column: UNK059 + data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "126" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: booktype + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "127" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar - column_key: "" - ordinal_position: "10" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: content_flags_disabled - data_type: varchar - column_key: "" - ordinal_position: "11" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" -forage: - - column: id + column_type: int(11) + column_default: "0" + - column: recastdelay data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "128" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: zoneid + column_default: "0" + - column: recasttype data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "129" is_nullable: "NO" - column_type: int(4) + column_type: int(11) column_default: "0" - - column: Itemid + - column: guildfavor data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "130" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: level - data_type: smallint + - column: UNK123 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "131" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: chance - data_type: smallint + - column: UNK124 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "132" is_nullable: "NO" - column_type: smallint(6) + column_type: int(11) column_default: "0" - - column: min_expansion - data_type: tinyint + - column: attuneable + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "133" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: nopet + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "134" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar + column_type: int(11) + column_default: "0" + - column: updated + data_type: datetime column_key: "" - ordinal_position: "8" + ordinal_position: "135" is_nullable: "YES" - column_type: varchar(100) + column_type: datetime column_default: "NULL" - - column: content_flags_disabled + - column: comment data_type: varchar column_key: "" - ordinal_position: "9" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" -friends: - - column: charid - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(10) unsigned - column_default: "" - - column: type - data_type: tinyint - column_key: PRI - ordinal_position: "2" - is_nullable: "NO" - column_type: tinyint(1) unsigned - column_default: "1" - - column: name - data_type: varchar - column_key: PRI - ordinal_position: "3" - is_nullable: "NO" - column_type: varchar(64) - column_default: "" -global_loot: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + ordinal_position: "136" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: description - data_type: varchar - column_key: "" - ordinal_position: "2" - is_nullable: "YES" column_type: varchar(255) - column_default: "NULL" - - column: loottable_id + column_default: '''''' + - column: UNK127 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "137" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: enabled - data_type: tinyint - column_key: "" - ordinal_position: "4" - is_nullable: "NO" - column_type: tinyint(4) - column_default: "1" - - column: min_level + column_default: "0" + - column: pointtype data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "138" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: max_level + - column: potionbelt data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "139" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: rare - data_type: tinyint - column_key: "" - ordinal_position: "7" - is_nullable: "YES" - column_type: tinyint(4) - column_default: "NULL" - - column: raid - data_type: tinyint - column_key: "" - ordinal_position: "8" - is_nullable: "YES" - column_type: tinyint(4) - column_default: "NULL" - - column: race - data_type: mediumtext - column_key: "" - ordinal_position: "9" - is_nullable: "YES" - column_type: mediumtext - column_default: "NULL" - - column: class - data_type: mediumtext - column_key: "" - ordinal_position: "10" - is_nullable: "YES" - column_type: mediumtext - column_default: "NULL" - - column: bodytype - data_type: mediumtext - column_key: "" - ordinal_position: "11" - is_nullable: "YES" - column_type: mediumtext - column_default: "NULL" - - column: zone - data_type: mediumtext - column_key: "" - ordinal_position: "12" - is_nullable: "YES" - column_type: mediumtext - column_default: "NULL" - - column: hot_zone - data_type: tinyint - column_key: "" - ordinal_position: "13" - is_nullable: "YES" - column_type: tinyint(4) - column_default: "NULL" - - column: min_expansion - data_type: tinyint + - column: potionbeltslots + data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "140" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: stacksize + data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "141" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar - column_key: "" - ordinal_position: "16" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: content_flags_disabled - data_type: varchar - column_key: "" - ordinal_position: "17" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" -gm_ips: - - column: name - data_type: varchar + column_type: int(11) + column_default: "0" + - column: notransfer + data_type: int column_key: "" - ordinal_position: "1" + ordinal_position: "142" is_nullable: "NO" - column_type: varchar(64) - column_default: "" - - column: account_id + column_type: int(11) + column_default: "0" + - column: stackable data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "143" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: ip_address + column_default: "0" + - column: UNK134 data_type: varchar - column_key: PRI - ordinal_position: "3" + column_key: "" + ordinal_position: "144" is_nullable: "NO" - column_type: varchar(15) - column_default: "" -graveyard: - - column: id + column_type: varchar(255) + column_default: '''''' + - column: UNK137 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "145" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: zone_id - data_type: int - column_key: MUL - ordinal_position: "2" - is_nullable: "NO" - column_type: int(4) column_default: "0" - - column: x - data_type: float + - column: proceffect + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "146" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: "y" - data_type: float + - column: proctype + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "147" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: z - data_type: float + - column: proclevel2 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "148" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: heading - data_type: float + - column: proclevel + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "149" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" -grid: - - column: id + - column: UNK142 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "150" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: zoneid + - column: worneffect data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "151" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: type + - column: worntype data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "152" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: type2 + - column: wornlevel2 data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "153" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" -grid_entries: - - column: gridid + - column: wornlevel data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "154" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: zoneid + - column: UNK147 data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "155" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: number + - column: focustype data_type: int - column_key: PRI - ordinal_position: "3" + column_key: "" + ordinal_position: "156" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: x - data_type: float + - column: focuslevel2 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "157" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: "y" - data_type: float + - column: focuslevel + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "158" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: z - data_type: float + - column: UNK152 + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "159" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: heading - data_type: float + - column: scrolleffect + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "160" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: pause + - column: scrolltype data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "161" is_nullable: "NO" - column_type: int(10) + column_type: int(11) column_default: "0" - - column: centerpoint - data_type: tinyint + - column: scrolllevel2 + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "162" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" -ground_spawns: - - column: id + - column: scrolllevel data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "163" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "" - - column: zoneid + column_type: int(11) + column_default: "0" + - column: UNK157 data_type: int - column_key: MUL - ordinal_position: "2" + column_key: "" + ordinal_position: "164" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: version - data_type: smallint + - column: serialized + data_type: datetime column_key: "" - ordinal_position: "3" + ordinal_position: "165" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: verified + data_type: datetime + column_key: "" + ordinal_position: "166" + is_nullable: "YES" + column_type: datetime + column_default: "NULL" + - column: serialization + data_type: text + column_key: "" + ordinal_position: "167" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: source + data_type: varchar + column_key: "" + ordinal_position: "168" is_nullable: "NO" - column_type: smallint(5) + column_type: varchar(20) + column_default: '''''' + - column: UNK033 + data_type: int + column_key: "" + ordinal_position: "169" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: max_x - data_type: float + - column: lorefile + data_type: varchar column_key: "" - ordinal_position: "4" + ordinal_position: "170" is_nullable: "NO" - column_type: float - column_default: "2000" - - column: max_y - data_type: float + column_type: varchar(32) + column_default: '''''' + - column: UNK014 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "171" is_nullable: "NO" - column_type: float - column_default: "2000" - - column: max_z - data_type: float + column_type: int(11) + column_default: "0" + - column: svcorruption + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "172" is_nullable: "NO" - column_type: float - column_default: "10000" - - column: min_x - data_type: float + column_type: int(11) + column_default: "0" + - column: skillmodmax + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "173" is_nullable: "NO" - column_type: float - column_default: "-2000" - - column: min_y - data_type: float + column_type: int(11) + column_default: "0" + - column: UNK060 + data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "174" is_nullable: "NO" - column_type: float - column_default: "-2000" - - column: heading - data_type: float + column_type: int(11) + column_default: "0" + - column: augslot1unk2 + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "175" is_nullable: "NO" - column_type: float + column_type: int(11) column_default: "0" - - column: name - data_type: varchar + - column: augslot2unk2 + data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "176" is_nullable: "NO" - column_type: varchar(16) - column_default: '''''' - - column: item + column_type: int(11) + column_default: "0" + - column: augslot3unk2 + data_type: int + column_key: "" + ordinal_position: "177" + is_nullable: "NO" + column_type: int(11) + column_default: "0" + - column: augslot4unk2 data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "178" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: max_allowed + - column: augslot5unk2 data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "179" is_nullable: "NO" - column_type: int(10) unsigned - column_default: "1" - - column: comment - data_type: varchar + column_type: int(11) + column_default: "0" + - column: augslot6unk2 + data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "180" is_nullable: "NO" - column_type: varchar(255) - column_default: '''''' - - column: respawn_timer + column_type: int(11) + column_default: "0" + - column: UNK120 data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "181" is_nullable: "NO" - column_type: int(11) unsigned - column_default: "300" - - column: min_expansion - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: UNK121 + data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "182" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: questitemflag + data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "183" is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar - column_key: "" - ordinal_position: "17" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: content_flags_disabled - data_type: varchar + column_type: int(11) + column_default: "0" + - column: UNK132 + data_type: text column_key: "" - ordinal_position: "18" + ordinal_position: "184" is_nullable: "YES" - column_type: varchar(100) + column_type: text column_default: "NULL" -group_id: - - column: groupid - data_type: int - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: int(4) - column_default: "" - - column: charid + - column: clickunk5 data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "185" is_nullable: "NO" - column_type: int(4) - column_default: "" - - column: name + column_type: int(11) + column_default: "0" + - column: clickunk6 data_type: varchar column_key: "" - ordinal_position: "3" - is_nullable: "NO" - column_type: varchar(64) - column_default: "" - - column: ismerc - data_type: tinyint - column_key: PRI - ordinal_position: "4" + ordinal_position: "186" is_nullable: "NO" - column_type: tinyint(3) - column_default: "0" -guild_bank: - - column: guildid + column_type: varchar(32) + column_default: '''''' + - column: clickunk7 data_type: int - column_key: MUL - ordinal_position: "1" + column_key: "" + ordinal_position: "187" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: area - data_type: tinyint - column_key: MUL - ordinal_position: "2" + - column: procunk1 + data_type: int + column_key: "" + ordinal_position: "188" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: slot + - column: procunk2 data_type: int - column_key: MUL - ordinal_position: "3" + column_key: "" + ordinal_position: "189" is_nullable: "NO" - column_type: int(4) unsigned + column_type: int(11) column_default: "0" - - column: itemid + - column: procunk3 data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "190" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: qty + - column: procunk4 data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "191" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: donator + - column: procunk6 data_type: varchar column_key: "" - ordinal_position: "6" - is_nullable: "YES" - column_type: varchar(64) - column_default: "NULL" - - column: permissions - data_type: tinyint + ordinal_position: "192" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: procunk7 + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "193" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: whofor - data_type: varchar - column_key: "" - ordinal_position: "8" - is_nullable: "YES" - column_type: varchar(64) - column_default: "NULL" -guild_members: - - column: char_id + - column: wornunk1 data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "194" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: guild_id - data_type: mediumint + - column: wornunk2 + data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "195" is_nullable: "NO" - column_type: mediumint(8) unsigned + column_type: int(11) column_default: "0" - - column: rank - data_type: tinyint + - column: wornunk3 + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "196" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: tribute_enable - data_type: tinyint + - column: wornunk4 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "197" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: total_tribute + - column: wornunk5 data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "198" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: last_tribute + - column: wornunk6 + data_type: varchar + column_key: "" + ordinal_position: "199" + is_nullable: "NO" + column_type: varchar(32) + column_default: '''''' + - column: wornunk7 data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "200" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: banker - data_type: tinyint + - column: focusunk1 + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "201" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: public_note - data_type: text + - column: focusunk2 + data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "202" is_nullable: "NO" - column_type: text - column_default: "" - - column: alt - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: focusunk3 + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "203" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" -guild_ranks: - - column: guild_id - data_type: mediumint - column_key: PRI - ordinal_position: "1" + - column: focusunk4 + data_type: int + column_key: "" + ordinal_position: "204" is_nullable: "NO" - column_type: mediumint(8) unsigned - column_default: "0" - - column: rank - data_type: tinyint - column_key: PRI - ordinal_position: "2" + column_type: int(11) + column_default: "0" + - column: focusunk5 + data_type: int + column_key: "" + ordinal_position: "205" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: title + - column: focusunk6 data_type: varchar column_key: "" - ordinal_position: "3" + ordinal_position: "206" is_nullable: "NO" - column_type: varchar(128) + column_type: varchar(32) column_default: '''''' - - column: can_hear - data_type: tinyint + - column: focusunk7 + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "207" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: can_speak - data_type: tinyint + - column: scrollunk1 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "208" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - - column: can_invite - data_type: tinyint + - column: scrollunk2 + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "209" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: can_remove - data_type: tinyint + - column: scrollunk3 + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "210" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: can_promote - data_type: tinyint + - column: scrollunk4 + data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "211" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: can_demote - data_type: tinyint + - column: scrollunk5 + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "212" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) column_default: "0" - - column: can_motd - data_type: tinyint + - column: scrollunk6 + data_type: varchar column_key: "" - ordinal_position: "10" + ordinal_position: "213" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: can_warpeace - data_type: tinyint + column_type: varchar(32) + column_default: '''''' + - column: scrollunk7 + data_type: int column_key: "" - ordinal_position: "11" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" -guild_relations: - - column: guild1 - data_type: mediumint - column_key: PRI - ordinal_position: "1" - is_nullable: "NO" - column_type: mediumint(8) unsigned - column_default: "0" - - column: guild2 - data_type: mediumint - column_key: PRI - ordinal_position: "2" + ordinal_position: "214" is_nullable: "NO" - column_type: mediumint(8) unsigned + column_type: int(11) column_default: "0" - - column: relation - data_type: tinyint + - column: UNK193 + data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "215" is_nullable: "NO" - column_type: tinyint(4) + column_type: int(11) column_default: "0" -guilds: - - column: id + - column: purity data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "216" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: name - data_type: varchar - column_key: UNI - ordinal_position: "2" - is_nullable: "NO" - column_type: varchar(32) - column_default: '''''' - - column: leader + column_default: "0" + - column: evoitem data_type: int - column_key: UNI - ordinal_position: "3" + column_key: "" + ordinal_position: "217" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: minstatus - data_type: smallint + - column: evoid + data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "218" is_nullable: "NO" - column_type: smallint(5) + column_type: int(11) column_default: "0" - - column: motd - data_type: text + - column: evolvinglevel + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "219" is_nullable: "NO" - column_type: text - column_default: "" - - column: tribute + column_type: int(11) + column_default: "0" + - column: evomax data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "220" is_nullable: "NO" - column_type: int(10) unsigned + column_type: int(11) column_default: "0" - - column: motd_setter + - column: clickname data_type: varchar column_key: "" - ordinal_position: "7" + ordinal_position: "221" is_nullable: "NO" column_type: varchar(64) column_default: '''''' - - column: channel + - column: procname data_type: varchar column_key: "" - ordinal_position: "8" + ordinal_position: "222" is_nullable: "NO" - column_type: varchar(128) + column_type: varchar(64) column_default: '''''' - - column: url + - column: wornname data_type: varchar column_key: "" - ordinal_position: "9" + ordinal_position: "223" is_nullable: "NO" - column_type: varchar(512) + column_type: varchar(64) column_default: '''''' -horses: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + - column: focusname + data_type: varchar + column_key: "" + ordinal_position: "224" is_nullable: "NO" - column_type: int(20) - column_default: "" - - column: filename + column_type: varchar(64) + column_default: '''''' + - column: scrollname data_type: varchar - column_key: UNI - ordinal_position: "2" + column_key: "" + ordinal_position: "225" is_nullable: "NO" - column_type: varchar(32) + column_type: varchar(64) column_default: '''''' - - column: race + - column: dsmitigation data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "226" is_nullable: "NO" - column_type: smallint(3) - column_default: "216" - - column: gender - data_type: tinyint + column_type: smallint(6) + column_default: "0" + - column: heroic_str + data_type: smallint column_key: "" - ordinal_position: "4" + ordinal_position: "227" is_nullable: "NO" - column_type: tinyint(1) + column_type: smallint(6) column_default: "0" - - column: texture - data_type: tinyint + - column: heroic_int + data_type: smallint column_key: "" - ordinal_position: "5" + ordinal_position: "228" is_nullable: "NO" - column_type: tinyint(2) + column_type: smallint(6) column_default: "0" - - column: mountspeed - data_type: float + - column: heroic_wis + data_type: smallint column_key: "" - ordinal_position: "6" + ordinal_position: "229" is_nullable: "NO" - column_type: float(4,2) - column_default: "0.75" - - column: notes - data_type: varchar + column_type: smallint(6) + column_default: "0" + - column: heroic_agi + data_type: smallint column_key: "" - ordinal_position: "7" - is_nullable: "YES" - column_type: varchar(64) - column_default: '''Notes''' -instance_list: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + ordinal_position: "230" is_nullable: "NO" - column_type: int(11) - column_default: "" - - column: zone - data_type: int + column_type: smallint(6) + column_default: "0" + - column: heroic_dex + data_type: smallint column_key: "" - ordinal_position: "2" + ordinal_position: "231" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_sta + data_type: smallint + column_key: "" + ordinal_position: "232" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_cha + data_type: smallint + column_key: "" + ordinal_position: "233" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: heroic_pr + data_type: smallint + column_key: "" + ordinal_position: "234" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: version - data_type: tinyint + - column: heroic_dr + data_type: smallint column_key: "" - ordinal_position: "3" + ordinal_position: "235" is_nullable: "NO" - column_type: tinyint(4) unsigned + column_type: smallint(6) column_default: "0" - - column: is_global - data_type: tinyint + - column: heroic_fr + data_type: smallint column_key: "" - ordinal_position: "4" + ordinal_position: "236" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: smallint(6) column_default: "0" - - column: start_time - data_type: int + - column: heroic_cr + data_type: smallint column_key: "" - ordinal_position: "5" + ordinal_position: "237" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: duration - data_type: int + - column: heroic_mr + data_type: smallint column_key: "" - ordinal_position: "6" + ordinal_position: "238" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: never_expires - data_type: tinyint + - column: heroic_svcorrup + data_type: smallint column_key: "" - ordinal_position: "7" + ordinal_position: "239" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: smallint(6) column_default: "0" -instance_list_player: - - column: id - data_type: int - column_key: PRI - ordinal_position: "1" + - column: healamt + data_type: smallint + column_key: "" + ordinal_position: "240" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: charid - data_type: int - column_key: PRI - ordinal_position: "2" + - column: spelldmg + data_type: smallint + column_key: "" + ordinal_position: "241" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" -inventory: - - column: charid - data_type: int - column_key: PRI - ordinal_position: "1" + - column: clairvoyance + data_type: smallint + column_key: "" + ordinal_position: "242" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: slotid - data_type: mediumint - column_key: PRI - ordinal_position: "2" + - column: backstabdmg + data_type: smallint + column_key: "" + ordinal_position: "243" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: smallint(6) column_default: "0" - - column: itemid - data_type: int + - column: created + data_type: varchar column_key: "" - ordinal_position: "3" - is_nullable: "YES" - column_type: int(11) unsigned - column_default: "0" - - column: charges + ordinal_position: "244" + is_nullable: "NO" + column_type: varchar(64) + column_default: '''''' + - column: elitematerial data_type: smallint column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: smallint(3) unsigned + ordinal_position: "245" + is_nullable: "NO" + column_type: smallint(6) column_default: "0" - - column: color - data_type: int + - column: ldonsellbackrate + data_type: smallint column_key: "" - ordinal_position: "5" + ordinal_position: "246" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: augslot1 + - column: scriptfileid data_type: mediumint column_key: "" - ordinal_position: "6" + ordinal_position: "247" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: mediumint(6) column_default: "0" - - column: augslot2 - data_type: mediumint + - column: expendablearrow + data_type: smallint column_key: "" - ordinal_position: "7" + ordinal_position: "248" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: smallint(6) column_default: "0" - - column: augslot3 + - column: powersourcecapacity data_type: mediumint column_key: "" - ordinal_position: "8" + ordinal_position: "249" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: mediumint(7) column_default: "0" - - column: augslot4 + - column: bardeffect data_type: mediumint column_key: "" - ordinal_position: "9" + ordinal_position: "250" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: mediumint(6) column_default: "0" - - column: augslot5 - data_type: mediumint + - column: bardeffecttype + data_type: smallint column_key: "" - ordinal_position: "10" - is_nullable: "YES" - column_type: mediumint(7) unsigned + ordinal_position: "251" + is_nullable: "NO" + column_type: smallint(6) column_default: "0" - - column: augslot6 - data_type: mediumint + - column: bardlevel2 + data_type: smallint column_key: "" - ordinal_position: "11" + ordinal_position: "252" is_nullable: "NO" - column_type: mediumint(7) + column_type: smallint(6) column_default: "0" - - column: instnodrop - data_type: tinyint + - column: bardlevel + data_type: smallint column_key: "" - ordinal_position: "12" + ordinal_position: "253" is_nullable: "NO" - column_type: tinyint(1) unsigned + column_type: smallint(6) column_default: "0" - - column: custom_data - data_type: text + - column: bardunk1 + data_type: smallint column_key: "" - ordinal_position: "13" - is_nullable: "YES" - column_type: text - column_default: "NULL" - - column: ornamenticon - data_type: int + ordinal_position: "254" + is_nullable: "NO" + column_type: smallint(6) + column_default: "0" + - column: bardunk2 + data_type: smallint column_key: "" - ordinal_position: "14" + ordinal_position: "255" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: ornamentidfile - data_type: int + - column: bardunk3 + data_type: smallint column_key: "" - ordinal_position: "15" + ordinal_position: "256" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: ornament_hero_model - data_type: int + - column: bardunk4 + data_type: smallint column_key: "" - ordinal_position: "16" + ordinal_position: "257" is_nullable: "NO" - column_type: int(11) + column_type: smallint(6) column_default: "0" -inventory_snapshots: - - column: time_index - data_type: int - column_key: PRI - ordinal_position: "1" + - column: bardunk5 + data_type: smallint + column_key: "" + ordinal_position: "258" is_nullable: "NO" - column_type: int(11) unsigned + column_type: smallint(6) column_default: "0" - - column: charid - data_type: int - column_key: PRI - ordinal_position: "2" + - column: bardname + data_type: varchar + column_key: "" + ordinal_position: "259" is_nullable: "NO" - column_type: int(11) unsigned + column_type: varchar(64) + column_default: '''''' + - column: bardunk7 + data_type: smallint + column_key: "" + ordinal_position: "260" + is_nullable: "NO" + column_type: smallint(6) column_default: "0" - - column: slotid - data_type: mediumint - column_key: PRI - ordinal_position: "3" + - column: UNK214 + data_type: smallint + column_key: "" + ordinal_position: "261" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: smallint(6) column_default: "0" - - column: itemid + - column: subtype data_type: int column_key: "" - ordinal_position: "4" - is_nullable: "YES" - column_type: int(11) unsigned + ordinal_position: "262" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: charges - data_type: smallint + - column: UNK220 + data_type: int column_key: "" - ordinal_position: "5" - is_nullable: "YES" - column_type: smallint(3) unsigned + ordinal_position: "263" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: color + - column: UNK221 data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "264" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: augslot1 - data_type: mediumint + - column: heirloom + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "265" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(11) column_default: "0" - - column: augslot2 - data_type: mediumint + - column: UNK223 + data_type: int column_key: "" - ordinal_position: "8" + ordinal_position: "266" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(11) column_default: "0" - - column: augslot3 - data_type: mediumint + - column: UNK224 + data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "267" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(11) column_default: "0" - - column: augslot4 - data_type: mediumint + - column: UNK225 + data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "268" is_nullable: "NO" - column_type: mediumint(7) unsigned + column_type: int(11) column_default: "0" - - column: augslot5 - data_type: mediumint + - column: UNK226 + data_type: int column_key: "" - ordinal_position: "11" - is_nullable: "YES" - column_type: mediumint(7) unsigned + ordinal_position: "269" + is_nullable: "NO" + column_type: int(11) column_default: "0" - - column: augslot6 - data_type: mediumint + - column: UNK227 + data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "270" is_nullable: "NO" - column_type: mediumint(7) + column_type: int(11) column_default: "0" - - column: instnodrop - data_type: tinyint + - column: UNK228 + data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "271" is_nullable: "NO" - column_type: tinyint(1) unsigned + column_type: int(11) column_default: "0" - - column: custom_data - data_type: text - column_key: "" - ordinal_position: "14" - is_nullable: "YES" - column_type: text - column_default: "NULL" - - column: ornamenticon + - column: UNK229 data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "272" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: ornamentidfile + - column: UNK230 data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "273" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: ornament_hero_model + - column: UNK231 data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "274" is_nullable: "NO" column_type: int(11) column_default: "0" -inventory_versions: - - column: version + - column: UNK232 data_type: int column_key: "" - ordinal_position: "1" + ordinal_position: "275" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: step + - column: UNK233 data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "276" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" - - column: bot_step + - column: UNK234 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "277" is_nullable: "NO" - column_type: int(11) unsigned + column_type: int(11) column_default: "0" -ip_exemptions: - - column: exemption_id + - column: placeable data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "278" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: exemption_ip - data_type: varchar - column_key: "" - ordinal_position: "2" - is_nullable: "YES" - column_type: varchar(255) - column_default: "NULL" - - column: exemption_amount + column_default: "0" + - column: UNK236 data_type: int column_key: "" - ordinal_position: "3" - is_nullable: "YES" + ordinal_position: "279" + is_nullable: "NO" column_type: int(11) - column_default: "NULL" -item_tick: - - column: it_itemid + column_default: "0" + - column: UNK237 data_type: int column_key: "" - ordinal_position: "1" + ordinal_position: "280" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: it_chance + column_default: "0" + - column: UNK238 data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "281" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: it_level + column_default: "0" + - column: UNK239 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "282" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: it_id + column_default: "0" + - column: UNK240 data_type: int - column_key: PRI - ordinal_position: "4" + column_key: "" + ordinal_position: "283" is_nullable: "NO" column_type: int(11) - column_default: "" - - column: it_qglobal - data_type: varchar + column_default: "0" + - column: UNK241 + data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "284" is_nullable: "NO" - column_type: varchar(50) - column_default: "" - - column: it_bagslot - data_type: tinyint + column_type: int(11) + column_default: "0" + - column: epicitem + data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "285" is_nullable: "NO" - column_type: tinyint(4) - column_default: "" -items: + column_type: int(11) + column_default: "0" +items_peq: - column: id data_type: int column_key: PRI @@ -10066,17 +13653,24 @@ items: column_type: int(11) column_default: "0" keyring: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "" - column: char_id data_type: int column_key: "" - ordinal_position: "1" + ordinal_position: "2" is_nullable: "NO" column_type: int(11) column_default: "0" - column: item_id data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "3" is_nullable: "NO" column_type: int(11) column_default: "0" @@ -10675,6 +14269,34 @@ lootdrop_entries: is_nullable: "NO" column_type: smallint(5) unsigned column_default: "0" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "14" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "15" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" loottable: - column: id data_type: int @@ -10859,7 +14481,7 @@ merchantlist: column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - column: item data_type: int @@ -10975,11 +14597,11 @@ merchantlist_temp: column_type: int(10) unsigned column_default: "0" - column: slot - data_type: tinyint + data_type: int column_key: PRI ordinal_position: "2" is_nullable: "NO" - column_type: tinyint(3) unsigned + column_type: int(11) unsigned column_default: "0" - column: zone_id data_type: int @@ -11034,7 +14656,7 @@ npc_emotes: column_default: "" - column: emoteid data_type: int - column_key: MUL + column_key: "" ordinal_position: "2" is_nullable: "NO" column_type: int(10) unsigned @@ -11140,234 +14762,220 @@ npc_scale_global_base: is_nullable: "NO" column_type: int(11) column_default: "" - - column: zone_id - data_type: int - column_key: PRI - ordinal_position: "3" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - - column: instance_version - data_type: int - column_key: PRI - ordinal_position: "4" - is_nullable: "NO" - column_type: int(11) unsigned - column_default: "0" - column: zone_id_list data_type: text - column_key: "" - ordinal_position: "5" + column_key: PRI + ordinal_position: "3" is_nullable: "NO" column_type: text column_default: "" - column: instance_version_list data_type: text - column_key: "" - ordinal_position: "6" + column_key: PRI + ordinal_position: "4" is_nullable: "NO" column_type: text column_default: "" - column: ac data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "5" is_nullable: "NO" column_type: int(11) column_default: "0" - column: hp data_type: bigint column_key: "" - ordinal_position: "8" + ordinal_position: "6" is_nullable: "NO" column_type: bigint(20) column_default: "0" - column: accuracy data_type: int column_key: "" - ordinal_position: "9" + ordinal_position: "7" is_nullable: "NO" column_type: int(11) column_default: "0" - column: slow_mitigation data_type: int column_key: "" - ordinal_position: "10" + ordinal_position: "8" is_nullable: "NO" column_type: int(11) column_default: "0" - column: attack data_type: int column_key: "" - ordinal_position: "11" + ordinal_position: "9" is_nullable: "NO" column_type: int(11) column_default: "0" - column: strength data_type: int column_key: "" - ordinal_position: "12" + ordinal_position: "10" is_nullable: "NO" column_type: int(11) column_default: "0" - column: stamina data_type: int column_key: "" - ordinal_position: "13" + ordinal_position: "11" is_nullable: "NO" column_type: int(11) column_default: "0" - column: dexterity data_type: int column_key: "" - ordinal_position: "14" + ordinal_position: "12" is_nullable: "NO" column_type: int(11) column_default: "0" - column: agility data_type: int column_key: "" - ordinal_position: "15" + ordinal_position: "13" is_nullable: "NO" column_type: int(11) column_default: "0" - column: intelligence data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "14" is_nullable: "NO" column_type: int(11) column_default: "0" - column: wisdom data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "15" is_nullable: "NO" column_type: int(11) column_default: "0" - column: charisma data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "16" is_nullable: "NO" column_type: int(11) column_default: "0" - column: magic_resist data_type: int column_key: "" - ordinal_position: "19" + ordinal_position: "17" is_nullable: "NO" column_type: int(11) column_default: "0" - column: cold_resist data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "18" is_nullable: "NO" column_type: int(11) column_default: "0" - column: fire_resist data_type: int column_key: "" - ordinal_position: "21" + ordinal_position: "19" is_nullable: "NO" column_type: int(11) column_default: "0" - column: poison_resist data_type: int column_key: "" - ordinal_position: "22" + ordinal_position: "20" is_nullable: "NO" column_type: int(11) column_default: "0" - column: disease_resist data_type: int column_key: "" - ordinal_position: "23" + ordinal_position: "21" is_nullable: "NO" column_type: int(11) column_default: "0" - column: corruption_resist data_type: int column_key: "" - ordinal_position: "24" + ordinal_position: "22" is_nullable: "NO" column_type: int(11) column_default: "0" - column: physical_resist data_type: int column_key: "" - ordinal_position: "25" + ordinal_position: "23" is_nullable: "NO" column_type: int(11) column_default: "0" - column: min_dmg data_type: int column_key: "" - ordinal_position: "26" + ordinal_position: "24" is_nullable: "NO" column_type: int(11) column_default: "0" - column: max_dmg data_type: int column_key: "" - ordinal_position: "27" + ordinal_position: "25" is_nullable: "NO" column_type: int(11) column_default: "0" - column: hp_regen_rate data_type: bigint column_key: "" - ordinal_position: "28" + ordinal_position: "26" is_nullable: "NO" column_type: bigint(20) column_default: "0" - column: hp_regen_per_second data_type: bigint column_key: "" - ordinal_position: "29" + ordinal_position: "27" is_nullable: "NO" column_type: bigint(20) column_default: "0" - column: attack_delay data_type: int column_key: "" - ordinal_position: "30" + ordinal_position: "28" is_nullable: "NO" column_type: int(11) column_default: "0" - column: spell_scale data_type: int column_key: "" - ordinal_position: "31" + ordinal_position: "29" is_nullable: "NO" column_type: int(11) column_default: "100" - column: heal_scale data_type: int column_key: "" - ordinal_position: "32" + ordinal_position: "30" is_nullable: "NO" column_type: int(11) column_default: "100" - column: avoidance data_type: int column_key: "" - ordinal_position: "33" + ordinal_position: "31" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - column: heroic_strikethrough data_type: int column_key: "" - ordinal_position: "34" + ordinal_position: "32" is_nullable: "NO" column_type: int(11) column_default: "0" - column: special_abilities data_type: text column_key: "" - ordinal_position: "35" + ordinal_position: "33" is_nullable: "NO" column_type: text column_default: "" @@ -11683,6 +15291,34 @@ npc_spells_entries: is_nullable: "YES" column_type: smallint(5) column_default: "0" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "15" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled + data_type: varchar + column_key: "" + ordinal_position: "16" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" npc_types: - column: id data_type: int @@ -11817,762 +15453,776 @@ npc_types: is_nullable: "NO" column_type: int(11) unsigned column_default: "0" + - column: greed + data_type: tinyint + column_key: "" + ordinal_position: "20" + is_nullable: "NO" + column_type: tinyint(8) unsigned + column_default: "0" - column: alt_currency_id data_type: int column_key: "" - ordinal_position: "20" + ordinal_position: "21" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - column: npc_spells_id data_type: int column_key: "" - ordinal_position: "21" + ordinal_position: "22" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - column: npc_spells_effects_id data_type: int column_key: "" - ordinal_position: "22" + ordinal_position: "23" is_nullable: "NO" column_type: int(11) unsigned column_default: "0" - column: npc_faction_id data_type: int column_key: "" - ordinal_position: "23" + ordinal_position: "24" is_nullable: "NO" column_type: int(11) column_default: "0" - column: adventure_template_id data_type: int column_key: "" - ordinal_position: "24" + ordinal_position: "25" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: trap_template data_type: int column_key: "" - ordinal_position: "25" + ordinal_position: "26" is_nullable: "YES" column_type: int(10) unsigned column_default: "0" - column: mindmg data_type: int column_key: "" - ordinal_position: "26" + ordinal_position: "27" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: maxdmg data_type: int column_key: "" - ordinal_position: "27" + ordinal_position: "28" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: attack_count data_type: smallint column_key: "" - ordinal_position: "28" + ordinal_position: "29" is_nullable: "NO" column_type: smallint(6) column_default: "-1" - column: npcspecialattks data_type: varchar column_key: "" - ordinal_position: "29" + ordinal_position: "30" is_nullable: "NO" column_type: varchar(36) column_default: '''''' - column: special_abilities data_type: text column_key: "" - ordinal_position: "30" + ordinal_position: "31" is_nullable: "YES" column_type: text column_default: "NULL" - column: aggroradius data_type: int column_key: "" - ordinal_position: "31" + ordinal_position: "32" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: assistradius data_type: int column_key: "" - ordinal_position: "32" + ordinal_position: "33" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: face data_type: int column_key: "" - ordinal_position: "33" + ordinal_position: "34" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_hairstyle data_type: int column_key: "" - ordinal_position: "34" + ordinal_position: "35" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_haircolor data_type: int column_key: "" - ordinal_position: "35" + ordinal_position: "36" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_eyecolor data_type: int column_key: "" - ordinal_position: "36" + ordinal_position: "37" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_eyecolor2 data_type: int column_key: "" - ordinal_position: "37" + ordinal_position: "38" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_beardcolor data_type: int column_key: "" - ordinal_position: "38" + ordinal_position: "39" is_nullable: "NO" column_type: int(10) unsigned column_default: "1" - column: luclin_beard data_type: int column_key: "" - ordinal_position: "39" + ordinal_position: "40" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: drakkin_heritage data_type: int column_key: "" - ordinal_position: "40" + ordinal_position: "41" is_nullable: "NO" column_type: int(10) column_default: "0" - column: drakkin_tattoo data_type: int column_key: "" - ordinal_position: "41" + ordinal_position: "42" is_nullable: "NO" column_type: int(10) column_default: "0" - column: drakkin_details data_type: int column_key: "" - ordinal_position: "42" + ordinal_position: "43" is_nullable: "NO" column_type: int(10) column_default: "0" - column: armortint_id data_type: int column_key: "" - ordinal_position: "43" + ordinal_position: "44" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: armortint_red data_type: tinyint column_key: "" - ordinal_position: "44" + ordinal_position: "45" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: armortint_green data_type: tinyint column_key: "" - ordinal_position: "45" + ordinal_position: "46" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: armortint_blue data_type: tinyint column_key: "" - ordinal_position: "46" + ordinal_position: "47" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: d_melee_texture1 data_type: int column_key: "" - ordinal_position: "47" + ordinal_position: "48" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - column: d_melee_texture2 data_type: int column_key: "" - ordinal_position: "48" + ordinal_position: "49" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - column: ammo_idfile data_type: varchar column_key: "" - ordinal_position: "49" + ordinal_position: "50" is_nullable: "NO" column_type: varchar(30) column_default: '''IT10''' - column: prim_melee_type data_type: tinyint column_key: "" - ordinal_position: "50" + ordinal_position: "51" is_nullable: "NO" column_type: tinyint(4) unsigned column_default: "28" - column: sec_melee_type data_type: tinyint column_key: "" - ordinal_position: "51" + ordinal_position: "52" is_nullable: "NO" column_type: tinyint(4) unsigned column_default: "28" - column: ranged_type data_type: tinyint column_key: "" - ordinal_position: "52" + ordinal_position: "53" is_nullable: "NO" column_type: tinyint(4) unsigned column_default: "7" - column: runspeed data_type: float column_key: "" - ordinal_position: "53" + ordinal_position: "54" is_nullable: "NO" column_type: float column_default: "0" - column: MR data_type: smallint column_key: "" - ordinal_position: "54" + ordinal_position: "55" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: CR data_type: smallint column_key: "" - ordinal_position: "55" + ordinal_position: "56" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: DR data_type: smallint column_key: "" - ordinal_position: "56" + ordinal_position: "57" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: FR data_type: smallint column_key: "" - ordinal_position: "57" + ordinal_position: "58" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: PR data_type: smallint column_key: "" - ordinal_position: "58" + ordinal_position: "59" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: Corrup data_type: smallint column_key: "" - ordinal_position: "59" + ordinal_position: "60" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: PhR data_type: smallint column_key: "" - ordinal_position: "60" + ordinal_position: "61" is_nullable: "NO" column_type: smallint(5) unsigned column_default: "0" - column: see_invis data_type: smallint column_key: "" - ordinal_position: "61" + ordinal_position: "62" is_nullable: "NO" column_type: smallint(4) column_default: "0" - column: see_invis_undead data_type: smallint column_key: "" - ordinal_position: "62" + ordinal_position: "63" is_nullable: "NO" column_type: smallint(4) column_default: "0" - column: qglobal data_type: int column_key: "" - ordinal_position: "63" + ordinal_position: "64" is_nullable: "NO" column_type: int(2) unsigned column_default: "0" - column: AC data_type: smallint column_key: "" - ordinal_position: "64" + ordinal_position: "65" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: npc_aggro data_type: tinyint column_key: "" - ordinal_position: "65" + ordinal_position: "66" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: spawn_limit data_type: tinyint column_key: "" - ordinal_position: "66" + ordinal_position: "67" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: attack_speed data_type: float column_key: "" - ordinal_position: "67" + ordinal_position: "68" is_nullable: "NO" column_type: float column_default: "0" - column: attack_delay data_type: tinyint column_key: "" - ordinal_position: "68" + ordinal_position: "69" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "30" - column: findable data_type: tinyint column_key: "" - ordinal_position: "69" + ordinal_position: "70" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: STR data_type: mediumint column_key: "" - ordinal_position: "70" + ordinal_position: "71" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: STA data_type: mediumint column_key: "" - ordinal_position: "71" + ordinal_position: "72" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: DEX data_type: mediumint column_key: "" - ordinal_position: "72" + ordinal_position: "73" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: AGI data_type: mediumint column_key: "" - ordinal_position: "73" + ordinal_position: "74" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: _INT data_type: mediumint column_key: "" - ordinal_position: "74" + ordinal_position: "75" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "80" - column: WIS data_type: mediumint column_key: "" - ordinal_position: "75" + ordinal_position: "76" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: CHA data_type: mediumint column_key: "" - ordinal_position: "76" + ordinal_position: "77" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "75" - column: see_hide data_type: tinyint column_key: "" - ordinal_position: "77" + ordinal_position: "78" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: see_improved_hide data_type: tinyint column_key: "" - ordinal_position: "78" + ordinal_position: "79" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: trackable data_type: tinyint column_key: "" - ordinal_position: "79" + ordinal_position: "80" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: isbot data_type: tinyint column_key: "" - ordinal_position: "80" + ordinal_position: "81" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: exclude data_type: tinyint column_key: "" - ordinal_position: "81" + ordinal_position: "82" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: ATK data_type: mediumint column_key: "" - ordinal_position: "82" + ordinal_position: "83" is_nullable: "NO" column_type: mediumint(9) column_default: "0" - column: Accuracy data_type: mediumint column_key: "" - ordinal_position: "83" + ordinal_position: "84" is_nullable: "NO" column_type: mediumint(9) column_default: "0" - column: Avoidance data_type: mediumint column_key: "" - ordinal_position: "84" + ordinal_position: "85" is_nullable: "NO" column_type: mediumint(9) unsigned column_default: "0" - column: slow_mitigation data_type: smallint column_key: "" - ordinal_position: "85" + ordinal_position: "86" is_nullable: "NO" column_type: smallint(4) column_default: "0" - column: version data_type: smallint column_key: "" - ordinal_position: "86" + ordinal_position: "87" is_nullable: "NO" column_type: smallint(5) unsigned column_default: "0" - column: maxlevel data_type: tinyint column_key: "" - ordinal_position: "87" + ordinal_position: "88" is_nullable: "NO" column_type: tinyint(3) column_default: "0" - column: scalerate data_type: int column_key: "" - ordinal_position: "88" + ordinal_position: "89" is_nullable: "NO" column_type: int(11) column_default: "100" - column: private_corpse data_type: tinyint column_key: "" - ordinal_position: "89" + ordinal_position: "90" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: unique_spawn_by_name data_type: tinyint column_key: "" - ordinal_position: "90" + ordinal_position: "91" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: underwater data_type: tinyint column_key: "" - ordinal_position: "91" + ordinal_position: "92" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: isquest data_type: tinyint column_key: "" - ordinal_position: "92" + ordinal_position: "93" is_nullable: "NO" column_type: tinyint(3) column_default: "0" - column: emoteid data_type: int column_key: "" - ordinal_position: "93" + ordinal_position: "94" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: spellscale data_type: float column_key: "" - ordinal_position: "94" + ordinal_position: "95" is_nullable: "NO" column_type: float column_default: "100" - column: healscale data_type: float column_key: "" - ordinal_position: "95" + ordinal_position: "96" is_nullable: "NO" column_type: float column_default: "100" - column: no_target_hotkey data_type: tinyint column_key: "" - ordinal_position: "96" + ordinal_position: "97" is_nullable: "NO" column_type: tinyint(1) unsigned column_default: "0" - column: raid_target data_type: tinyint column_key: "" - ordinal_position: "97" + ordinal_position: "98" is_nullable: "NO" column_type: tinyint(1) unsigned column_default: "0" - column: armtexture data_type: tinyint column_key: "" - ordinal_position: "98" + ordinal_position: "99" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: bracertexture data_type: tinyint column_key: "" - ordinal_position: "99" + ordinal_position: "100" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: handtexture data_type: tinyint column_key: "" - ordinal_position: "100" + ordinal_position: "101" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: legtexture data_type: tinyint column_key: "" - ordinal_position: "101" + ordinal_position: "102" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: feettexture data_type: tinyint column_key: "" - ordinal_position: "102" + ordinal_position: "103" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: light data_type: tinyint column_key: "" - ordinal_position: "103" + ordinal_position: "104" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: walkspeed data_type: tinyint column_key: "" - ordinal_position: "104" + ordinal_position: "105" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: peqid data_type: int column_key: "" - ordinal_position: "105" + ordinal_position: "106" is_nullable: "NO" column_type: int(11) column_default: "0" - column: unique_ data_type: tinyint column_key: "" - ordinal_position: "106" + ordinal_position: "107" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: fixed data_type: tinyint column_key: "" - ordinal_position: "107" + ordinal_position: "108" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: ignore_despawn data_type: tinyint column_key: "" - ordinal_position: "108" + ordinal_position: "109" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: show_name data_type: tinyint column_key: "" - ordinal_position: "109" + ordinal_position: "110" is_nullable: "NO" column_type: tinyint(2) column_default: "1" - column: untargetable data_type: tinyint column_key: "" - ordinal_position: "110" + ordinal_position: "111" is_nullable: "NO" column_type: tinyint(2) column_default: "0" - column: charm_ac data_type: smallint column_key: "" - ordinal_position: "111" + ordinal_position: "112" is_nullable: "YES" column_type: smallint(5) column_default: "0" - column: charm_min_dmg data_type: int column_key: "" - ordinal_position: "112" + ordinal_position: "113" is_nullable: "YES" column_type: int(10) column_default: "0" - column: charm_max_dmg data_type: int column_key: "" - ordinal_position: "113" + ordinal_position: "114" is_nullable: "YES" column_type: int(10) column_default: "0" - column: charm_attack_delay data_type: tinyint column_key: "" - ordinal_position: "114" + ordinal_position: "115" is_nullable: "YES" column_type: tinyint(3) column_default: "0" - column: charm_accuracy_rating data_type: mediumint column_key: "" - ordinal_position: "115" + ordinal_position: "116" is_nullable: "YES" column_type: mediumint(9) column_default: "0" - column: charm_avoidance_rating data_type: mediumint column_key: "" - ordinal_position: "116" + ordinal_position: "117" is_nullable: "YES" column_type: mediumint(9) column_default: "0" - column: charm_atk data_type: mediumint column_key: "" - ordinal_position: "117" + ordinal_position: "118" is_nullable: "YES" column_type: mediumint(9) column_default: "0" - column: skip_global_loot data_type: tinyint column_key: "" - ordinal_position: "118" + ordinal_position: "119" is_nullable: "YES" column_type: tinyint(4) column_default: "0" - column: rare_spawn data_type: tinyint column_key: "" - ordinal_position: "119" + ordinal_position: "120" is_nullable: "YES" column_type: tinyint(4) column_default: "0" - column: stuck_behavior data_type: tinyint column_key: "" - ordinal_position: "120" + ordinal_position: "121" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: model data_type: smallint column_key: "" - ordinal_position: "121" + ordinal_position: "122" is_nullable: "NO" column_type: smallint(5) column_default: "0" - column: flymode data_type: tinyint column_key: "" - ordinal_position: "122" + ordinal_position: "123" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: always_aggro data_type: tinyint column_key: "" - ordinal_position: "123" + ordinal_position: "124" is_nullable: "NO" column_type: tinyint(1) column_default: "0" - column: exp_mod data_type: int column_key: "" - ordinal_position: "124" + ordinal_position: "125" is_nullable: "NO" column_type: int(11) column_default: "100" - column: heroic_strikethrough data_type: int column_key: "" - ordinal_position: "125" + ordinal_position: "126" is_nullable: "NO" column_type: int(11) column_default: "0" - column: faction_amount data_type: int column_key: "" - ordinal_position: "126" + ordinal_position: "127" is_nullable: "NO" column_type: int(10) column_default: "0" - column: keeps_sold_items data_type: tinyint column_key: "" - ordinal_position: "127" + ordinal_position: "128" is_nullable: "NO" column_type: tinyint(1) unsigned column_default: "1" + - column: is_parcel_merchant + data_type: tinyint + column_key: "" + ordinal_position: "129" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "0" npc_types_tint: - column: id data_type: int @@ -12862,83 +16512,83 @@ object: is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown08 - data_type: mediumint + - column: size_percentage + data_type: float column_key: "" ordinal_position: "13" is_nullable: "NO" - column_type: mediumint(5) + column_type: float column_default: "0" - - column: unknown10 - data_type: mediumint + - column: unknown24 + data_type: int column_key: "" ordinal_position: "14" is_nullable: "NO" - column_type: mediumint(5) + column_type: int(11) column_default: "0" - - column: unknown20 + - column: unknown60 data_type: int column_key: "" ordinal_position: "15" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown24 + - column: unknown64 data_type: int column_key: "" ordinal_position: "16" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown60 + - column: unknown68 data_type: int column_key: "" ordinal_position: "17" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown64 + - column: unknown72 data_type: int column_key: "" ordinal_position: "18" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown68 + - column: unknown76 data_type: int column_key: "" ordinal_position: "19" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown72 + - column: unknown84 data_type: int column_key: "" ordinal_position: "20" is_nullable: "NO" column_type: int(11) column_default: "0" - - column: unknown76 - data_type: int + - column: size + data_type: float column_key: "" ordinal_position: "21" is_nullable: "NO" - column_type: int(11) - column_default: "0" - - column: unknown84 - data_type: int + column_type: float + column_default: "100" + - column: solid_type + data_type: mediumint column_key: "" ordinal_position: "22" is_nullable: "NO" - column_type: int(11) + column_type: mediumint(5) column_default: "0" - - column: size - data_type: float + - column: incline + data_type: int column_key: "" ordinal_position: "23" is_nullable: "NO" - column_type: float - column_default: "100" + column_type: int(11) + column_default: "0" - column: tilt_x data_type: float column_key: "" @@ -13030,7 +16680,7 @@ object_contents: ordinal_position: "6" is_nullable: "NO" column_type: datetime - column_default: '''0000-00-00 00:00:00''' + column_default: current_timestamp() - column: augslot1 data_type: mediumint column_key: "" @@ -13624,47 +17274,68 @@ raid_details: is_nullable: "YES" column_type: varchar(1024) column_default: "NULL" - - column: marked_npc_1 - data_type: smallint + - column: marked_npc_1_entity_id + data_type: int column_key: "" ordinal_position: "5" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned column_default: "0" - - column: marked_npc_2 - data_type: smallint + - column: marked_npc_1_zone_id + data_type: int column_key: "" ordinal_position: "6" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned column_default: "0" - - column: marked_npc_3 - data_type: smallint + - column: marked_npc_1_instance_id + data_type: int column_key: "" ordinal_position: "7" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned column_default: "0" - - column: markedNPC1 - data_type: smallint + - column: marked_npc_2_entity_id + data_type: int column_key: "" ordinal_position: "8" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned column_default: "0" - - column: markedNPC2 - data_type: smallint + - column: marked_npc_2_zone_id + data_type: int column_key: "" ordinal_position: "9" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned column_default: "0" - - column: markedNPC3 - data_type: smallint + - column: marked_npc_2_instance_id + data_type: int column_key: "" ordinal_position: "10" is_nullable: "NO" - column_type: smallint(5) unsigned + column_type: int(10) unsigned + column_default: "0" + - column: marked_npc_3_entity_id + data_type: int + column_key: "" + ordinal_position: "11" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: marked_npc_3_zone_id + data_type: int + column_key: "" + ordinal_position: "12" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: marked_npc_3_instance_id + data_type: int + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: int(10) unsigned column_default: "0" raid_leaders: - column: gid @@ -13918,11 +17589,11 @@ rule_values: column_type: varchar(64) column_default: '''''' - column: rule_value - data_type: varchar + data_type: text column_key: "" ordinal_position: "3" is_nullable: "NO" - column_type: varchar(30) + column_type: text column_default: '''''' - column: notes data_type: text @@ -14261,38 +17932,45 @@ sharedbank: column_type: text column_default: "NULL" skill_caps: - - column: skillID - data_type: tinyint + - column: id + data_type: int column_key: PRI ordinal_position: "1" is_nullable: "NO" + column_type: int(3) unsigned + column_default: "" + - column: skill_id + data_type: tinyint + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - - column: class + - column: class_id data_type: tinyint - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "3" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: level data_type: tinyint - column_key: PRI - ordinal_position: "3" + column_key: "" + ordinal_position: "4" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: cap data_type: mediumint column_key: "" - ordinal_position: "4" + ordinal_position: "5" is_nullable: "NO" column_type: mediumint(8) unsigned column_default: "0" - column: class_ data_type: tinyint - column_key: PRI - ordinal_position: "5" + column_key: "" + ordinal_position: "6" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" @@ -14559,48 +18237,70 @@ spawn2: is_nullable: "NO" column_type: mediumint(9) column_default: "1" - - column: enabled - data_type: tinyint - column_key: "" - ordinal_position: "15" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "1" - column: animation data_type: tinyint column_key: "" - ordinal_position: "16" + ordinal_position: "15" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: min_expansion data_type: tinyint column_key: "" - ordinal_position: "17" + ordinal_position: "16" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: max_expansion data_type: tinyint column_key: "" - ordinal_position: "18" + ordinal_position: "17" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: content_flags data_type: varchar column_key: "" - ordinal_position: "19" + ordinal_position: "18" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" - column: content_flags_disabled data_type: varchar column_key: "" - ordinal_position: "20" + ordinal_position: "19" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" +spawn2_disabled: + - column: id + data_type: bigint + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: bigint(11) + column_default: "" + - column: spawn2_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "YES" + column_type: int(11) + column_default: "NULL" + - column: instance_id + data_type: int + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: int(11) + column_default: "0" + - column: disabled + data_type: smallint + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: smallint(11) + column_default: "0" spawnentry: - column: spawngroupID data_type: int @@ -14630,31 +18330,45 @@ spawnentry: is_nullable: "NO" column_type: mediumint(9) column_default: "1" + - column: min_time + data_type: smallint + column_key: "" + ordinal_position: "5" + is_nullable: "NO" + column_type: smallint(4) + column_default: "0" + - column: max_time + data_type: smallint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: smallint(4) + column_default: "0" - column: min_expansion data_type: tinyint column_key: "" - ordinal_position: "5" + ordinal_position: "7" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: max_expansion data_type: tinyint column_key: "" - ordinal_position: "6" + ordinal_position: "8" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: content_flags data_type: varchar column_key: "" - ordinal_position: "7" + ordinal_position: "9" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" - column: content_flags_disabled data_type: varchar column_key: "" - ordinal_position: "8" + ordinal_position: "10" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" @@ -14671,7 +18385,7 @@ spawngroup: column_key: UNI ordinal_position: "2" is_nullable: "NO" - column_type: varchar(50) + column_type: varchar(200) column_default: '''''' - column: spawn_limit data_type: tinyint @@ -16595,95 +20309,137 @@ start_zones: is_nullable: "YES" column_type: varchar(100) column_default: "NULL" -starting_items: - - column: id +starting_items: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "" + - column: class_list + data_type: text + column_key: "" + ordinal_position: "2" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: race_list + data_type: text + column_key: "" + ordinal_position: "3" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: deity_list + data_type: text + column_key: "" + ordinal_position: "4" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: zone_id_list + data_type: text + column_key: "" + ordinal_position: "5" + is_nullable: "YES" + column_type: text + column_default: "NULL" + - column: item_id data_type: int - column_key: PRI - ordinal_position: "1" + column_key: "" + ordinal_position: "6" is_nullable: "NO" column_type: int(11) unsigned - column_default: "" - - column: race + column_default: "0" + - column: item_charges + data_type: tinyint + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "1" + - column: augment_one data_type: int - column_key: PRI - ordinal_position: "2" + column_key: "" + ordinal_position: "8" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: class + - column: augment_two data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "9" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: deityid + - column: augment_three data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "10" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: zoneid + - column: augment_four data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "11" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: itemid + - column: augment_five data_type: int column_key: "" - ordinal_position: "6" + ordinal_position: "12" is_nullable: "NO" - column_type: int(11) + column_type: int(11) unsigned column_default: "0" - - column: item_charges - data_type: tinyint + - column: augment_six + data_type: int column_key: "" - ordinal_position: "7" + ordinal_position: "13" is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "1" - - column: gm - data_type: tinyint + column_type: int(11) unsigned + column_default: "0" + - column: status + data_type: mediumint column_key: "" - ordinal_position: "8" + ordinal_position: "14" is_nullable: "NO" - column_type: tinyint(1) + column_type: mediumint(3) column_default: "0" - - column: slot + - column: inventory_slot data_type: mediumint column_key: "" - ordinal_position: "9" + ordinal_position: "15" is_nullable: "NO" column_type: mediumint(9) column_default: "-1" - column: min_expansion data_type: tinyint column_key: "" - ordinal_position: "10" + ordinal_position: "16" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: max_expansion data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "17" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: content_flags data_type: varchar column_key: "" - ordinal_position: "12" + ordinal_position: "18" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" - column: content_flags_disabled data_type: varchar column_key: "" - ordinal_position: "13" + ordinal_position: "19" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" @@ -16856,6 +20612,13 @@ task_activities: is_nullable: "NO" column_type: tinyint(1) column_default: "0" + - column: list_group + data_type: tinyint + column_key: "" + ordinal_position: "25" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" tasks: - column: id data_type: int @@ -17053,6 +20816,13 @@ tasks: is_nullable: "NO" column_type: int(10) column_default: "0" + - column: enabled + data_type: smallint + column_key: "" + ordinal_position: "29" + is_nullable: "YES" + column_type: smallint(6) + column_default: "1" tasksets: - column: id data_type: int @@ -17204,45 +20974,115 @@ titles: column_type: int(11) column_default: "0" trader: - - column: char_id - data_type: int + - column: id + data_type: bigint column_key: PRI ordinal_position: "1" is_nullable: "NO" - column_type: int(10) unsigned + column_type: bigint(20) unsigned + column_default: "" + - column: char_id + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(11) unsigned column_default: "0" - column: item_id data_type: int column_key: "" - ordinal_position: "2" + ordinal_position: "3" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: aug_slot_1 + data_type: int + column_key: "" + ordinal_position: "4" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - - column: serialnumber + - column: aug_slot_2 data_type: int column_key: "" - ordinal_position: "3" + ordinal_position: "5" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - - column: charges + - column: aug_slot_3 data_type: int column_key: "" - ordinal_position: "4" + ordinal_position: "6" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: aug_slot_4 + data_type: int + column_key: "" + ordinal_position: "7" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: aug_slot_5 + data_type: int + column_key: "" + ordinal_position: "8" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: aug_slot_6 + data_type: int + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: item_sn + data_type: int + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: int(10) unsigned + column_default: "0" + - column: item_charges + data_type: int + column_key: "" + ordinal_position: "11" is_nullable: "NO" column_type: int(11) column_default: "0" - column: item_cost data_type: int column_key: "" - ordinal_position: "5" + ordinal_position: "12" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - column: slot_id data_type: tinyint - column_key: PRI - ordinal_position: "6" + column_key: "" + ordinal_position: "13" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: char_entity_id + data_type: int + column_key: "" + ordinal_position: "14" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: char_zone_id + data_type: int + column_key: "" + ordinal_position: "15" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "0" + - column: active_transaction + data_type: tinyint + column_key: "" + ordinal_position: "16" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" @@ -17360,45 +21200,52 @@ tradeskill_recipe: is_nullable: "NO" column_type: tinyint(4) column_default: "0" + - column: learned_by_item_id + data_type: int + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: int(11) + column_default: "0" - column: quest data_type: tinyint column_key: "" - ordinal_position: "10" + ordinal_position: "11" is_nullable: "NO" column_type: tinyint(1) column_default: "0" - column: enabled data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "12" is_nullable: "NO" column_type: tinyint(1) column_default: "1" - column: min_expansion data_type: tinyint column_key: "" - ordinal_position: "12" + ordinal_position: "13" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: max_expansion data_type: tinyint column_key: "" - ordinal_position: "13" + ordinal_position: "14" is_nullable: "NO" column_type: tinyint(4) column_default: "-1" - column: content_flags data_type: varchar column_key: "" - ordinal_position: "14" + ordinal_position: "15" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" - column: content_flags_disabled data_type: varchar column_key: "" - ordinal_position: "15" + ordinal_position: "16" is_nullable: "YES" column_type: varchar(100) column_default: "NULL" @@ -17773,657 +21620,657 @@ veteran_reward_templates: column_type: tinyint(3) unsigned column_default: "" zone: + - column: id + data_type: int + column_key: PRI + ordinal_position: "1" + is_nullable: "NO" + column_type: int(10) + column_default: "" + - column: zoneidnumber + data_type: int + column_key: MUL + ordinal_position: "2" + is_nullable: "NO" + column_type: int(4) + column_default: "0" + - column: version + data_type: tinyint + column_key: "" + ordinal_position: "3" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" - column: short_name data_type: varchar column_key: MUL - ordinal_position: "1" + ordinal_position: "4" is_nullable: "YES" column_type: varchar(32) column_default: "NULL" - - column: id - data_type: int - column_key: PRI - ordinal_position: "2" + - column: long_name + data_type: text + column_key: "" + ordinal_position: "5" is_nullable: "NO" - column_type: int(10) + column_type: text column_default: "" - - column: file_name + - column: min_status + data_type: tinyint + column_key: "" + ordinal_position: "6" + is_nullable: "NO" + column_type: tinyint(3) unsigned + column_default: "0" + - column: map_file_name + data_type: varchar + column_key: "" + ordinal_position: "7" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: note + data_type: varchar + column_key: "" + ordinal_position: "8" + is_nullable: "YES" + column_type: varchar(200) + column_default: "NULL" + - column: min_expansion + data_type: tinyint + column_key: "" + ordinal_position: "9" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: max_expansion + data_type: tinyint + column_key: "" + ordinal_position: "10" + is_nullable: "NO" + column_type: tinyint(4) + column_default: "-1" + - column: content_flags + data_type: varchar + column_key: "" + ordinal_position: "11" + is_nullable: "YES" + column_type: varchar(100) + column_default: "NULL" + - column: content_flags_disabled data_type: varchar column_key: "" - ordinal_position: "3" + ordinal_position: "12" is_nullable: "YES" - column_type: varchar(16) + column_type: varchar(100) column_default: "NULL" - - column: long_name - data_type: text + - column: expansion + data_type: tinyint column_key: "" - ordinal_position: "4" + ordinal_position: "13" is_nullable: "NO" - column_type: text - column_default: "" - - column: map_file_name + column_type: tinyint(3) + column_default: "0" + - column: file_name data_type: varchar column_key: "" - ordinal_position: "5" + ordinal_position: "14" is_nullable: "YES" - column_type: varchar(100) + column_type: varchar(16) column_default: "NULL" - column: safe_x data_type: float column_key: "" - ordinal_position: "6" + ordinal_position: "15" is_nullable: "NO" column_type: float column_default: "0" - column: safe_y data_type: float column_key: "" - ordinal_position: "7" + ordinal_position: "16" is_nullable: "NO" column_type: float column_default: "0" - column: safe_z data_type: float column_key: "" - ordinal_position: "8" + ordinal_position: "17" is_nullable: "NO" column_type: float column_default: "0" - column: safe_heading data_type: float column_key: "" - ordinal_position: "9" + ordinal_position: "18" is_nullable: "NO" column_type: float column_default: "0" - column: graveyard_id data_type: float column_key: "" - ordinal_position: "10" + ordinal_position: "19" is_nullable: "NO" column_type: float column_default: "0" - column: min_level data_type: tinyint column_key: "" - ordinal_position: "11" + ordinal_position: "20" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: max_level data_type: tinyint column_key: "" - ordinal_position: "12" + ordinal_position: "21" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "255" - - column: min_status - data_type: tinyint - column_key: "" - ordinal_position: "13" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - - column: zoneidnumber - data_type: int - column_key: MUL - ordinal_position: "14" - is_nullable: "NO" - column_type: int(4) - column_default: "0" - - column: version - data_type: tinyint - column_key: "" - ordinal_position: "15" - is_nullable: "NO" - column_type: tinyint(3) unsigned - column_default: "0" - column: timezone data_type: int column_key: "" - ordinal_position: "16" + ordinal_position: "22" is_nullable: "NO" column_type: int(5) column_default: "0" - column: maxclients data_type: int column_key: "" - ordinal_position: "17" + ordinal_position: "23" is_nullable: "NO" column_type: int(5) column_default: "0" - column: ruleset data_type: int column_key: "" - ordinal_position: "18" + ordinal_position: "24" is_nullable: "NO" column_type: int(10) unsigned column_default: "0" - - column: note - data_type: varchar - column_key: "" - ordinal_position: "19" - is_nullable: "YES" - column_type: varchar(80) - column_default: "NULL" - column: underworld data_type: float column_key: "" - ordinal_position: "20" + ordinal_position: "25" is_nullable: "NO" column_type: float column_default: "0" - column: minclip data_type: float column_key: "" - ordinal_position: "21" + ordinal_position: "26" is_nullable: "NO" column_type: float column_default: "450" - column: maxclip data_type: float column_key: "" - ordinal_position: "22" + ordinal_position: "27" is_nullable: "NO" column_type: float column_default: "450" - column: fog_minclip data_type: float column_key: "" - ordinal_position: "23" + ordinal_position: "28" is_nullable: "NO" column_type: float column_default: "450" - column: fog_maxclip data_type: float column_key: "" - ordinal_position: "24" + ordinal_position: "29" is_nullable: "NO" column_type: float column_default: "450" - column: fog_blue data_type: tinyint column_key: "" - ordinal_position: "25" + ordinal_position: "30" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_red data_type: tinyint column_key: "" - ordinal_position: "26" + ordinal_position: "31" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_green data_type: tinyint column_key: "" - ordinal_position: "27" + ordinal_position: "32" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: sky data_type: tinyint column_key: "" - ordinal_position: "28" + ordinal_position: "33" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "1" - column: ztype data_type: tinyint column_key: "" - ordinal_position: "29" + ordinal_position: "34" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "1" - column: zone_exp_multiplier data_type: decimal column_key: "" - ordinal_position: "30" + ordinal_position: "35" is_nullable: "NO" column_type: decimal(6,2) column_default: "0.00" - column: walkspeed data_type: float column_key: "" - ordinal_position: "31" + ordinal_position: "36" is_nullable: "NO" column_type: float column_default: "0.4" - column: time_type data_type: tinyint column_key: "" - ordinal_position: "32" + ordinal_position: "37" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "2" - column: fog_red1 data_type: tinyint column_key: "" - ordinal_position: "33" + ordinal_position: "38" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_green1 data_type: tinyint column_key: "" - ordinal_position: "34" + ordinal_position: "39" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_blue1 data_type: tinyint column_key: "" - ordinal_position: "35" + ordinal_position: "40" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_minclip1 data_type: float column_key: "" - ordinal_position: "36" + ordinal_position: "41" is_nullable: "NO" column_type: float column_default: "450" - column: fog_maxclip1 data_type: float column_key: "" - ordinal_position: "37" + ordinal_position: "42" is_nullable: "NO" column_type: float column_default: "450" - column: fog_red2 data_type: tinyint column_key: "" - ordinal_position: "38" + ordinal_position: "43" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_green2 data_type: tinyint column_key: "" - ordinal_position: "39" + ordinal_position: "44" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_blue2 data_type: tinyint column_key: "" - ordinal_position: "40" + ordinal_position: "45" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_minclip2 data_type: float column_key: "" - ordinal_position: "41" + ordinal_position: "46" is_nullable: "NO" column_type: float column_default: "450" - column: fog_maxclip2 data_type: float column_key: "" - ordinal_position: "42" + ordinal_position: "47" is_nullable: "NO" column_type: float column_default: "450" - column: fog_red3 data_type: tinyint column_key: "" - ordinal_position: "43" + ordinal_position: "48" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_green3 data_type: tinyint column_key: "" - ordinal_position: "44" + ordinal_position: "49" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_blue3 data_type: tinyint column_key: "" - ordinal_position: "45" + ordinal_position: "50" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_minclip3 data_type: float column_key: "" - ordinal_position: "46" + ordinal_position: "51" is_nullable: "NO" column_type: float column_default: "450" - column: fog_maxclip3 data_type: float column_key: "" - ordinal_position: "47" + ordinal_position: "52" is_nullable: "NO" column_type: float column_default: "450" - column: fog_red4 data_type: tinyint column_key: "" - ordinal_position: "48" + ordinal_position: "53" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_green4 data_type: tinyint column_key: "" - ordinal_position: "49" + ordinal_position: "54" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_blue4 data_type: tinyint column_key: "" - ordinal_position: "50" + ordinal_position: "55" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: fog_minclip4 data_type: float column_key: "" - ordinal_position: "51" + ordinal_position: "56" is_nullable: "NO" column_type: float column_default: "450" - column: fog_maxclip4 data_type: float column_key: "" - ordinal_position: "52" + ordinal_position: "57" is_nullable: "NO" column_type: float column_default: "450" - column: fog_density data_type: float column_key: "" - ordinal_position: "53" + ordinal_position: "58" is_nullable: "NO" column_type: float column_default: "0" - column: flag_needed data_type: varchar column_key: "" - ordinal_position: "54" + ordinal_position: "59" is_nullable: "NO" column_type: varchar(128) column_default: '''''' - column: canbind data_type: tinyint column_key: "" - ordinal_position: "55" + ordinal_position: "60" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: cancombat data_type: tinyint column_key: "" - ordinal_position: "56" + ordinal_position: "61" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: canlevitate data_type: tinyint column_key: "" - ordinal_position: "57" + ordinal_position: "62" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: castoutdoor data_type: tinyint column_key: "" - ordinal_position: "58" + ordinal_position: "63" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - column: hotzone data_type: tinyint column_key: "" - ordinal_position: "59" + ordinal_position: "64" is_nullable: "NO" column_type: tinyint(3) unsigned column_default: "0" - column: insttype data_type: tinyint column_key: "" - ordinal_position: "60" + ordinal_position: "65" is_nullable: "NO" column_type: tinyint(1) unsigned zerofill column_default: "0" - column: shutdowndelay data_type: bigint column_key: "" - ordinal_position: "61" + ordinal_position: "66" is_nullable: "NO" column_type: bigint(16) unsigned column_default: "5000" - column: peqzone data_type: tinyint column_key: "" - ordinal_position: "62" + ordinal_position: "67" is_nullable: "NO" column_type: tinyint(4) column_default: "1" - - column: expansion - data_type: tinyint - column_key: "" - ordinal_position: "63" - is_nullable: "NO" - column_type: tinyint(3) - column_default: "0" - column: bypass_expansion_check data_type: tinyint column_key: "" - ordinal_position: "64" + ordinal_position: "68" is_nullable: "NO" column_type: tinyint(3) column_default: "0" - column: suspendbuffs data_type: tinyint column_key: "" - ordinal_position: "65" + ordinal_position: "69" is_nullable: "NO" column_type: tinyint(1) unsigned column_default: "0" - column: rain_chance1 data_type: int column_key: "" - ordinal_position: "66" + ordinal_position: "70" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_chance2 data_type: int column_key: "" - ordinal_position: "67" + ordinal_position: "71" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_chance3 data_type: int column_key: "" - ordinal_position: "68" + ordinal_position: "72" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_chance4 data_type: int column_key: "" - ordinal_position: "69" + ordinal_position: "73" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_duration1 data_type: int column_key: "" - ordinal_position: "70" + ordinal_position: "74" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_duration2 data_type: int column_key: "" - ordinal_position: "71" + ordinal_position: "75" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_duration3 data_type: int column_key: "" - ordinal_position: "72" + ordinal_position: "76" is_nullable: "NO" column_type: int(4) column_default: "0" - column: rain_duration4 data_type: int column_key: "" - ordinal_position: "73" + ordinal_position: "77" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_chance1 data_type: int column_key: "" - ordinal_position: "74" + ordinal_position: "78" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_chance2 data_type: int column_key: "" - ordinal_position: "75" + ordinal_position: "79" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_chance3 data_type: int column_key: "" - ordinal_position: "76" + ordinal_position: "80" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_chance4 data_type: int column_key: "" - ordinal_position: "77" + ordinal_position: "81" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_duration1 data_type: int column_key: "" - ordinal_position: "78" + ordinal_position: "82" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_duration2 data_type: int column_key: "" - ordinal_position: "79" + ordinal_position: "83" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_duration3 data_type: int column_key: "" - ordinal_position: "80" + ordinal_position: "84" is_nullable: "NO" column_type: int(4) column_default: "0" - column: snow_duration4 data_type: int column_key: "" - ordinal_position: "81" + ordinal_position: "85" is_nullable: "NO" column_type: int(4) column_default: "0" - column: gravity data_type: float column_key: "" - ordinal_position: "82" + ordinal_position: "86" is_nullable: "NO" column_type: float column_default: "0.4" - column: type data_type: int column_key: "" - ordinal_position: "83" + ordinal_position: "87" is_nullable: "NO" column_type: int(3) column_default: "0" - column: skylock data_type: tinyint column_key: "" - ordinal_position: "84" + ordinal_position: "88" is_nullable: "NO" column_type: tinyint(4) column_default: "0" - column: fast_regen_hp data_type: int column_key: "" - ordinal_position: "85" + ordinal_position: "89" is_nullable: "NO" column_type: int(11) column_default: "180" - column: fast_regen_mana data_type: int column_key: "" - ordinal_position: "86" + ordinal_position: "90" is_nullable: "NO" column_type: int(11) column_default: "180" - column: fast_regen_endurance data_type: int column_key: "" - ordinal_position: "87" + ordinal_position: "91" is_nullable: "NO" column_type: int(11) column_default: "180" - column: npc_max_aggro_dist data_type: int column_key: "" - ordinal_position: "88" + ordinal_position: "92" is_nullable: "NO" column_type: int(11) column_default: "600" - column: max_movement_update_range data_type: int column_key: "" - ordinal_position: "89" + ordinal_position: "93" is_nullable: "NO" column_type: int(11) unsigned column_default: "600" - - column: min_expansion - data_type: tinyint - column_key: "" - ordinal_position: "90" - is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: max_expansion - data_type: tinyint - column_key: "" - ordinal_position: "91" - is_nullable: "NO" - column_type: tinyint(4) - column_default: "-1" - - column: content_flags - data_type: varchar - column_key: "" - ordinal_position: "92" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - - column: content_flags_disabled - data_type: varchar - column_key: "" - ordinal_position: "93" - is_nullable: "YES" - column_type: varchar(100) - column_default: "NULL" - column: underworld_teleport_index data_type: int column_key: "" @@ -18445,6 +22292,20 @@ zone: is_nullable: "NO" column_type: int(11) column_default: "10" + - column: idle_when_empty + data_type: tinyint + column_key: "" + ordinal_position: "97" + is_nullable: "NO" + column_type: tinyint(1) unsigned + column_default: "1" + - column: seconds_before_idle + data_type: int + column_key: "" + ordinal_position: "98" + is_nullable: "NO" + column_type: int(11) unsigned + column_default: "60" zone_flags: - column: charID data_type: int diff --git a/internal/http/crudcontrollers/base_datum_controller.go b/internal/http/crudcontrollers/base_datum_controller.go index 95ad460dc..ec854555d 100644 --- a/internal/http/crudcontrollers/base_datum_controller.go +++ b/internal/http/crudcontrollers/base_datum_controller.go @@ -95,7 +95,7 @@ func (e *BaseDatumController) getBaseDatum(c echo.Context) error { params = append(params, level) keys = append(keys, "level = ?") - // key param [class] position [2] type [int] + // key param [class] position [2] type [tinyint] if len(c.QueryParam("class")) > 0 { classParam, err := strconv.Atoi(c.QueryParam("class")) if err != nil { @@ -160,7 +160,7 @@ func (e *BaseDatumController) updateBaseDatum(c echo.Context) error { params = append(params, level) keys = append(keys, "level = ?") - // key param [class] position [2] type [int] + // key param [class] position [2] type [tinyint] if len(c.QueryParam("class")) > 0 { classParam, err := strconv.Atoi(c.QueryParam("class")) if err != nil { @@ -288,7 +288,7 @@ func (e *BaseDatumController) deleteBaseDatum(c echo.Context) error { params = append(params, level) keys = append(keys, "level = ?") - // key param [class] position [2] type [int] + // key param [class] position [2] type [tinyint] if len(c.QueryParam("class")) > 0 { classParam, err := strconv.Atoi(c.QueryParam("class")) if err != nil { diff --git a/internal/http/crudcontrollers/bot_starting_item_controller.go b/internal/http/crudcontrollers/bot_starting_item_controller.go new file mode 100644 index 000000000..7eeb1653c --- /dev/null +++ b/internal/http/crudcontrollers/bot_starting_item_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type BotStartingItemController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewBotStartingItemController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *BotStartingItemController { + return &BotStartingItemController{ + db: db, + auditLog: auditLog, + } +} + +func (e *BotStartingItemController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "bot_starting_item/:id", e.getBotStartingItem, nil), + routes.RegisterRoute(http.MethodGet, "bot_starting_items", e.listBotStartingItems, nil), + routes.RegisterRoute(http.MethodGet, "bot_starting_items/count", e.getBotStartingItemsCount, nil), + routes.RegisterRoute(http.MethodPut, "bot_starting_item", e.createBotStartingItem, nil), + routes.RegisterRoute(http.MethodDelete, "bot_starting_item/:id", e.deleteBotStartingItem, nil), + routes.RegisterRoute(http.MethodPatch, "bot_starting_item/:id", e.updateBotStartingItem, nil), + routes.RegisterRoute(http.MethodPost, "bot_starting_items/bulk", e.getBotStartingItemsBulk, nil), + } +} + +// listBotStartingItems godoc +// @Id listBotStartingItems +// @Summary Lists BotStartingItems +// @Accept json +// @Produce json +// @Tags BotStartingItem +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.BotStartingItem +// @Failure 500 {string} string "Bad query request" +// @Router /bot_starting_items [get] +func (e *BotStartingItemController) listBotStartingItems(c echo.Context) error { + var results []models.BotStartingItem + err := e.db.QueryContext(models.BotStartingItem{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getBotStartingItem godoc +// @Id getBotStartingItem +// @Summary Gets BotStartingItem +// @Accept json +// @Produce json +// @Tags BotStartingItem +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.BotStartingItem +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /bot_starting_item/{id} [get] +func (e *BotStartingItemController) getBotStartingItem(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.BotStartingItem + query := e.db.QueryContext(models.BotStartingItem{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateBotStartingItem godoc +// @Id updateBotStartingItem +// @Summary Updates BotStartingItem +// @Accept json +// @Produce json +// @Tags BotStartingItem +// @Param id path int true "Id" +// @Param bot_starting_item body models.BotStartingItem true "BotStartingItem" +// @Success 200 {array} models.BotStartingItem +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /bot_starting_item/{id} [patch] +func (e *BotStartingItemController) updateBotStartingItem(c echo.Context) error { + request := new(models.BotStartingItem) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.BotStartingItem + query := e.db.QueryContext(models.BotStartingItem{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [BotStartingItem] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createBotStartingItem godoc +// @Id createBotStartingItem +// @Summary Creates BotStartingItem +// @Accept json +// @Produce json +// @Param bot_starting_item body models.BotStartingItem true "BotStartingItem" +// @Tags BotStartingItem +// @Success 200 {array} models.BotStartingItem +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /bot_starting_item [put] +func (e *BotStartingItemController) createBotStartingItem(c echo.Context) error { + botStartingItem := new(models.BotStartingItem) + if err := c.Bind(botStartingItem); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.BotStartingItem{}, c).Model(&models.BotStartingItem{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&botStartingItem).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.BotStartingItem{}, botStartingItem) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [BotStartingItem] [%v] data [%v]", botStartingItem.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, botStartingItem) +} + +// deleteBotStartingItem godoc +// @Id deleteBotStartingItem +// @Summary Deletes BotStartingItem +// @Accept json +// @Produce json +// @Tags BotStartingItem +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /bot_starting_item/{id} [delete] +func (e *BotStartingItemController) deleteBotStartingItem(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.BotStartingItem + query := e.db.QueryContext(models.BotStartingItem{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [BotStartingItem] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getBotStartingItemsBulk godoc +// @Id getBotStartingItemsBulk +// @Summary Gets BotStartingItems in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags BotStartingItem +// @Success 200 {array} models.BotStartingItem +// @Failure 500 {string} string "Bad query request" +// @Router /bot_starting_items/bulk [post] +func (e *BotStartingItemController) getBotStartingItemsBulk(c echo.Context) error { + var results []models.BotStartingItem + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.BotStartingItem{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getBotStartingItemsCount godoc +// @Id getBotStartingItemsCount +// @Summary Counts BotStartingItems +// @Accept json +// @Produce json +// @Tags BotStartingItem +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.BotStartingItem +// @Failure 500 {string} string "Bad query request" +// @Router /bot_starting_items/count [get] +func (e *BotStartingItemController) getBotStartingItemsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.BotStartingItem{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/character_parcel_controller.go b/internal/http/crudcontrollers/character_parcel_controller.go new file mode 100644 index 000000000..e5addc3e4 --- /dev/null +++ b/internal/http/crudcontrollers/character_parcel_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type CharacterParcelController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewCharacterParcelController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *CharacterParcelController { + return &CharacterParcelController{ + db: db, + auditLog: auditLog, + } +} + +func (e *CharacterParcelController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "character_parcel/:id", e.getCharacterParcel, nil), + routes.RegisterRoute(http.MethodGet, "character_parcels", e.listCharacterParcels, nil), + routes.RegisterRoute(http.MethodGet, "character_parcels/count", e.getCharacterParcelsCount, nil), + routes.RegisterRoute(http.MethodPut, "character_parcel", e.createCharacterParcel, nil), + routes.RegisterRoute(http.MethodDelete, "character_parcel/:id", e.deleteCharacterParcel, nil), + routes.RegisterRoute(http.MethodPatch, "character_parcel/:id", e.updateCharacterParcel, nil), + routes.RegisterRoute(http.MethodPost, "character_parcels/bulk", e.getCharacterParcelsBulk, nil), + } +} + +// listCharacterParcels godoc +// @Id listCharacterParcels +// @Summary Lists CharacterParcels +// @Accept json +// @Produce json +// @Tags CharacterParcel +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcel +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels [get] +func (e *CharacterParcelController) listCharacterParcels(c echo.Context) error { + var results []models.CharacterParcel + err := e.db.QueryContext(models.CharacterParcel{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterParcel godoc +// @Id getCharacterParcel +// @Summary Gets CharacterParcel +// @Accept json +// @Produce json +// @Tags CharacterParcel +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcel +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcel/{id} [get] +func (e *CharacterParcelController) getCharacterParcel(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcel + query := e.db.QueryContext(models.CharacterParcel{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateCharacterParcel godoc +// @Id updateCharacterParcel +// @Summary Updates CharacterParcel +// @Accept json +// @Produce json +// @Tags CharacterParcel +// @Param id path int true "Id" +// @Param character_parcel body models.CharacterParcel true "CharacterParcel" +// @Success 200 {array} models.CharacterParcel +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /character_parcel/{id} [patch] +func (e *CharacterParcelController) updateCharacterParcel(c echo.Context) error { + request := new(models.CharacterParcel) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcel + query := e.db.QueryContext(models.CharacterParcel{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [CharacterParcel] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createCharacterParcel godoc +// @Id createCharacterParcel +// @Summary Creates CharacterParcel +// @Accept json +// @Produce json +// @Param character_parcel body models.CharacterParcel true "CharacterParcel" +// @Tags CharacterParcel +// @Success 200 {array} models.CharacterParcel +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /character_parcel [put] +func (e *CharacterParcelController) createCharacterParcel(c echo.Context) error { + characterParcel := new(models.CharacterParcel) + if err := c.Bind(characterParcel); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.CharacterParcel{}, c).Model(&models.CharacterParcel{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&characterParcel).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.CharacterParcel{}, characterParcel) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [CharacterParcel] [%v] data [%v]", characterParcel.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, characterParcel) +} + +// deleteCharacterParcel godoc +// @Id deleteCharacterParcel +// @Summary Deletes CharacterParcel +// @Accept json +// @Produce json +// @Tags CharacterParcel +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /character_parcel/{id} [delete] +func (e *CharacterParcelController) deleteCharacterParcel(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcel + query := e.db.QueryContext(models.CharacterParcel{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [CharacterParcel] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getCharacterParcelsBulk godoc +// @Id getCharacterParcelsBulk +// @Summary Gets CharacterParcels in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags CharacterParcel +// @Success 200 {array} models.CharacterParcel +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels/bulk [post] +func (e *CharacterParcelController) getCharacterParcelsBulk(c echo.Context) error { + var results []models.CharacterParcel + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.CharacterParcel{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterParcelsCount godoc +// @Id getCharacterParcelsCount +// @Summary Counts CharacterParcels +// @Accept json +// @Produce json +// @Tags CharacterParcel +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcel +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels/count [get] +func (e *CharacterParcelController) getCharacterParcelsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.CharacterParcel{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/character_parcels_container_controller.go b/internal/http/crudcontrollers/character_parcels_container_controller.go new file mode 100644 index 000000000..b2ebfa061 --- /dev/null +++ b/internal/http/crudcontrollers/character_parcels_container_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type CharacterParcelsContainerController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewCharacterParcelsContainerController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *CharacterParcelsContainerController { + return &CharacterParcelsContainerController{ + db: db, + auditLog: auditLog, + } +} + +func (e *CharacterParcelsContainerController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "character_parcels_container/:id", e.getCharacterParcelsContainer, nil), + routes.RegisterRoute(http.MethodGet, "character_parcels_containers", e.listCharacterParcelsContainers, nil), + routes.RegisterRoute(http.MethodGet, "character_parcels_containers/count", e.getCharacterParcelsContainersCount, nil), + routes.RegisterRoute(http.MethodPut, "character_parcels_container", e.createCharacterParcelsContainer, nil), + routes.RegisterRoute(http.MethodDelete, "character_parcels_container/:id", e.deleteCharacterParcelsContainer, nil), + routes.RegisterRoute(http.MethodPatch, "character_parcels_container/:id", e.updateCharacterParcelsContainer, nil), + routes.RegisterRoute(http.MethodPost, "character_parcels_containers/bulk", e.getCharacterParcelsContainersBulk, nil), + } +} + +// listCharacterParcelsContainers godoc +// @Id listCharacterParcelsContainers +// @Summary Lists CharacterParcelsContainers +// @Accept json +// @Produce json +// @Tags CharacterParcelsContainer +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels_containers [get] +func (e *CharacterParcelsContainerController) listCharacterParcelsContainers(c echo.Context) error { + var results []models.CharacterParcelsContainer + err := e.db.QueryContext(models.CharacterParcelsContainer{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterParcelsContainer godoc +// @Id getCharacterParcelsContainer +// @Summary Gets CharacterParcelsContainer +// @Accept json +// @Produce json +// @Tags CharacterParcelsContainer +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels_container/{id} [get] +func (e *CharacterParcelsContainerController) getCharacterParcelsContainer(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcelsContainer + query := e.db.QueryContext(models.CharacterParcelsContainer{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateCharacterParcelsContainer godoc +// @Id updateCharacterParcelsContainer +// @Summary Updates CharacterParcelsContainer +// @Accept json +// @Produce json +// @Tags CharacterParcelsContainer +// @Param id path int true "Id" +// @Param character_parcels_container body models.CharacterParcelsContainer true "CharacterParcelsContainer" +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /character_parcels_container/{id} [patch] +func (e *CharacterParcelsContainerController) updateCharacterParcelsContainer(c echo.Context) error { + request := new(models.CharacterParcelsContainer) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcelsContainer + query := e.db.QueryContext(models.CharacterParcelsContainer{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [CharacterParcelsContainer] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createCharacterParcelsContainer godoc +// @Id createCharacterParcelsContainer +// @Summary Creates CharacterParcelsContainer +// @Accept json +// @Produce json +// @Param character_parcels_container body models.CharacterParcelsContainer true "CharacterParcelsContainer" +// @Tags CharacterParcelsContainer +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /character_parcels_container [put] +func (e *CharacterParcelsContainerController) createCharacterParcelsContainer(c echo.Context) error { + characterParcelsContainer := new(models.CharacterParcelsContainer) + if err := c.Bind(characterParcelsContainer); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.CharacterParcelsContainer{}, c).Model(&models.CharacterParcelsContainer{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&characterParcelsContainer).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.CharacterParcelsContainer{}, characterParcelsContainer) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [CharacterParcelsContainer] [%v] data [%v]", characterParcelsContainer.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, characterParcelsContainer) +} + +// deleteCharacterParcelsContainer godoc +// @Id deleteCharacterParcelsContainer +// @Summary Deletes CharacterParcelsContainer +// @Accept json +// @Produce json +// @Tags CharacterParcelsContainer +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /character_parcels_container/{id} [delete] +func (e *CharacterParcelsContainerController) deleteCharacterParcelsContainer(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.CharacterParcelsContainer + query := e.db.QueryContext(models.CharacterParcelsContainer{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [CharacterParcelsContainer] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getCharacterParcelsContainersBulk godoc +// @Id getCharacterParcelsContainersBulk +// @Summary Gets CharacterParcelsContainers in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags CharacterParcelsContainer +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels_containers/bulk [post] +func (e *CharacterParcelsContainerController) getCharacterParcelsContainersBulk(c echo.Context) error { + var results []models.CharacterParcelsContainer + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.CharacterParcelsContainer{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterParcelsContainersCount godoc +// @Id getCharacterParcelsContainersCount +// @Summary Counts CharacterParcelsContainers +// @Accept json +// @Produce json +// @Tags CharacterParcelsContainer +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterParcelsContainer +// @Failure 500 {string} string "Bad query request" +// @Router /character_parcels_containers/count [get] +func (e *CharacterParcelsContainerController) getCharacterParcelsContainersCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.CharacterParcelsContainer{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/character_stats_record_controller.go b/internal/http/crudcontrollers/character_stats_record_controller.go new file mode 100644 index 000000000..51dd482d7 --- /dev/null +++ b/internal/http/crudcontrollers/character_stats_record_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type CharacterStatsRecordController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewCharacterStatsRecordController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *CharacterStatsRecordController { + return &CharacterStatsRecordController{ + db: db, + auditLog: auditLog, + } +} + +func (e *CharacterStatsRecordController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "character_stats_record/:characterId", e.getCharacterStatsRecord, nil), + routes.RegisterRoute(http.MethodGet, "character_stats_records", e.listCharacterStatsRecords, nil), + routes.RegisterRoute(http.MethodGet, "character_stats_records/count", e.getCharacterStatsRecordsCount, nil), + routes.RegisterRoute(http.MethodPut, "character_stats_record", e.createCharacterStatsRecord, nil), + routes.RegisterRoute(http.MethodDelete, "character_stats_record/:characterId", e.deleteCharacterStatsRecord, nil), + routes.RegisterRoute(http.MethodPatch, "character_stats_record/:characterId", e.updateCharacterStatsRecord, nil), + routes.RegisterRoute(http.MethodPost, "character_stats_records/bulk", e.getCharacterStatsRecordsBulk, nil), + } +} + +// listCharacterStatsRecords godoc +// @Id listCharacterStatsRecords +// @Summary Lists CharacterStatsRecords +// @Accept json +// @Produce json +// @Tags CharacterStatsRecord +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 500 {string} string "Bad query request" +// @Router /character_stats_records [get] +func (e *CharacterStatsRecordController) listCharacterStatsRecords(c echo.Context) error { + var results []models.CharacterStatsRecord + err := e.db.QueryContext(models.CharacterStatsRecord{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterStatsRecord godoc +// @Id getCharacterStatsRecord +// @Summary Gets CharacterStatsRecord +// @Accept json +// @Produce json +// @Tags CharacterStatsRecord +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /character_stats_record/{id} [get] +func (e *CharacterStatsRecordController) getCharacterStatsRecord(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + characterId, err := strconv.Atoi(c.Param("characterId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [CharacterId]"}) + } + params = append(params, characterId) + keys = append(keys, "character_id = ?") + + // query builder + var result models.CharacterStatsRecord + query := e.db.QueryContext(models.CharacterStatsRecord{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.CharacterId == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateCharacterStatsRecord godoc +// @Id updateCharacterStatsRecord +// @Summary Updates CharacterStatsRecord +// @Accept json +// @Produce json +// @Tags CharacterStatsRecord +// @Param id path int true "Id" +// @Param character_stats_record body models.CharacterStatsRecord true "CharacterStatsRecord" +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /character_stats_record/{id} [patch] +func (e *CharacterStatsRecordController) updateCharacterStatsRecord(c echo.Context) error { + request := new(models.CharacterStatsRecord) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + characterId, err := strconv.Atoi(c.Param("characterId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [CharacterId]"}) + } + params = append(params, characterId) + keys = append(keys, "character_id = ?") + + // query builder + var result models.CharacterStatsRecord + query := e.db.QueryContext(models.CharacterStatsRecord{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [CharacterStatsRecord] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createCharacterStatsRecord godoc +// @Id createCharacterStatsRecord +// @Summary Creates CharacterStatsRecord +// @Accept json +// @Produce json +// @Param character_stats_record body models.CharacterStatsRecord true "CharacterStatsRecord" +// @Tags CharacterStatsRecord +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /character_stats_record [put] +func (e *CharacterStatsRecordController) createCharacterStatsRecord(c echo.Context) error { + characterStatsRecord := new(models.CharacterStatsRecord) + if err := c.Bind(characterStatsRecord); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.CharacterStatsRecord{}, c).Model(&models.CharacterStatsRecord{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&characterStatsRecord).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.CharacterStatsRecord{}, characterStatsRecord) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [CharacterStatsRecord] [%v] data [%v]", characterStatsRecord.CharacterId, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, characterStatsRecord) +} + +// deleteCharacterStatsRecord godoc +// @Id deleteCharacterStatsRecord +// @Summary Deletes CharacterStatsRecord +// @Accept json +// @Produce json +// @Tags CharacterStatsRecord +// @Param id path int true "characterId" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /character_stats_record/{id} [delete] +func (e *CharacterStatsRecordController) deleteCharacterStatsRecord(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + characterId, err := strconv.Atoi(c.Param("characterId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, characterId) + keys = append(keys, "character_id = ?") + + // query builder + var result models.CharacterStatsRecord + query := e.db.QueryContext(models.CharacterStatsRecord{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [CharacterStatsRecord] [%v] keys [%v]", result.CharacterId, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getCharacterStatsRecordsBulk godoc +// @Id getCharacterStatsRecordsBulk +// @Summary Gets CharacterStatsRecords in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags CharacterStatsRecord +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 500 {string} string "Bad query request" +// @Router /character_stats_records/bulk [post] +func (e *CharacterStatsRecordController) getCharacterStatsRecordsBulk(c echo.Context) error { + var results []models.CharacterStatsRecord + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.CharacterStatsRecord{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getCharacterStatsRecordsCount godoc +// @Id getCharacterStatsRecordsCount +// @Summary Counts CharacterStatsRecords +// @Accept json +// @Produce json +// @Tags CharacterStatsRecord +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.CharacterStatsRecord +// @Failure 500 {string} string "Bad query request" +// @Router /character_stats_records/count [get] +func (e *CharacterStatsRecordController) getCharacterStatsRecordsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.CharacterStatsRecord{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/group_id_controller.go b/internal/http/crudcontrollers/group_id_controller.go index 74568ae33..29eaba2a5 100644 --- a/internal/http/crudcontrollers/group_id_controller.go +++ b/internal/http/crudcontrollers/group_id_controller.go @@ -31,12 +31,12 @@ func NewGroupIdController( func (e *GroupIdController) Routes() []*routes.Route { return []*routes.Route{ - routes.RegisterRoute(http.MethodGet, "group_id/:groupid", e.getGroupId, nil), + routes.RegisterRoute(http.MethodGet, "group_id/:groupId", e.getGroupId, nil), routes.RegisterRoute(http.MethodGet, "group_ids", e.listGroupIds, nil), routes.RegisterRoute(http.MethodGet, "group_ids/count", e.getGroupIdsCount, nil), routes.RegisterRoute(http.MethodPut, "group_id", e.createGroupId, nil), - routes.RegisterRoute(http.MethodDelete, "group_id/:groupid", e.deleteGroupId, nil), - routes.RegisterRoute(http.MethodPatch, "group_id/:groupid", e.updateGroupId, nil), + routes.RegisterRoute(http.MethodDelete, "group_id/:groupId", e.deleteGroupId, nil), + routes.RegisterRoute(http.MethodPatch, "group_id/:groupId", e.updateGroupId, nil), routes.RegisterRoute(http.MethodPost, "group_ids/bulk", e.getGroupIdsBulk, nil), } } @@ -88,33 +88,44 @@ func (e *GroupIdController) getGroupId(c echo.Context) error { var keys []string // primary key param - groupid, err := strconv.Atoi(c.Param("groupid")) + groupId, err := strconv.Atoi(c.Param("groupId")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Groupid]"}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [GroupId]"}) } - params = append(params, groupid) - keys = append(keys, "groupid = ?") + params = append(params, groupId) + keys = append(keys, "group_id = ?") - // key param [charid] position [2] type [int] - if len(c.QueryParam("charid")) > 0 { - charidParam, err := strconv.Atoi(c.QueryParam("charid")) + // key param [character_id] position [3] type [int] + if len(c.QueryParam("character_id")) > 0 { + characterIdParam, err := strconv.Atoi(c.QueryParam("character_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [charid] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [character_id] err [%s]", err.Error())}) } - params = append(params, charidParam) - keys = append(keys, "charid = ?") + params = append(params, characterIdParam) + keys = append(keys, "character_id = ?") } - // key param [ismerc] position [4] type [tinyint] - if len(c.QueryParam("ismerc")) > 0 { - ismercParam, err := strconv.Atoi(c.QueryParam("ismerc")) + // key param [bot_id] position [4] type [int] + if len(c.QueryParam("bot_id")) > 0 { + botIdParam, err := strconv.Atoi(c.QueryParam("bot_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [ismerc] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [bot_id] err [%s]", err.Error())}) } - params = append(params, ismercParam) - keys = append(keys, "ismerc = ?") + params = append(params, botIdParam) + keys = append(keys, "bot_id = ?") + } + + // key param [merc_id] position [5] type [int] + if len(c.QueryParam("merc_id")) > 0 { + mercIdParam, err := strconv.Atoi(c.QueryParam("merc_id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [merc_id] err [%s]", err.Error())}) + } + + params = append(params, mercIdParam) + keys = append(keys, "merc_id = ?") } // query builder @@ -131,7 +142,7 @@ func (e *GroupIdController) getGroupId(c echo.Context) error { } // couldn't find entity - if result.Groupid == 0 { + if result.GroupId == 0 { return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) } @@ -164,33 +175,44 @@ func (e *GroupIdController) updateGroupId(c echo.Context) error { var keys []string // primary key param - groupid, err := strconv.Atoi(c.Param("groupid")) + groupId, err := strconv.Atoi(c.Param("groupId")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Groupid]"}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [GroupId]"}) } - params = append(params, groupid) - keys = append(keys, "groupid = ?") + params = append(params, groupId) + keys = append(keys, "group_id = ?") - // key param [charid] position [2] type [int] - if len(c.QueryParam("charid")) > 0 { - charidParam, err := strconv.Atoi(c.QueryParam("charid")) + // key param [character_id] position [3] type [int] + if len(c.QueryParam("character_id")) > 0 { + characterIdParam, err := strconv.Atoi(c.QueryParam("character_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [charid] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [character_id] err [%s]", err.Error())}) } - params = append(params, charidParam) - keys = append(keys, "charid = ?") + params = append(params, characterIdParam) + keys = append(keys, "character_id = ?") } - // key param [ismerc] position [4] type [tinyint] - if len(c.QueryParam("ismerc")) > 0 { - ismercParam, err := strconv.Atoi(c.QueryParam("ismerc")) + // key param [bot_id] position [4] type [int] + if len(c.QueryParam("bot_id")) > 0 { + botIdParam, err := strconv.Atoi(c.QueryParam("bot_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [ismerc] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [bot_id] err [%s]", err.Error())}) } - params = append(params, ismercParam) - keys = append(keys, "ismerc = ?") + params = append(params, botIdParam) + keys = append(keys, "bot_id = ?") + } + + // key param [merc_id] position [5] type [int] + if len(c.QueryParam("merc_id")) > 0 { + mercIdParam, err := strconv.Atoi(c.QueryParam("merc_id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [merc_id] err [%s]", err.Error())}) + } + + params = append(params, mercIdParam) + keys = append(keys, "merc_id = ?") } // query builder @@ -279,7 +301,7 @@ func (e *GroupIdController) createGroupId(c echo.Context) error { fields = append(fields, fmt.Sprintf("%v = %v", k, v)) } // record event - event := fmt.Sprintf("Created [GroupId] [%v] data [%v]", groupId.Groupid, strings.Join(fields, ", ")) + event := fmt.Sprintf("Created [GroupId] [%v] data [%v]", groupId.GroupId, strings.Join(fields, ", ")) e.auditLog.LogUserEvent(c, "CREATE", event) } @@ -292,7 +314,7 @@ func (e *GroupIdController) createGroupId(c echo.Context) error { // @Accept json // @Produce json // @Tags GroupId -// @Param id path int true "groupid" +// @Param id path int true "groupId" // @Success 200 {string} string "Entity deleted successfully" // @Failure 404 {string} string "Cannot find entity" // @Failure 500 {string} string "Error binding to entity" @@ -303,33 +325,44 @@ func (e *GroupIdController) deleteGroupId(c echo.Context) error { var keys []string // primary key param - groupid, err := strconv.Atoi(c.Param("groupid")) + groupId, err := strconv.Atoi(c.Param("groupId")) if err != nil { return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) } - params = append(params, groupid) - keys = append(keys, "groupid = ?") + params = append(params, groupId) + keys = append(keys, "group_id = ?") + + // key param [character_id] position [3] type [int] + if len(c.QueryParam("character_id")) > 0 { + characterIdParam, err := strconv.Atoi(c.QueryParam("character_id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [character_id] err [%s]", err.Error())}) + } + + params = append(params, characterIdParam) + keys = append(keys, "character_id = ?") + } - // key param [charid] position [2] type [int] - if len(c.QueryParam("charid")) > 0 { - charidParam, err := strconv.Atoi(c.QueryParam("charid")) + // key param [bot_id] position [4] type [int] + if len(c.QueryParam("bot_id")) > 0 { + botIdParam, err := strconv.Atoi(c.QueryParam("bot_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [charid] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [bot_id] err [%s]", err.Error())}) } - params = append(params, charidParam) - keys = append(keys, "charid = ?") + params = append(params, botIdParam) + keys = append(keys, "bot_id = ?") } - // key param [ismerc] position [4] type [tinyint] - if len(c.QueryParam("ismerc")) > 0 { - ismercParam, err := strconv.Atoi(c.QueryParam("ismerc")) + // key param [merc_id] position [5] type [int] + if len(c.QueryParam("merc_id")) > 0 { + mercIdParam, err := strconv.Atoi(c.QueryParam("merc_id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [ismerc] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [merc_id] err [%s]", err.Error())}) } - params = append(params, ismercParam) - keys = append(keys, "ismerc = ?") + params = append(params, mercIdParam) + keys = append(keys, "merc_id = ?") } // query builder @@ -359,7 +392,7 @@ func (e *GroupIdController) deleteGroupId(c echo.Context) error { ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) } // record event - event := fmt.Sprintf("Deleted [GroupId] [%v] keys [%v]", result.Groupid, strings.Join(ids, ", ")) + event := fmt.Sprintf("Deleted [GroupId] [%v] keys [%v]", result.GroupId, strings.Join(ids, ", ")) e.auditLog.LogUserEvent(c, "DELETE", event) } diff --git a/internal/http/crudcontrollers/guild_bank_controller.go b/internal/http/crudcontrollers/guild_bank_controller.go new file mode 100644 index 000000000..8f1c723f0 --- /dev/null +++ b/internal/http/crudcontrollers/guild_bank_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type GuildBankController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewGuildBankController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *GuildBankController { + return &GuildBankController{ + db: db, + auditLog: auditLog, + } +} + +func (e *GuildBankController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "guild_bank/:id", e.getGuildBank, nil), + routes.RegisterRoute(http.MethodGet, "guild_banks", e.listGuildBanks, nil), + routes.RegisterRoute(http.MethodGet, "guild_banks/count", e.getGuildBanksCount, nil), + routes.RegisterRoute(http.MethodPut, "guild_bank", e.createGuildBank, nil), + routes.RegisterRoute(http.MethodDelete, "guild_bank/:id", e.deleteGuildBank, nil), + routes.RegisterRoute(http.MethodPatch, "guild_bank/:id", e.updateGuildBank, nil), + routes.RegisterRoute(http.MethodPost, "guild_banks/bulk", e.getGuildBanksBulk, nil), + } +} + +// listGuildBanks godoc +// @Id listGuildBanks +// @Summary Lists GuildBanks +// @Accept json +// @Produce json +// @Tags GuildBank +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildBank +// @Failure 500 {string} string "Bad query request" +// @Router /guild_banks [get] +func (e *GuildBankController) listGuildBanks(c echo.Context) error { + var results []models.GuildBank + err := e.db.QueryContext(models.GuildBank{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildBank godoc +// @Id getGuildBank +// @Summary Gets GuildBank +// @Accept json +// @Produce json +// @Tags GuildBank +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildBank +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /guild_bank/{id} [get] +func (e *GuildBankController) getGuildBank(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildBank + query := e.db.QueryContext(models.GuildBank{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateGuildBank godoc +// @Id updateGuildBank +// @Summary Updates GuildBank +// @Accept json +// @Produce json +// @Tags GuildBank +// @Param id path int true "Id" +// @Param guild_bank body models.GuildBank true "GuildBank" +// @Success 200 {array} models.GuildBank +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /guild_bank/{id} [patch] +func (e *GuildBankController) updateGuildBank(c echo.Context) error { + request := new(models.GuildBank) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildBank + query := e.db.QueryContext(models.GuildBank{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [GuildBank] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createGuildBank godoc +// @Id createGuildBank +// @Summary Creates GuildBank +// @Accept json +// @Produce json +// @Param guild_bank body models.GuildBank true "GuildBank" +// @Tags GuildBank +// @Success 200 {array} models.GuildBank +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /guild_bank [put] +func (e *GuildBankController) createGuildBank(c echo.Context) error { + guildBank := new(models.GuildBank) + if err := c.Bind(guildBank); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.GuildBank{}, c).Model(&models.GuildBank{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&guildBank).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.GuildBank{}, guildBank) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [GuildBank] [%v] data [%v]", guildBank.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, guildBank) +} + +// deleteGuildBank godoc +// @Id deleteGuildBank +// @Summary Deletes GuildBank +// @Accept json +// @Produce json +// @Tags GuildBank +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /guild_bank/{id} [delete] +func (e *GuildBankController) deleteGuildBank(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildBank + query := e.db.QueryContext(models.GuildBank{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [GuildBank] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getGuildBanksBulk godoc +// @Id getGuildBanksBulk +// @Summary Gets GuildBanks in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags GuildBank +// @Success 200 {array} models.GuildBank +// @Failure 500 {string} string "Bad query request" +// @Router /guild_banks/bulk [post] +func (e *GuildBankController) getGuildBanksBulk(c echo.Context) error { + var results []models.GuildBank + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.GuildBank{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildBanksCount godoc +// @Id getGuildBanksCount +// @Summary Counts GuildBanks +// @Accept json +// @Produce json +// @Tags GuildBank +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildBank +// @Failure 500 {string} string "Bad query request" +// @Router /guild_banks/count [get] +func (e *GuildBankController) getGuildBanksCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.GuildBank{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/guild_permission_controller.go b/internal/http/crudcontrollers/guild_permission_controller.go new file mode 100644 index 000000000..25c8e286d --- /dev/null +++ b/internal/http/crudcontrollers/guild_permission_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type GuildPermissionController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewGuildPermissionController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *GuildPermissionController { + return &GuildPermissionController{ + db: db, + auditLog: auditLog, + } +} + +func (e *GuildPermissionController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "guild_permission/:id", e.getGuildPermission, nil), + routes.RegisterRoute(http.MethodGet, "guild_permissions", e.listGuildPermissions, nil), + routes.RegisterRoute(http.MethodGet, "guild_permissions/count", e.getGuildPermissionsCount, nil), + routes.RegisterRoute(http.MethodPut, "guild_permission", e.createGuildPermission, nil), + routes.RegisterRoute(http.MethodDelete, "guild_permission/:id", e.deleteGuildPermission, nil), + routes.RegisterRoute(http.MethodPatch, "guild_permission/:id", e.updateGuildPermission, nil), + routes.RegisterRoute(http.MethodPost, "guild_permissions/bulk", e.getGuildPermissionsBulk, nil), + } +} + +// listGuildPermissions godoc +// @Id listGuildPermissions +// @Summary Lists GuildPermissions +// @Accept json +// @Produce json +// @Tags GuildPermission +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildPermission +// @Failure 500 {string} string "Bad query request" +// @Router /guild_permissions [get] +func (e *GuildPermissionController) listGuildPermissions(c echo.Context) error { + var results []models.GuildPermission + err := e.db.QueryContext(models.GuildPermission{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildPermission godoc +// @Id getGuildPermission +// @Summary Gets GuildPermission +// @Accept json +// @Produce json +// @Tags GuildPermission +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildPermission +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /guild_permission/{id} [get] +func (e *GuildPermissionController) getGuildPermission(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildPermission + query := e.db.QueryContext(models.GuildPermission{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateGuildPermission godoc +// @Id updateGuildPermission +// @Summary Updates GuildPermission +// @Accept json +// @Produce json +// @Tags GuildPermission +// @Param id path int true "Id" +// @Param guild_permission body models.GuildPermission true "GuildPermission" +// @Success 200 {array} models.GuildPermission +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /guild_permission/{id} [patch] +func (e *GuildPermissionController) updateGuildPermission(c echo.Context) error { + request := new(models.GuildPermission) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildPermission + query := e.db.QueryContext(models.GuildPermission{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [GuildPermission] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createGuildPermission godoc +// @Id createGuildPermission +// @Summary Creates GuildPermission +// @Accept json +// @Produce json +// @Param guild_permission body models.GuildPermission true "GuildPermission" +// @Tags GuildPermission +// @Success 200 {array} models.GuildPermission +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /guild_permission [put] +func (e *GuildPermissionController) createGuildPermission(c echo.Context) error { + guildPermission := new(models.GuildPermission) + if err := c.Bind(guildPermission); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.GuildPermission{}, c).Model(&models.GuildPermission{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&guildPermission).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.GuildPermission{}, guildPermission) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [GuildPermission] [%v] data [%v]", guildPermission.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, guildPermission) +} + +// deleteGuildPermission godoc +// @Id deleteGuildPermission +// @Summary Deletes GuildPermission +// @Accept json +// @Produce json +// @Tags GuildPermission +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /guild_permission/{id} [delete] +func (e *GuildPermissionController) deleteGuildPermission(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.GuildPermission + query := e.db.QueryContext(models.GuildPermission{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [GuildPermission] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getGuildPermissionsBulk godoc +// @Id getGuildPermissionsBulk +// @Summary Gets GuildPermissions in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags GuildPermission +// @Success 200 {array} models.GuildPermission +// @Failure 500 {string} string "Bad query request" +// @Router /guild_permissions/bulk [post] +func (e *GuildPermissionController) getGuildPermissionsBulk(c echo.Context) error { + var results []models.GuildPermission + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.GuildPermission{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildPermissionsCount godoc +// @Id getGuildPermissionsCount +// @Summary Counts GuildPermissions +// @Accept json +// @Produce json +// @Tags GuildPermission +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildPermission +// @Failure 500 {string} string "Bad query request" +// @Router /guild_permissions/count [get] +func (e *GuildPermissionController) getGuildPermissionsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.GuildPermission{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/guild_tribute_controller.go b/internal/http/crudcontrollers/guild_tribute_controller.go new file mode 100644 index 000000000..52fe41f26 --- /dev/null +++ b/internal/http/crudcontrollers/guild_tribute_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type GuildTributeController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewGuildTributeController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *GuildTributeController { + return &GuildTributeController{ + db: db, + auditLog: auditLog, + } +} + +func (e *GuildTributeController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "guild_tribute/:guildId", e.getGuildTribute, nil), + routes.RegisterRoute(http.MethodGet, "guild_tributes", e.listGuildTributes, nil), + routes.RegisterRoute(http.MethodGet, "guild_tributes/count", e.getGuildTributesCount, nil), + routes.RegisterRoute(http.MethodPut, "guild_tribute", e.createGuildTribute, nil), + routes.RegisterRoute(http.MethodDelete, "guild_tribute/:guildId", e.deleteGuildTribute, nil), + routes.RegisterRoute(http.MethodPatch, "guild_tribute/:guildId", e.updateGuildTribute, nil), + routes.RegisterRoute(http.MethodPost, "guild_tributes/bulk", e.getGuildTributesBulk, nil), + } +} + +// listGuildTributes godoc +// @Id listGuildTributes +// @Summary Lists GuildTributes +// @Accept json +// @Produce json +// @Tags GuildTribute +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildTribute +// @Failure 500 {string} string "Bad query request" +// @Router /guild_tributes [get] +func (e *GuildTributeController) listGuildTributes(c echo.Context) error { + var results []models.GuildTribute + err := e.db.QueryContext(models.GuildTribute{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildTribute godoc +// @Id getGuildTribute +// @Summary Gets GuildTribute +// @Accept json +// @Produce json +// @Tags GuildTribute +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildTribute +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /guild_tribute/{id} [get] +func (e *GuildTributeController) getGuildTribute(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + guildId, err := strconv.Atoi(c.Param("guildId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [GuildId]"}) + } + params = append(params, guildId) + keys = append(keys, "guild_id = ?") + + // query builder + var result models.GuildTribute + query := e.db.QueryContext(models.GuildTribute{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.GuildId == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateGuildTribute godoc +// @Id updateGuildTribute +// @Summary Updates GuildTribute +// @Accept json +// @Produce json +// @Tags GuildTribute +// @Param id path int true "Id" +// @Param guild_tribute body models.GuildTribute true "GuildTribute" +// @Success 200 {array} models.GuildTribute +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /guild_tribute/{id} [patch] +func (e *GuildTributeController) updateGuildTribute(c echo.Context) error { + request := new(models.GuildTribute) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + guildId, err := strconv.Atoi(c.Param("guildId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [GuildId]"}) + } + params = append(params, guildId) + keys = append(keys, "guild_id = ?") + + // query builder + var result models.GuildTribute + query := e.db.QueryContext(models.GuildTribute{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [GuildTribute] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createGuildTribute godoc +// @Id createGuildTribute +// @Summary Creates GuildTribute +// @Accept json +// @Produce json +// @Param guild_tribute body models.GuildTribute true "GuildTribute" +// @Tags GuildTribute +// @Success 200 {array} models.GuildTribute +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /guild_tribute [put] +func (e *GuildTributeController) createGuildTribute(c echo.Context) error { + guildTribute := new(models.GuildTribute) + if err := c.Bind(guildTribute); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.GuildTribute{}, c).Model(&models.GuildTribute{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&guildTribute).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.GuildTribute{}, guildTribute) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [GuildTribute] [%v] data [%v]", guildTribute.GuildId, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, guildTribute) +} + +// deleteGuildTribute godoc +// @Id deleteGuildTribute +// @Summary Deletes GuildTribute +// @Accept json +// @Produce json +// @Tags GuildTribute +// @Param id path int true "guildId" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /guild_tribute/{id} [delete] +func (e *GuildTributeController) deleteGuildTribute(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + guildId, err := strconv.Atoi(c.Param("guildId")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, guildId) + keys = append(keys, "guild_id = ?") + + // query builder + var result models.GuildTribute + query := e.db.QueryContext(models.GuildTribute{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [GuildTribute] [%v] keys [%v]", result.GuildId, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getGuildTributesBulk godoc +// @Id getGuildTributesBulk +// @Summary Gets GuildTributes in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags GuildTribute +// @Success 200 {array} models.GuildTribute +// @Failure 500 {string} string "Bad query request" +// @Router /guild_tributes/bulk [post] +func (e *GuildTributeController) getGuildTributesBulk(c echo.Context) error { + var results []models.GuildTribute + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.GuildTribute{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getGuildTributesCount godoc +// @Id getGuildTributesCount +// @Summary Counts GuildTributes +// @Accept json +// @Produce json +// @Tags GuildTribute +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.GuildTribute +// @Failure 500 {string} string "Bad query request" +// @Router /guild_tributes/count [get] +func (e *GuildTributeController) getGuildTributesCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.GuildTribute{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/keyring_controller.go b/internal/http/crudcontrollers/keyring_controller.go new file mode 100644 index 000000000..534dff35c --- /dev/null +++ b/internal/http/crudcontrollers/keyring_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type KeyringController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewKeyringController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *KeyringController { + return &KeyringController{ + db: db, + auditLog: auditLog, + } +} + +func (e *KeyringController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "keyring/:id", e.getKeyring, nil), + routes.RegisterRoute(http.MethodGet, "keyrings", e.listKeyrings, nil), + routes.RegisterRoute(http.MethodGet, "keyrings/count", e.getKeyringsCount, nil), + routes.RegisterRoute(http.MethodPut, "keyring", e.createKeyring, nil), + routes.RegisterRoute(http.MethodDelete, "keyring/:id", e.deleteKeyring, nil), + routes.RegisterRoute(http.MethodPatch, "keyring/:id", e.updateKeyring, nil), + routes.RegisterRoute(http.MethodPost, "keyrings/bulk", e.getKeyringsBulk, nil), + } +} + +// listKeyrings godoc +// @Id listKeyrings +// @Summary Lists Keyrings +// @Accept json +// @Produce json +// @Tags Keyring +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Keyring +// @Failure 500 {string} string "Bad query request" +// @Router /keyrings [get] +func (e *KeyringController) listKeyrings(c echo.Context) error { + var results []models.Keyring + err := e.db.QueryContext(models.Keyring{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getKeyring godoc +// @Id getKeyring +// @Summary Gets Keyring +// @Accept json +// @Produce json +// @Tags Keyring +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Keyring +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /keyring/{id} [get] +func (e *KeyringController) getKeyring(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Keyring + query := e.db.QueryContext(models.Keyring{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateKeyring godoc +// @Id updateKeyring +// @Summary Updates Keyring +// @Accept json +// @Produce json +// @Tags Keyring +// @Param id path int true "Id" +// @Param keyring body models.Keyring true "Keyring" +// @Success 200 {array} models.Keyring +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /keyring/{id} [patch] +func (e *KeyringController) updateKeyring(c echo.Context) error { + request := new(models.Keyring) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Keyring + query := e.db.QueryContext(models.Keyring{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [Keyring] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createKeyring godoc +// @Id createKeyring +// @Summary Creates Keyring +// @Accept json +// @Produce json +// @Param keyring body models.Keyring true "Keyring" +// @Tags Keyring +// @Success 200 {array} models.Keyring +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /keyring [put] +func (e *KeyringController) createKeyring(c echo.Context) error { + keyring := new(models.Keyring) + if err := c.Bind(keyring); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.Keyring{}, c).Model(&models.Keyring{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&keyring).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.Keyring{}, keyring) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [Keyring] [%v] data [%v]", keyring.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, keyring) +} + +// deleteKeyring godoc +// @Id deleteKeyring +// @Summary Deletes Keyring +// @Accept json +// @Produce json +// @Tags Keyring +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /keyring/{id} [delete] +func (e *KeyringController) deleteKeyring(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Keyring + query := e.db.QueryContext(models.Keyring{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [Keyring] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getKeyringsBulk godoc +// @Id getKeyringsBulk +// @Summary Gets Keyrings in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags Keyring +// @Success 200 {array} models.Keyring +// @Failure 500 {string} string "Bad query request" +// @Router /keyrings/bulk [post] +func (e *KeyringController) getKeyringsBulk(c echo.Context) error { + var results []models.Keyring + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.Keyring{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getKeyringsCount godoc +// @Id getKeyringsCount +// @Summary Counts Keyrings +// @Accept json +// @Produce json +// @Tags Keyring +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Keyring +// @Failure 500 {string} string "Bad query request" +// @Router /keyrings/count [get] +func (e *KeyringController) getKeyringsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.Keyring{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/merchantlist_temp_controller.go b/internal/http/crudcontrollers/merchantlist_temp_controller.go index 1e9b30e58..f6a6cdd4b 100644 --- a/internal/http/crudcontrollers/merchantlist_temp_controller.go +++ b/internal/http/crudcontrollers/merchantlist_temp_controller.go @@ -95,7 +95,7 @@ func (e *MerchantlistTempController) getMerchantlistTemp(c echo.Context) error { params = append(params, npcid) keys = append(keys, "npcid = ?") - // key param [slot] position [2] type [tinyint] + // key param [slot] position [2] type [int] if len(c.QueryParam("slot")) > 0 { slotParam, err := strconv.Atoi(c.QueryParam("slot")) if err != nil { @@ -182,7 +182,7 @@ func (e *MerchantlistTempController) updateMerchantlistTemp(c echo.Context) erro params = append(params, npcid) keys = append(keys, "npcid = ?") - // key param [slot] position [2] type [tinyint] + // key param [slot] position [2] type [int] if len(c.QueryParam("slot")) > 0 { slotParam, err := strconv.Atoi(c.QueryParam("slot")) if err != nil { @@ -332,7 +332,7 @@ func (e *MerchantlistTempController) deleteMerchantlistTemp(c echo.Context) erro params = append(params, npcid) keys = append(keys, "npcid = ?") - // key param [slot] position [2] type [tinyint] + // key param [slot] position [2] type [int] if len(c.QueryParam("slot")) > 0 { slotParam, err := strconv.Atoi(c.QueryParam("slot")) if err != nil { diff --git a/internal/http/crudcontrollers/npc_scale_global_base_controller.go b/internal/http/crudcontrollers/npc_scale_global_base_controller.go index a6cc923c7..9fbf0942b 100644 --- a/internal/http/crudcontrollers/npc_scale_global_base_controller.go +++ b/internal/http/crudcontrollers/npc_scale_global_base_controller.go @@ -106,26 +106,26 @@ func (e *NpcScaleGlobalBaseController) getNpcScaleGlobalBase(c echo.Context) err keys = append(keys, "level = ?") } - // key param [zone_id] position [3] type [int] - if len(c.QueryParam("zone_id")) > 0 { - zoneIdParam, err := strconv.Atoi(c.QueryParam("zone_id")) + // key param [zone_id_list] position [3] type [text] + if len(c.QueryParam("zone_id_list")) > 0 { + zoneIdListParam, err := strconv.Atoi(c.QueryParam("zone_id_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id_list] err [%s]", err.Error())}) } - params = append(params, zoneIdParam) - keys = append(keys, "zone_id = ?") + params = append(params, zoneIdListParam) + keys = append(keys, "zone_id_list = ?") } - // key param [instance_version] position [4] type [int] - if len(c.QueryParam("instance_version")) > 0 { - instanceVersionParam, err := strconv.Atoi(c.QueryParam("instance_version")) + // key param [instance_version_list] position [4] type [text] + if len(c.QueryParam("instance_version_list")) > 0 { + instanceVersionListParam, err := strconv.Atoi(c.QueryParam("instance_version_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version_list] err [%s]", err.Error())}) } - params = append(params, instanceVersionParam) - keys = append(keys, "instance_version = ?") + params = append(params, instanceVersionListParam) + keys = append(keys, "instance_version_list = ?") } // query builder @@ -193,26 +193,26 @@ func (e *NpcScaleGlobalBaseController) updateNpcScaleGlobalBase(c echo.Context) keys = append(keys, "level = ?") } - // key param [zone_id] position [3] type [int] - if len(c.QueryParam("zone_id")) > 0 { - zoneIdParam, err := strconv.Atoi(c.QueryParam("zone_id")) + // key param [zone_id_list] position [3] type [text] + if len(c.QueryParam("zone_id_list")) > 0 { + zoneIdListParam, err := strconv.Atoi(c.QueryParam("zone_id_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id_list] err [%s]", err.Error())}) } - params = append(params, zoneIdParam) - keys = append(keys, "zone_id = ?") + params = append(params, zoneIdListParam) + keys = append(keys, "zone_id_list = ?") } - // key param [instance_version] position [4] type [int] - if len(c.QueryParam("instance_version")) > 0 { - instanceVersionParam, err := strconv.Atoi(c.QueryParam("instance_version")) + // key param [instance_version_list] position [4] type [text] + if len(c.QueryParam("instance_version_list")) > 0 { + instanceVersionListParam, err := strconv.Atoi(c.QueryParam("instance_version_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version_list] err [%s]", err.Error())}) } - params = append(params, instanceVersionParam) - keys = append(keys, "instance_version = ?") + params = append(params, instanceVersionListParam) + keys = append(keys, "instance_version_list = ?") } // query builder @@ -343,26 +343,26 @@ func (e *NpcScaleGlobalBaseController) deleteNpcScaleGlobalBase(c echo.Context) keys = append(keys, "level = ?") } - // key param [zone_id] position [3] type [int] - if len(c.QueryParam("zone_id")) > 0 { - zoneIdParam, err := strconv.Atoi(c.QueryParam("zone_id")) + // key param [zone_id_list] position [3] type [text] + if len(c.QueryParam("zone_id_list")) > 0 { + zoneIdListParam, err := strconv.Atoi(c.QueryParam("zone_id_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [zone_id_list] err [%s]", err.Error())}) } - params = append(params, zoneIdParam) - keys = append(keys, "zone_id = ?") + params = append(params, zoneIdListParam) + keys = append(keys, "zone_id_list = ?") } - // key param [instance_version] position [4] type [int] - if len(c.QueryParam("instance_version")) > 0 { - instanceVersionParam, err := strconv.Atoi(c.QueryParam("instance_version")) + // key param [instance_version_list] position [4] type [text] + if len(c.QueryParam("instance_version_list")) > 0 { + instanceVersionListParam, err := strconv.Atoi(c.QueryParam("instance_version_list")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version] err [%s]", err.Error())}) + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [instance_version_list] err [%s]", err.Error())}) } - params = append(params, instanceVersionParam) - keys = append(keys, "instance_version = ?") + params = append(params, instanceVersionListParam) + keys = append(keys, "instance_version_list = ?") } // query builder diff --git a/internal/http/crudcontrollers/skill_cap_controller.go b/internal/http/crudcontrollers/skill_cap_controller.go index 543b55bce..0c61cd11f 100644 --- a/internal/http/crudcontrollers/skill_cap_controller.go +++ b/internal/http/crudcontrollers/skill_cap_controller.go @@ -31,12 +31,12 @@ func NewSkillCapController( func (e *SkillCapController) Routes() []*routes.Route { return []*routes.Route{ - routes.RegisterRoute(http.MethodGet, "skill_cap/:skillID", e.getSkillCap, nil), + routes.RegisterRoute(http.MethodGet, "skill_cap/:id", e.getSkillCap, nil), routes.RegisterRoute(http.MethodGet, "skill_caps", e.listSkillCaps, nil), routes.RegisterRoute(http.MethodGet, "skill_caps/count", e.getSkillCapsCount, nil), routes.RegisterRoute(http.MethodPut, "skill_cap", e.createSkillCap, nil), - routes.RegisterRoute(http.MethodDelete, "skill_cap/:skillID", e.deleteSkillCap, nil), - routes.RegisterRoute(http.MethodPatch, "skill_cap/:skillID", e.updateSkillCap, nil), + routes.RegisterRoute(http.MethodDelete, "skill_cap/:id", e.deleteSkillCap, nil), + routes.RegisterRoute(http.MethodPatch, "skill_cap/:id", e.updateSkillCap, nil), routes.RegisterRoute(http.MethodPost, "skill_caps/bulk", e.getSkillCapsBulk, nil), } } @@ -88,45 +88,12 @@ func (e *SkillCapController) getSkillCap(c echo.Context) error { var keys []string // primary key param - skillID, err := strconv.Atoi(c.Param("skillID")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [SkillID]"}) - } - params = append(params, skillID) - keys = append(keys, "skillID = ?") - - // key param [class] position [2] type [tinyint] - if len(c.QueryParam("class")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class = ?") - } - - // key param [level] position [3] type [tinyint] - if len(c.QueryParam("level")) > 0 { - levelParam, err := strconv.Atoi(c.QueryParam("level")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [level] err [%s]", err.Error())}) - } - - params = append(params, levelParam) - keys = append(keys, "level = ?") - } - - // key param [class_] position [5] type [tinyint] - if len(c.QueryParam("class_")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class_")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class_] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class_ = ?") + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.SkillCap @@ -142,7 +109,7 @@ func (e *SkillCapController) getSkillCap(c echo.Context) error { } // couldn't find entity - if result.SkillID == 0 { + if result.ID == 0 { return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) } @@ -175,45 +142,12 @@ func (e *SkillCapController) updateSkillCap(c echo.Context) error { var keys []string // primary key param - skillID, err := strconv.Atoi(c.Param("skillID")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [SkillID]"}) - } - params = append(params, skillID) - keys = append(keys, "skillID = ?") - - // key param [class] position [2] type [tinyint] - if len(c.QueryParam("class")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class = ?") - } - - // key param [level] position [3] type [tinyint] - if len(c.QueryParam("level")) > 0 { - levelParam, err := strconv.Atoi(c.QueryParam("level")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [level] err [%s]", err.Error())}) - } - - params = append(params, levelParam) - keys = append(keys, "level = ?") - } - - // key param [class_] position [5] type [tinyint] - if len(c.QueryParam("class_")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class_")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class_] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class_ = ?") + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.SkillCap @@ -301,7 +235,7 @@ func (e *SkillCapController) createSkillCap(c echo.Context) error { fields = append(fields, fmt.Sprintf("%v = %v", k, v)) } // record event - event := fmt.Sprintf("Created [SkillCap] [%v] data [%v]", skillCap.SkillID, strings.Join(fields, ", ")) + event := fmt.Sprintf("Created [SkillCap] [%v] data [%v]", skillCap.ID, strings.Join(fields, ", ")) e.auditLog.LogUserEvent(c, "CREATE", event) } @@ -314,7 +248,7 @@ func (e *SkillCapController) createSkillCap(c echo.Context) error { // @Accept json // @Produce json // @Tags SkillCap -// @Param id path int true "skillID" +// @Param id path int true "id" // @Success 200 {string} string "Entity deleted successfully" // @Failure 404 {string} string "Cannot find entity" // @Failure 500 {string} string "Error binding to entity" @@ -325,45 +259,12 @@ func (e *SkillCapController) deleteSkillCap(c echo.Context) error { var keys []string // primary key param - skillID, err := strconv.Atoi(c.Param("skillID")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) } - params = append(params, skillID) - keys = append(keys, "skillID = ?") - - // key param [class] position [2] type [tinyint] - if len(c.QueryParam("class")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class = ?") - } - - // key param [level] position [3] type [tinyint] - if len(c.QueryParam("level")) > 0 { - levelParam, err := strconv.Atoi(c.QueryParam("level")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [level] err [%s]", err.Error())}) - } - - params = append(params, levelParam) - keys = append(keys, "level = ?") - } - - // key param [class_] position [5] type [tinyint] - if len(c.QueryParam("class_")) > 0 { - classParam, err := strconv.Atoi(c.QueryParam("class_")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [class_] err [%s]", err.Error())}) - } - - params = append(params, classParam) - keys = append(keys, "class_ = ?") - } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.SkillCap @@ -392,7 +293,7 @@ func (e *SkillCapController) deleteSkillCap(c echo.Context) error { ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) } // record event - event := fmt.Sprintf("Deleted [SkillCap] [%v] keys [%v]", result.SkillID, strings.Join(ids, ", ")) + event := fmt.Sprintf("Deleted [SkillCap] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) e.auditLog.LogUserEvent(c, "DELETE", event) } diff --git a/internal/http/crudcontrollers/spawn_2_disabled_controller.go b/internal/http/crudcontrollers/spawn_2_disabled_controller.go new file mode 100644 index 000000000..8c43ba72a --- /dev/null +++ b/internal/http/crudcontrollers/spawn_2_disabled_controller.go @@ -0,0 +1,365 @@ +package crudcontrollers + +import ( + "fmt" + "github.com/Akkadius/spire/internal/auditlog" + "github.com/Akkadius/spire/internal/database" + "github.com/Akkadius/spire/internal/http/routes" + "github.com/Akkadius/spire/internal/models" + "github.com/labstack/echo/v4" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "net/http" + "strconv" + "strings" +) + +type Spawn2DisabledController struct { + db *database.Resolver + auditLog *auditlog.UserEvent +} + +func NewSpawn2DisabledController( + db *database.Resolver, + auditLog *auditlog.UserEvent, +) *Spawn2DisabledController { + return &Spawn2DisabledController{ + db: db, + auditLog: auditLog, + } +} + +func (e *Spawn2DisabledController) Routes() []*routes.Route { + return []*routes.Route{ + routes.RegisterRoute(http.MethodGet, "spawn_2_disabled/:id", e.getSpawn2Disabled, nil), + routes.RegisterRoute(http.MethodGet, "spawn_2_disableds", e.listSpawn2Disableds, nil), + routes.RegisterRoute(http.MethodGet, "spawn_2_disableds/count", e.getSpawn2DisabledsCount, nil), + routes.RegisterRoute(http.MethodPut, "spawn_2_disabled", e.createSpawn2Disabled, nil), + routes.RegisterRoute(http.MethodDelete, "spawn_2_disabled/:id", e.deleteSpawn2Disabled, nil), + routes.RegisterRoute(http.MethodPatch, "spawn_2_disabled/:id", e.updateSpawn2Disabled, nil), + routes.RegisterRoute(http.MethodPost, "spawn_2_disableds/bulk", e.getSpawn2DisabledsBulk, nil), + } +} + +// listSpawn2Disableds godoc +// @Id listSpawn2Disableds +// @Summary Lists Spawn2Disableds +// @Accept json +// @Produce json +// @Tags Spawn2Disabled +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Spawn2Disabled +// @Failure 500 {string} string "Bad query request" +// @Router /spawn_2_disableds [get] +func (e *Spawn2DisabledController) listSpawn2Disableds(c echo.Context) error { + var results []models.Spawn2Disabled + err := e.db.QueryContext(models.Spawn2Disabled{}, c).Find(&results).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getSpawn2Disabled godoc +// @Id getSpawn2Disabled +// @Summary Gets Spawn2Disabled +// @Accept json +// @Produce json +// @Tags Spawn2Disabled +// @Param id path int true "Id" +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Spawn2Disabled +// @Failure 404 {string} string "Entity not found" +// @Failure 500 {string} string "Cannot find param" +// @Failure 500 {string} string "Bad query request" +// @Router /spawn_2_disabled/{id} [get] +func (e *Spawn2DisabledController) getSpawn2Disabled(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Spawn2Disabled + query := e.db.QueryContext(models.Spawn2Disabled{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + // couldn't find entity + if result.ID == 0 { + return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) + } + + return c.JSON(http.StatusOK, result) +} + +// updateSpawn2Disabled godoc +// @Id updateSpawn2Disabled +// @Summary Updates Spawn2Disabled +// @Accept json +// @Produce json +// @Tags Spawn2Disabled +// @Param id path int true "Id" +// @Param spawn_2_disabled body models.Spawn2Disabled true "Spawn2Disabled" +// @Success 200 {array} models.Spawn2Disabled +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error updating entity" +// @Router /spawn_2_disabled/{id} [patch] +func (e *Spawn2DisabledController) updateSpawn2Disabled(c echo.Context) error { + request := new(models.Spawn2Disabled) + if err := c.Bind(request); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Spawn2Disabled + query := e.db.QueryContext(models.Spawn2Disabled{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Cannot find entity [%s]", err.Error())}) + } + + // save top-level using only changes + diff := database.ResultDifference(result, request) + err = query.Session(&gorm.Session{FullSaveAssociations: false}).Updates(diff).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error updating entity [%v]", err.Error())}) + } + + // log update event + if e.db.GetSpireDb() != nil && len(diff) > 0 { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // build fields updated + var fieldsUpdated []string + for k, v := range diff { + fieldsUpdated = append(fieldsUpdated, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Updated [Spawn2Disabled] [%v] fields [%v]", strings.Join(ids, ", "), strings.Join(fieldsUpdated, ", ")) + e.auditLog.LogUserEvent(c, "UPDATE", event) + } + + return c.JSON(http.StatusOK, request) +} + +// createSpawn2Disabled godoc +// @Id createSpawn2Disabled +// @Summary Creates Spawn2Disabled +// @Accept json +// @Produce json +// @Param spawn_2_disabled body models.Spawn2Disabled true "Spawn2Disabled" +// @Tags Spawn2Disabled +// @Success 200 {array} models.Spawn2Disabled +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error inserting entity" +// @Router /spawn_2_disabled [put] +func (e *Spawn2DisabledController) createSpawn2Disabled(c echo.Context) error { + spawn2Disabled := new(models.Spawn2Disabled) + if err := c.Bind(spawn2Disabled); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to entity [%v]", err.Error())}, + ) + } + + db := e.db.Get(models.Spawn2Disabled{}, c).Model(&models.Spawn2Disabled{}) + + // save associations + if c.QueryParam("save_associations") != "true" { + db = db.Omit(clause.Associations) + } + + err := db.Create(&spawn2Disabled).Error + if err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error inserting entity [%v]", err.Error())}, + ) + } + + // log create event + if e.db.GetSpireDb() != nil { + // diff between an empty model and the created + diff := database.ResultDifference(models.Spawn2Disabled{}, spawn2Disabled) + // build fields created + var fields []string + for k, v := range diff { + fields = append(fields, fmt.Sprintf("%v = %v", k, v)) + } + // record event + event := fmt.Sprintf("Created [Spawn2Disabled] [%v] data [%v]", spawn2Disabled.ID, strings.Join(fields, ", ")) + e.auditLog.LogUserEvent(c, "CREATE", event) + } + + return c.JSON(http.StatusOK, spawn2Disabled) +} + +// deleteSpawn2Disabled godoc +// @Id deleteSpawn2Disabled +// @Summary Deletes Spawn2Disabled +// @Accept json +// @Produce json +// @Tags Spawn2Disabled +// @Param id path int true "id" +// @Success 200 {string} string "Entity deleted successfully" +// @Failure 404 {string} string "Cannot find entity" +// @Failure 500 {string} string "Error binding to entity" +// @Failure 500 {string} string "Error deleting entity" +// @Router /spawn_2_disabled/{id} [delete] +func (e *Spawn2DisabledController) deleteSpawn2Disabled(c echo.Context) error { + var params []interface{} + var keys []string + + // primary key param + id, err := strconv.Atoi(c.Param("id")) + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + params = append(params, id) + keys = append(keys, "id = ?") + + // query builder + var result models.Spawn2Disabled + query := e.db.QueryContext(models.Spawn2Disabled{}, c) + for i, _ := range keys { + query = query.Where(keys[i], params[i]) + } + + // grab first entry + err = query.First(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + err = query.Limit(10000).Delete(&result).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Error deleting entity"}) + } + + // log delete event + if e.db.GetSpireDb() != nil { + // build ids + var ids []string + for i, _ := range keys { + param := fmt.Sprintf("%v", params[i]) + ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) + } + // record event + event := fmt.Sprintf("Deleted [Spawn2Disabled] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) + e.auditLog.LogUserEvent(c, "DELETE", event) + } + + return c.JSON(http.StatusOK, echo.Map{"success": "Entity deleted successfully"}) +} + +// getSpawn2DisabledsBulk godoc +// @Id getSpawn2DisabledsBulk +// @Summary Gets Spawn2Disableds in bulk +// @Accept json +// @Produce json +// @Param Body body BulkFetchByIdsGetRequest true "body" +// @Tags Spawn2Disabled +// @Success 200 {array} models.Spawn2Disabled +// @Failure 500 {string} string "Bad query request" +// @Router /spawn_2_disableds/bulk [post] +func (e *Spawn2DisabledController) getSpawn2DisabledsBulk(c echo.Context) error { + var results []models.Spawn2Disabled + + r := new(BulkFetchByIdsGetRequest) + if err := c.Bind(r); err != nil { + return c.JSON( + http.StatusInternalServerError, + echo.Map{"error": fmt.Sprintf("Error binding to bulk request: [%v]", err.Error())}, + ) + } + + if len(r.IDs) == 0 { + return c.JSON( + http.StatusOK, + echo.Map{"error": fmt.Sprintf("Missing request field data 'ids'")}, + ) + } + + err := e.db.QueryContext(models.Spawn2Disabled{}, c).Find(&results, r.IDs).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, results) +} + +// getSpawn2DisabledsCount godoc +// @Id getSpawn2DisabledsCount +// @Summary Counts Spawn2Disableds +// @Accept json +// @Produce json +// @Tags Spawn2Disabled +// @Param includes query string false "Relationships [all] for all [number] for depth of relationships to load or [.] separated relationship names" +// @Param where query string false "Filter on specific fields. Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param whereOr query string false "Filter on specific fields (Chained ors). Multiple conditions [.] separated Example: col_like_value.col2__val2" +// @Param groupBy query string false "Group by field. Multiple conditions [.] separated Example: field1.field2" +// @Param limit query string false "Rows to limit in response (Default: 10,000)" +// @Param page query int 0 "Pagination page" +// @Param orderBy query string false "Order by [field]" +// @Param orderDirection query string false "Order by field direction" +// @Param select query string false "Column names [.] separated to fetch specific fields in response" +// @Success 200 {array} models.Spawn2Disabled +// @Failure 500 {string} string "Bad query request" +// @Router /spawn_2_disableds/count [get] +func (e *Spawn2DisabledController) getSpawn2DisabledsCount(c echo.Context) error { + var count int64 + err := e.db.QueryContext(models.Spawn2Disabled{}, c).Count(&count).Error + if err != nil { + return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) + } + + return c.JSON(http.StatusOK, echo.Map{"count": count}) +} \ No newline at end of file diff --git a/internal/http/crudcontrollers/starting_item_controller.go b/internal/http/crudcontrollers/starting_item_controller.go index 8e2a1ba36..956319a6d 100644 --- a/internal/http/crudcontrollers/starting_item_controller.go +++ b/internal/http/crudcontrollers/starting_item_controller.go @@ -95,17 +95,6 @@ func (e *StartingItemController) getStartingItem(c echo.Context) error { params = append(params, id) keys = append(keys, "id = ?") - // key param [race] position [2] type [int] - if len(c.QueryParam("race")) > 0 { - raceParam, err := strconv.Atoi(c.QueryParam("race")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [race] err [%s]", err.Error())}) - } - - params = append(params, raceParam) - keys = append(keys, "race = ?") - } - // query builder var result models.StartingItem query := e.db.QueryContext(models.StartingItem{}, c) @@ -160,17 +149,6 @@ func (e *StartingItemController) updateStartingItem(c echo.Context) error { params = append(params, id) keys = append(keys, "id = ?") - // key param [race] position [2] type [int] - if len(c.QueryParam("race")) > 0 { - raceParam, err := strconv.Atoi(c.QueryParam("race")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [race] err [%s]", err.Error())}) - } - - params = append(params, raceParam) - keys = append(keys, "race = ?") - } - // query builder var result models.StartingItem query := e.db.QueryContext(models.StartingItem{}, c) @@ -288,17 +266,6 @@ func (e *StartingItemController) deleteStartingItem(c echo.Context) error { params = append(params, id) keys = append(keys, "id = ?") - // key param [race] position [2] type [int] - if len(c.QueryParam("race")) > 0 { - raceParam, err := strconv.Atoi(c.QueryParam("race")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [race] err [%s]", err.Error())}) - } - - params = append(params, raceParam) - keys = append(keys, "race = ?") - } - // query builder var result models.StartingItem query := e.db.QueryContext(models.StartingItem{}, c) diff --git a/internal/http/crudcontrollers/trader_controller.go b/internal/http/crudcontrollers/trader_controller.go index 7284150c9..bc981be67 100644 --- a/internal/http/crudcontrollers/trader_controller.go +++ b/internal/http/crudcontrollers/trader_controller.go @@ -31,12 +31,12 @@ func NewTraderController( func (e *TraderController) Routes() []*routes.Route { return []*routes.Route{ - routes.RegisterRoute(http.MethodGet, "trader/:charId", e.getTrader, nil), + routes.RegisterRoute(http.MethodGet, "trader/:id", e.getTrader, nil), routes.RegisterRoute(http.MethodGet, "traders", e.listTraders, nil), routes.RegisterRoute(http.MethodGet, "traders/count", e.getTradersCount, nil), routes.RegisterRoute(http.MethodPut, "trader", e.createTrader, nil), - routes.RegisterRoute(http.MethodDelete, "trader/:charId", e.deleteTrader, nil), - routes.RegisterRoute(http.MethodPatch, "trader/:charId", e.updateTrader, nil), + routes.RegisterRoute(http.MethodDelete, "trader/:id", e.deleteTrader, nil), + routes.RegisterRoute(http.MethodPatch, "trader/:id", e.updateTrader, nil), routes.RegisterRoute(http.MethodPost, "traders/bulk", e.getTradersBulk, nil), } } @@ -88,23 +88,12 @@ func (e *TraderController) getTrader(c echo.Context) error { var keys []string // primary key param - charId, err := strconv.Atoi(c.Param("charId")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [CharId]"}) - } - params = append(params, charId) - keys = append(keys, "char_id = ?") - - // key param [slot_id] position [6] type [tinyint] - if len(c.QueryParam("slot_id")) > 0 { - slotIdParam, err := strconv.Atoi(c.QueryParam("slot_id")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [slot_id] err [%s]", err.Error())}) - } - - params = append(params, slotIdParam) - keys = append(keys, "slot_id = ?") + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.Trader @@ -120,7 +109,7 @@ func (e *TraderController) getTrader(c echo.Context) error { } // couldn't find entity - if result.CharId == 0 { + if result.ID == 0 { return c.JSON(http.StatusNotFound, echo.Map{"error": "Cannot find entity"}) } @@ -153,23 +142,12 @@ func (e *TraderController) updateTrader(c echo.Context) error { var keys []string // primary key param - charId, err := strconv.Atoi(c.Param("charId")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [CharId]"}) - } - params = append(params, charId) - keys = append(keys, "char_id = ?") - - // key param [slot_id] position [6] type [tinyint] - if len(c.QueryParam("slot_id")) > 0 { - slotIdParam, err := strconv.Atoi(c.QueryParam("slot_id")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [slot_id] err [%s]", err.Error())}) - } - - params = append(params, slotIdParam) - keys = append(keys, "slot_id = ?") + return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Cannot find param [Id]"}) } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.Trader @@ -257,7 +235,7 @@ func (e *TraderController) createTrader(c echo.Context) error { fields = append(fields, fmt.Sprintf("%v = %v", k, v)) } // record event - event := fmt.Sprintf("Created [Trader] [%v] data [%v]", trader.CharId, strings.Join(fields, ", ")) + event := fmt.Sprintf("Created [Trader] [%v] data [%v]", trader.ID, strings.Join(fields, ", ")) e.auditLog.LogUserEvent(c, "CREATE", event) } @@ -270,7 +248,7 @@ func (e *TraderController) createTrader(c echo.Context) error { // @Accept json // @Produce json // @Tags Trader -// @Param id path int true "charId" +// @Param id path int true "id" // @Success 200 {string} string "Entity deleted successfully" // @Failure 404 {string} string "Cannot find entity" // @Failure 500 {string} string "Error binding to entity" @@ -281,23 +259,12 @@ func (e *TraderController) deleteTrader(c echo.Context) error { var keys []string // primary key param - charId, err := strconv.Atoi(c.Param("charId")) + id, err := strconv.Atoi(c.Param("id")) if err != nil { return c.JSON(http.StatusInternalServerError, echo.Map{"error": err.Error()}) } - params = append(params, charId) - keys = append(keys, "char_id = ?") - - // key param [slot_id] position [6] type [tinyint] - if len(c.QueryParam("slot_id")) > 0 { - slotIdParam, err := strconv.Atoi(c.QueryParam("slot_id")) - if err != nil { - return c.JSON(http.StatusInternalServerError, echo.Map{"error": fmt.Sprintf("Error parsing query param [slot_id] err [%s]", err.Error())}) - } - - params = append(params, slotIdParam) - keys = append(keys, "slot_id = ?") - } + params = append(params, id) + keys = append(keys, "id = ?") // query builder var result models.Trader @@ -326,7 +293,7 @@ func (e *TraderController) deleteTrader(c echo.Context) error { ids = append(ids, fmt.Sprintf("%v", strings.ReplaceAll(keys[i], "?", param))) } // record event - event := fmt.Sprintf("Deleted [Trader] [%v] keys [%v]", result.CharId, strings.Join(ids, ", ")) + event := fmt.Sprintf("Deleted [Trader] [%v] keys [%v]", result.ID, strings.Join(ids, ", ")) e.auditLog.LogUserEvent(c, "DELETE", event) } diff --git a/internal/models/bot_starting_items.go b/internal/models/bot_starting_items.go new file mode 100644 index 000000000..0c408afa8 --- /dev/null +++ b/internal/models/bot_starting_items.go @@ -0,0 +1,31 @@ +package models + +import ( + "github.com/volatiletech/null/v8" +) + +type BotStartingItem struct { + ID uint `json:"id" gorm:"Column:id"` + Races uint `json:"races" gorm:"Column:races"` + Classes uint `json:"classes" gorm:"Column:classes"` + ItemId uint `json:"item_id" gorm:"Column:item_id"` + ItemCharges uint8 `json:"item_charges" gorm:"Column:item_charges"` + MinStatus uint8 `json:"min_status" gorm:"Column:min_status"` + SlotId int32 `json:"slot_id" gorm:"Column:slot_id"` + MinExpansion int8 `json:"min_expansion" gorm:"Column:min_expansion"` + MaxExpansion int8 `json:"max_expansion" gorm:"Column:max_expansion"` + ContentFlags null.String `json:"content_flags" gorm:"Column:content_flags"` + ContentFlagsDisabled null.String `json:"content_flags_disabled" gorm:"Column:content_flags_disabled"` +} + +func (BotStartingItem) TableName() string { + return "bot_starting_items" +} + +func (BotStartingItem) Relationships() []string { + return []string{} +} + +func (BotStartingItem) Connection() string { + return "" +} diff --git a/internal/models/character_parcels.go b/internal/models/character_parcels.go new file mode 100644 index 000000000..0490431cf --- /dev/null +++ b/internal/models/character_parcels.go @@ -0,0 +1,34 @@ +package models + +import ( + "github.com/volatiletech/null/v8" +) + +type CharacterParcel struct { + ID uint `json:"id" gorm:"Column:id"` + CharId uint `json:"char_id" gorm:"Column:char_id"` + ItemId uint `json:"item_id" gorm:"Column:item_id"` + AugSlot1 uint `json:"aug_slot_1" gorm:"Column:aug_slot_1"` + AugSlot2 uint `json:"aug_slot_2" gorm:"Column:aug_slot_2"` + AugSlot3 uint `json:"aug_slot_3" gorm:"Column:aug_slot_3"` + AugSlot4 uint `json:"aug_slot_4" gorm:"Column:aug_slot_4"` + AugSlot5 uint `json:"aug_slot_5" gorm:"Column:aug_slot_5"` + AugSlot6 uint `json:"aug_slot_6" gorm:"Column:aug_slot_6"` + SlotId uint `json:"slot_id" gorm:"Column:slot_id"` + Quantity uint `json:"quantity" gorm:"Column:quantity"` + FromName null.String `json:"from_name" gorm:"Column:from_name"` + Note null.String `json:"note" gorm:"Column:note"` + SentDate null.Time `json:"sent_date" gorm:"Column:sent_date"` +} + +func (CharacterParcel) TableName() string { + return "character_parcels" +} + +func (CharacterParcel) Relationships() []string { + return []string{} +} + +func (CharacterParcel) Connection() string { + return "" +} diff --git a/internal/models/character_parcels_containers.go b/internal/models/character_parcels_containers.go new file mode 100644 index 000000000..aab386f8b --- /dev/null +++ b/internal/models/character_parcels_containers.go @@ -0,0 +1,27 @@ +package models + +type CharacterParcelsContainer struct { + ID uint `json:"id" gorm:"Column:id"` + ParcelsId uint `json:"parcels_id" gorm:"Column:parcels_id"` + SlotId uint `json:"slot_id" gorm:"Column:slot_id"` + ItemId uint `json:"item_id" gorm:"Column:item_id"` + AugSlot1 uint `json:"aug_slot_1" gorm:"Column:aug_slot_1"` + AugSlot2 uint `json:"aug_slot_2" gorm:"Column:aug_slot_2"` + AugSlot3 uint `json:"aug_slot_3" gorm:"Column:aug_slot_3"` + AugSlot4 uint `json:"aug_slot_4" gorm:"Column:aug_slot_4"` + AugSlot5 uint `json:"aug_slot_5" gorm:"Column:aug_slot_5"` + AugSlot6 uint `json:"aug_slot_6" gorm:"Column:aug_slot_6"` + Quantity uint `json:"quantity" gorm:"Column:quantity"` +} + +func (CharacterParcelsContainer) TableName() string { + return "character_parcels_containers" +} + +func (CharacterParcelsContainer) Relationships() []string { + return []string{} +} + +func (CharacterParcelsContainer) Connection() string { + return "" +} diff --git a/internal/models/character_stats_record.go b/internal/models/character_stats_record.go new file mode 100644 index 000000000..1eb35f130 --- /dev/null +++ b/internal/models/character_stats_record.go @@ -0,0 +1,94 @@ +package models + +import ( + "github.com/volatiletech/null/v8" +) + +type CharacterStatsRecord struct { + CharacterId int `json:"character_id" gorm:"Column:character_id"` + Name null.String `json:"name" gorm:"Column:name"` + Status null.Int `json:"status" gorm:"Column:status"` + Level null.Int `json:"level" gorm:"Column:level"` + Class null.Int `json:"class" gorm:"Column:class"` + Race null.Int `json:"race" gorm:"Column:race"` + AaPoints null.Int `json:"aa_points" gorm:"Column:aa_points"` + Hp null.Int64 `json:"hp" gorm:"Column:hp"` + Mana null.Int64 `json:"mana" gorm:"Column:mana"` + Endurance null.Int64 `json:"endurance" gorm:"Column:endurance"` + Ac null.Int `json:"ac" gorm:"Column:ac"` + Strength null.Int `json:"strength" gorm:"Column:strength"` + Stamina null.Int `json:"stamina" gorm:"Column:stamina"` + Dexterity null.Int `json:"dexterity" gorm:"Column:dexterity"` + Agility null.Int `json:"agility" gorm:"Column:agility"` + Intelligence null.Int `json:"intelligence" gorm:"Column:intelligence"` + Wisdom null.Int `json:"wisdom" gorm:"Column:wisdom"` + Charisma null.Int `json:"charisma" gorm:"Column:charisma"` + MagicResist null.Int `json:"magic_resist" gorm:"Column:magic_resist"` + FireResist null.Int `json:"fire_resist" gorm:"Column:fire_resist"` + ColdResist null.Int `json:"cold_resist" gorm:"Column:cold_resist"` + PoisonResist null.Int `json:"poison_resist" gorm:"Column:poison_resist"` + DiseaseResist null.Int `json:"disease_resist" gorm:"Column:disease_resist"` + CorruptionResist null.Int `json:"corruption_resist" gorm:"Column:corruption_resist"` + HeroicStrength null.Int `json:"heroic_strength" gorm:"Column:heroic_strength"` + HeroicStamina null.Int `json:"heroic_stamina" gorm:"Column:heroic_stamina"` + HeroicDexterity null.Int `json:"heroic_dexterity" gorm:"Column:heroic_dexterity"` + HeroicAgility null.Int `json:"heroic_agility" gorm:"Column:heroic_agility"` + HeroicIntelligence null.Int `json:"heroic_intelligence" gorm:"Column:heroic_intelligence"` + HeroicWisdom null.Int `json:"heroic_wisdom" gorm:"Column:heroic_wisdom"` + HeroicCharisma null.Int `json:"heroic_charisma" gorm:"Column:heroic_charisma"` + HeroicMagicResist null.Int `json:"heroic_magic_resist" gorm:"Column:heroic_magic_resist"` + HeroicFireResist null.Int `json:"heroic_fire_resist" gorm:"Column:heroic_fire_resist"` + HeroicColdResist null.Int `json:"heroic_cold_resist" gorm:"Column:heroic_cold_resist"` + HeroicPoisonResist null.Int `json:"heroic_poison_resist" gorm:"Column:heroic_poison_resist"` + HeroicDiseaseResist null.Int `json:"heroic_disease_resist" gorm:"Column:heroic_disease_resist"` + HeroicCorruptionResist null.Int `json:"heroic_corruption_resist" gorm:"Column:heroic_corruption_resist"` + Haste null.Int `json:"haste" gorm:"Column:haste"` + Accuracy null.Int `json:"accuracy" gorm:"Column:accuracy"` + Attack null.Int `json:"attack" gorm:"Column:attack"` + Avoidance null.Int `json:"avoidance" gorm:"Column:avoidance"` + Clairvoyance null.Int `json:"clairvoyance" gorm:"Column:clairvoyance"` + CombatEffects null.Int `json:"combat_effects" gorm:"Column:combat_effects"` + DamageShieldMitigation null.Int `json:"damage_shield_mitigation" gorm:"Column:damage_shield_mitigation"` + DamageShield null.Int `json:"damage_shield" gorm:"Column:damage_shield"` + DotShielding null.Int `json:"dot_shielding" gorm:"Column:dot_shielding"` + HpRegen null.Int `json:"hp_regen" gorm:"Column:hp_regen"` + ManaRegen null.Int `json:"mana_regen" gorm:"Column:mana_regen"` + EnduranceRegen null.Int `json:"endurance_regen" gorm:"Column:endurance_regen"` + Shielding null.Int `json:"shielding" gorm:"Column:shielding"` + SpellDamage null.Int `json:"spell_damage" gorm:"Column:spell_damage"` + SpellShielding null.Int `json:"spell_shielding" gorm:"Column:spell_shielding"` + Strikethrough null.Int `json:"strikethrough" gorm:"Column:strikethrough"` + StunResist null.Int `json:"stun_resist" gorm:"Column:stun_resist"` + Backstab null.Int `json:"backstab" gorm:"Column:backstab"` + Wind null.Int `json:"wind" gorm:"Column:wind"` + Brass null.Int `json:"brass" gorm:"Column:brass"` + String null.Int `json:"string" gorm:"Column:string"` + Percussion null.Int `json:"percussion" gorm:"Column:percussion"` + Singing null.Int `json:"singing" gorm:"Column:singing"` + Baking null.Int `json:"baking" gorm:"Column:baking"` + Alchemy null.Int `json:"alchemy" gorm:"Column:alchemy"` + Tailoring null.Int `json:"tailoring" gorm:"Column:tailoring"` + Blacksmithing null.Int `json:"blacksmithing" gorm:"Column:blacksmithing"` + Fletching null.Int `json:"fletching" gorm:"Column:fletching"` + Brewing null.Int `json:"brewing" gorm:"Column:brewing"` + Jewelry null.Int `json:"jewelry" gorm:"Column:jewelry"` + Pottery null.Int `json:"pottery" gorm:"Column:pottery"` + Research null.Int `json:"research" gorm:"Column:research"` + Alcohol null.Int `json:"alcohol" gorm:"Column:alcohol"` + Fishing null.Int `json:"fishing" gorm:"Column:fishing"` + Tinkering null.Int `json:"tinkering" gorm:"Column:tinkering"` + CreatedAt null.Time `json:"created_at" gorm:"Column:created_at"` + UpdatedAt null.Time `json:"updated_at" gorm:"Column:updated_at"` +} + +func (CharacterStatsRecord) TableName() string { + return "character_stats_record" +} + +func (CharacterStatsRecord) Relationships() []string { + return []string{} +} + +func (CharacterStatsRecord) Connection() string { + return "" +} diff --git a/internal/models/group_id.go b/internal/models/group_id.go index 1472b1339..fdca4c1b8 100644 --- a/internal/models/group_id.go +++ b/internal/models/group_id.go @@ -1,10 +1,11 @@ package models type GroupId struct { - Groupid int `json:"groupid" gorm:"Column:groupid"` - Charid int `json:"charid" gorm:"Column:charid"` - Name string `json:"name" gorm:"Column:name"` - Ismerc int8 `json:"ismerc" gorm:"Column:ismerc"` + GroupId uint `json:"group_id" gorm:"Column:group_id"` + Name string `json:"name" gorm:"Column:name"` + CharacterId uint `json:"character_id" gorm:"Column:character_id"` + BotId uint `json:"bot_id" gorm:"Column:bot_id"` + MercId uint `json:"merc_id" gorm:"Column:merc_id"` } func (GroupId) TableName() string { diff --git a/internal/models/guild_bank.go b/internal/models/guild_bank.go index 75f90cf56..4a0770d90 100644 --- a/internal/models/guild_bank.go +++ b/internal/models/guild_bank.go @@ -10,7 +10,7 @@ type GuildBank struct { Area uint8 `json:"area" gorm:"Column:area"` Slot uint `json:"slot" gorm:"Column:slot"` Itemid uint `json:"itemid" gorm:"Column:itemid"` - Qty uint `json:"qty" gorm:"Column:qty"` + Qty int `json:"qty" gorm:"Column:qty"` Donator null.String `json:"donator" gorm:"Column:donator"` Permissions uint8 `json:"permissions" gorm:"Column:permissions"` Whofor null.String `json:"whofor" gorm:"Column:whofor"` diff --git a/internal/models/guild_permissions.go b/internal/models/guild_permissions.go new file mode 100644 index 000000000..bd349b1bb --- /dev/null +++ b/internal/models/guild_permissions.go @@ -0,0 +1,20 @@ +package models + +type GuildPermission struct { + ID int `json:"id" gorm:"Column:id"` + PermId int `json:"perm_id" gorm:"Column:perm_id"` + GuildId int `json:"guild_id" gorm:"Column:guild_id"` + Permission int `json:"permission" gorm:"Column:permission"` +} + +func (GuildPermission) TableName() string { + return "guild_permissions" +} + +func (GuildPermission) Relationships() []string { + return []string{} +} + +func (GuildPermission) Connection() string { + return "" +} diff --git a/internal/models/guild_tributes.go b/internal/models/guild_tributes.go new file mode 100644 index 000000000..d4567698b --- /dev/null +++ b/internal/models/guild_tributes.go @@ -0,0 +1,23 @@ +package models + +type GuildTribute struct { + GuildId uint `json:"guild_id" gorm:"Column:guild_id"` + TributeId1 uint `json:"tribute_id_1" gorm:"Column:tribute_id_1"` + TributeId1Tier uint `json:"tribute_id_1_tier" gorm:"Column:tribute_id_1_tier"` + TributeId2 uint `json:"tribute_id_2" gorm:"Column:tribute_id_2"` + TributeId2Tier uint `json:"tribute_id_2_tier" gorm:"Column:tribute_id_2_tier"` + TimeRemaining uint `json:"time_remaining" gorm:"Column:time_remaining"` + Enabled uint `json:"enabled" gorm:"Column:enabled"` +} + +func (GuildTribute) TableName() string { + return "guild_tributes" +} + +func (GuildTribute) Relationships() []string { + return []string{} +} + +func (GuildTribute) Connection() string { + return "" +} diff --git a/internal/models/instance_list.go b/internal/models/instance_list.go index 53f3a760a..1dacd9c74 100644 --- a/internal/models/instance_list.go +++ b/internal/models/instance_list.go @@ -1,5 +1,9 @@ package models +import ( + "github.com/volatiletech/null/v8" +) + type InstanceList struct { ID int `json:"id" gorm:"Column:id"` Zone uint `json:"zone" gorm:"Column:zone"` @@ -8,7 +12,7 @@ type InstanceList struct { StartTime uint `json:"start_time" gorm:"Column:start_time"` Duration uint `json:"duration" gorm:"Column:duration"` NeverExpires uint8 `json:"never_expires" gorm:"Column:never_expires"` - Notes string `json:"notes" gorm:"Column:notes"` + Notes null.String `json:"notes" gorm:"Column:notes"` InstanceListPlayers []InstanceListPlayer `json:"instance_list_players,omitempty" gorm:"foreignKey:id;references:id"` Zones []Zone `json:"zones,omitempty" gorm:"foreignKey:zoneidunumber;references:zone"` } diff --git a/internal/models/npc_spells_entries.go b/internal/models/npc_spells_entries.go index efe8d6369..06cbf8a0d 100644 --- a/internal/models/npc_spells_entries.go +++ b/internal/models/npc_spells_entries.go @@ -5,19 +5,23 @@ import ( ) type NpcSpellsEntry struct { - ID uint `json:"id" gorm:"Column:id"` - NpcSpellsId int `json:"npc_spells_id" gorm:"Column:npc_spells_id"` - Spellid uint16 `json:"spellid" gorm:"Column:spellid"` - Type uint `json:"type" gorm:"Column:type"` - Minlevel uint8 `json:"minlevel" gorm:"Column:minlevel"` - Maxlevel uint8 `json:"maxlevel" gorm:"Column:maxlevel"` - Manacost int16 `json:"manacost" gorm:"Column:manacost"` - RecastDelay int `json:"recast_delay" gorm:"Column:recast_delay"` - Priority int16 `json:"priority" gorm:"Column:priority"` - ResistAdjust null.Int `json:"resist_adjust" gorm:"Column:resist_adjust"` - MinHp null.Int16 `json:"min_hp" gorm:"Column:min_hp"` - MaxHp null.Int16 `json:"max_hp" gorm:"Column:max_hp"` - SpellsNew *SpellsNew `json:"spells_new,omitempty" gorm:"foreignKey:spellid;references:id"` + ID uint `json:"id" gorm:"Column:id"` + NpcSpellsId int `json:"npc_spells_id" gorm:"Column:npc_spells_id"` + Spellid uint16 `json:"spellid" gorm:"Column:spellid"` + Type uint `json:"type" gorm:"Column:type"` + Minlevel uint8 `json:"minlevel" gorm:"Column:minlevel"` + Maxlevel uint8 `json:"maxlevel" gorm:"Column:maxlevel"` + Manacost int16 `json:"manacost" gorm:"Column:manacost"` + RecastDelay int `json:"recast_delay" gorm:"Column:recast_delay"` + Priority int16 `json:"priority" gorm:"Column:priority"` + ResistAdjust null.Int `json:"resist_adjust" gorm:"Column:resist_adjust"` + MinHp null.Int16 `json:"min_hp" gorm:"Column:min_hp"` + MaxHp null.Int16 `json:"max_hp" gorm:"Column:max_hp"` + MinExpansion int8 `json:"min_expansion" gorm:"Column:min_expansion"` + MaxExpansion int8 `json:"max_expansion" gorm:"Column:max_expansion"` + ContentFlags null.String `json:"content_flags" gorm:"Column:content_flags"` + ContentFlagsDisabled null.String `json:"content_flags_disabled" gorm:"Column:content_flags_disabled"` + SpellsNew *SpellsNew `json:"spells_new,omitempty" gorm:"foreignKey:spellid;references:id"` } func (NpcSpellsEntry) TableName() string { diff --git a/internal/models/npc_types.go b/internal/models/npc_types.go index 138455297..637c0d99a 100644 --- a/internal/models/npc_types.go +++ b/internal/models/npc_types.go @@ -24,6 +24,7 @@ type NpcType struct { ManaRegenRate int64 `json:"mana_regen_rate" gorm:"Column:mana_regen_rate"` LoottableId uint `json:"loottable_id" gorm:"Column:loottable_id"` MerchantId uint `json:"merchant_id" gorm:"Column:merchant_id"` + Greed uint8 `json:"greed" gorm:"Column:greed"` AltCurrencyId uint `json:"alt_currency_id" gorm:"Column:alt_currency_id"` NpcSpellsId uint `json:"npc_spells_id" gorm:"Column:npc_spells_id"` NpcSpellsEffectsId uint `json:"npc_spells_effects_id" gorm:"Column:npc_spells_effects_id"` diff --git a/internal/models/rule_values.go b/internal/models/rule_values.go index 0da730330..01697ce2e 100644 --- a/internal/models/rule_values.go +++ b/internal/models/rule_values.go @@ -7,7 +7,7 @@ import ( type RuleValue struct { RulesetId uint8 `json:"ruleset_id" gorm:"Column:ruleset_id"` RuleName string `json:"rule_name" gorm:"Column:rule_name"` - RuleValue null.String `json:"rule_value" gorm:"Column:rule_value"` + RuleValue string `json:"rule_value" gorm:"Column:rule_value"` Notes null.String `json:"notes" gorm:"Column:notes"` } diff --git a/internal/models/skill_caps.go b/internal/models/skill_caps.go index 8693b435e..bdfb245a2 100644 --- a/internal/models/skill_caps.go +++ b/internal/models/skill_caps.go @@ -1,11 +1,12 @@ package models type SkillCap struct { - SkillID uint8 `json:"skill_id" gorm:"Column:skillID"` - Class uint8 `json:"class" gorm:"Column:class"` - Level uint8 `json:"level" gorm:"Column:level"` - Cap uint32 `json:"cap" gorm:"Column:cap"` - Class2 uint8 `json:"class_" gorm:"Column:class_"` + ID uint `json:"id" gorm:"Column:id"` + SkillId uint8 `json:"skill_id" gorm:"Column:skill_id"` + ClassId uint8 `json:"class_id" gorm:"Column:class_id"` + Level uint8 `json:"level" gorm:"Column:level"` + Cap uint32 `json:"cap" gorm:"Column:cap"` + Class2 uint8 `json:"class_" gorm:"Column:class_"` } func (SkillCap) TableName() string { diff --git a/internal/models/spawn_2_disabled.go b/internal/models/spawn_2_disabled.go new file mode 100644 index 000000000..d4b0eb031 --- /dev/null +++ b/internal/models/spawn_2_disabled.go @@ -0,0 +1,24 @@ +package models + +import ( + "github.com/volatiletech/null/v8" +) + +type Spawn2Disabled struct { + ID int64 `json:"id" gorm:"Column:id"` + Spawn2Id null.Int `json:"spawn_2_id" gorm:"Column:spawn2_id"` + InstanceId null.Int `json:"instance_id" gorm:"Column:instance_id"` + Disabled null.Int16 `json:"disabled" gorm:"Column:disabled"` +} + +func (Spawn2Disabled) TableName() string { + return "spawn2_disabled" +} + +func (Spawn2Disabled) Relationships() []string { + return []string{} +} + +func (Spawn2Disabled) Connection() string { + return "" +} diff --git a/internal/models/trader.go b/internal/models/trader.go index 154695ddf..ba3b8aa66 100644 --- a/internal/models/trader.go +++ b/internal/models/trader.go @@ -1,12 +1,22 @@ package models type Trader struct { - CharId uint `json:"char_id" gorm:"Column:char_id"` - ItemId uint `json:"item_id" gorm:"Column:item_id"` - Serialnumber uint `json:"serialnumber" gorm:"Column:serialnumber"` - Charges int `json:"charges" gorm:"Column:charges"` - ItemCost uint `json:"item_cost" gorm:"Column:item_cost"` - SlotId uint8 `json:"slot_id" gorm:"Column:slot_id"` + ID uint64 `json:"id" gorm:"Column:id"` + CharId uint `json:"char_id" gorm:"Column:char_id"` + ItemId uint `json:"item_id" gorm:"Column:item_id"` + AugSlot1 uint `json:"aug_slot_1" gorm:"Column:aug_slot_1"` + AugSlot2 uint `json:"aug_slot_2" gorm:"Column:aug_slot_2"` + AugSlot3 uint `json:"aug_slot_3" gorm:"Column:aug_slot_3"` + AugSlot4 uint `json:"aug_slot_4" gorm:"Column:aug_slot_4"` + AugSlot5 uint `json:"aug_slot_5" gorm:"Column:aug_slot_5"` + AugSlot6 uint `json:"aug_slot_6" gorm:"Column:aug_slot_6"` + ItemSn uint `json:"item_sn" gorm:"Column:item_sn"` + ItemCharges int `json:"item_charges" gorm:"Column:item_charges"` + ItemCost uint `json:"item_cost" gorm:"Column:item_cost"` + SlotId uint8 `json:"slot_id" gorm:"Column:slot_id"` + CharEntityId uint `json:"char_entity_id" gorm:"Column:char_entity_id"` + CharZoneId uint `json:"char_zone_id" gorm:"Column:char_zone_id"` + ActiveTransaction uint8 `json:"active_transaction" gorm:"Column:active_transaction"` } func (Trader) TableName() string { diff --git a/package.json b/package.json index 5a181d615..cf24134c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spire", - "version": "4.2.1", + "version": "4.2.2", "repository": { "type": "git", "url": "https://github.com/Akkadius/spire.git"