mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
- Need to convert a list of functions and columns and should be ready to start intensive testing phase - All preliminary tests show things working great - All of player profile is saved and loaded from the database - DBAsync has been completely removed from all code - Removed zone/dbasync.cpp/.h - Removed common/dbasync.cpp/.h - Removed dbasync from cmake commmon and zone - Cleaned up a ton of functions - Added several tables to world CheckDatabaseConversions script: - `character_skills` - `character_languages` - `character_bind` - `character_alternate_abilities` - `character_currency` - `character_data` - `character_spells` - `character_memmed_spells` - `character_disciplines` - `character_material` - `character_tribute` - `character_bandolier` - `character_potionbelt` - Character select now loads from `character_data` - Character creation now creates to `character_data` - Updated function Database::UpdateName to use `character_data` - Updated function Database::CheckUsedName to use `character_data` - Updated function Database::MoveCharacterToZone to use `character_data` - Updated function Database::SetLoginFlags to use `character_data` - Updated function Database::SetFirstLogon to use `character_data` - Updated function Database::SetLFG to use `character_data` - Removed CopyCharacter functions and commands, to be recreated later since it never worked to begin with - Removed SharedDatabase::SetPlayerProfile - Trimmed down redundant case switch statements for World sendpackets to QueryServ - Added Character Methods to Database class: Loads: bool LoadCharacterBandolier(uint32 character_id, PlayerProfile_Struct* pp); bool LoadCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp); bool LoadCharacterPotions(uint32 character_id, PlayerProfile_Struct* pp); Saves: bool SaveCharacterBindPoint(uint32 character_id, uint32 zone_id, uint32 instance_id, float x, float y, float z, float heading, uint8 is_home); bool SaveCharacterCurrency(uint32 character_id, PlayerProfile_Struct* pp); bool SaveCharacterData(uint32 character_id, uint32 account_id, PlayerProfile_Struct* pp); bool SaveCharacterAA(uint32 character_id, uint32 aa_id, uint32 current_level); bool SaveCharacterSpellSwap(uint32 character_id, uint32 spell_id, uint32 from_slot, uint32 to_slot); bool SaveCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool SaveCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool SaveCharacterMaterialColor(uint32 character_id, uint32 slot_id, uint32 color); bool SaveCharacterSkill(uint32 character_id, uint32 skill_id, uint32 value); bool SaveCharacterLanguage(uint32 character_id, uint32 lang_id, uint32 value); bool SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id); bool SaveCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp); bool SaveCharacterBandolier(uint32 character_id, uint8 bandolier_id, uint8 bandolier_slot, uint32 item_id, uint32 icon, const char* bandolier_name); bool SaveCharacterPotionBelt(uint32 character_id, uint8 potion_id, uint32 item_id, uint32 icon); Deletes: bool DeleteCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool DeleteCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool DeleteCharacterDisc(uint32 character_id, uint32 slot_id); bool DeleteCharacterBandolier(uint32 character_id, uint32 band_id);
64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#ifndef MYSQL_REQUEST_RESULT_H
|
|
#define MYSQL_REQUEST_RESULT_H
|
|
|
|
#ifdef _WINDOWS
|
|
#include <winsock.h>
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#include <mysql.h>
|
|
#include "types.h"
|
|
#include "mysql_request_row.h"
|
|
#include <string>
|
|
#include <string.h>
|
|
#include <limits.h>
|
|
|
|
class MySQLRequestResult {
|
|
private:
|
|
MYSQL_RES* m_Result;
|
|
MYSQL_FIELD* m_Fields;
|
|
char* m_ErrorBuffer;
|
|
unsigned long* m_ColumnLengths;
|
|
MySQLRequestRow m_CurrentRow;
|
|
MySQLRequestRow m_OneBeyondRow;
|
|
|
|
bool m_Success;
|
|
uint32 m_RowsAffected;
|
|
uint32 m_RowCount;
|
|
uint32 m_ColumnCount;
|
|
uint32 m_LastInsertedID;
|
|
uint32 m_ErrorNumber;
|
|
|
|
|
|
public:
|
|
|
|
MySQLRequestResult(MYSQL_RES* result, uint32 rowsAffected = 0, uint32 rowCount = 0, uint32 columnCount = 0, uint32 lastInsertedID = 0, uint32 errorNumber = 0, char *errorBuffer = nullptr);
|
|
MySQLRequestResult();
|
|
MySQLRequestResult(MySQLRequestResult&& moveItem);
|
|
~MySQLRequestResult();
|
|
|
|
MySQLRequestResult& operator=(MySQLRequestResult&& other);
|
|
|
|
bool Success() const { return m_Success;}
|
|
std::string ErrorMessage() const {return m_ErrorBuffer ? std::string(m_ErrorBuffer) : std::string("");}
|
|
uint32 ErrorNumber() const {return m_ErrorNumber;}
|
|
uint32 RowsAffected() const {return m_RowsAffected;}
|
|
uint32 RowCount() const {return m_RowCount;}
|
|
uint32 ColumnCount() const {return m_ColumnCount;}
|
|
uint32 LastInsertedID() const {return m_LastInsertedID;}
|
|
// default to 0 index since we mostly use it that way anyways.
|
|
uint32 LengthOfColumn(int columnIndex = 0);
|
|
const std::string FieldName(int columnIndex);
|
|
|
|
MySQLRequestRow& begin() { return m_CurrentRow; }
|
|
MySQLRequestRow& end() { return m_OneBeyondRow;}
|
|
|
|
private:
|
|
void FreeInternals();
|
|
void ZeroOut();
|
|
};
|
|
|
|
|
|
#endif
|
|
|