gdle/Source/DatabaseIO.h

185 lines
6.2 KiB
C
Raw Permalink Normal View History

2018-03-29 17:01:57 -04:00
#pragma once
struct AccountInformation_t
{
unsigned int id;
std::string username;
unsigned int dateCreated;
unsigned int access;
bool banned;
2018-03-29 17:01:57 -04:00
};
struct CharacterDesc_t
{
unsigned int account_id;
unsigned int weenie_id;
std::string name;
unsigned int date_created;
unsigned short instance_ts;
uint32_t ts_deleted;
2020-08-07 10:58:05 -07:00
double gag_timer;
};
struct CharacterGags_t
{
std::string name;
double gag_timer;
uint32_t gag_count;
2018-03-29 17:01:57 -04:00
};
struct HouseInfo_t
{
unsigned int house_id;
2019-07-07 20:56:15 +00:00
//std::string houseBlob;
uint8_t *houseBlob;
size_t houseBlobLen;
};
2018-09-21 06:16:42 -07:00
struct CharacterSquelch_t
{
unsigned int squelched_id = 0;
unsigned int account_id = 0;
bool isIp = false;
bool isSpeech = false;
bool isTell = false;
bool isCombat = false;
bool isMagic = false;
bool isEmote = false;
bool isAdvancement = false;
bool isAppraisal = false;
bool isSpellcasting = false;
bool isAllegiance = false;
bool isFellowship = false;
bool isCombatEnemy = false;
bool isRecall = false;
bool isCrafting = false;
public:
};
2018-03-29 17:01:57 -04:00
enum DBIOError
{
DBIO_ERROR_NONE = 0,
CREATEACCOUNT_ERROR_QUERY_FAILED,
CREATEACCOUNT_ERROR_BAD_USERNAME,
CREATEACCOUNT_ERROR_BAD_PASSWORD,
VERIFYACCOUNT_ERROR_QUERY_FAILED,
VERIFYACCOUNT_ERROR_DOESNT_EXIST,
VERIFYACCOUNT_ERROR_BAD_LOGIN
};
enum DBIOGlobalDataID
{
DBIO_GLOBAL_ALLEGIANCE_DATA = 1,
DBIO_GLOBAL_BAN_DATA = 2,
DBIO_GLOBAL_HOUSING_DATA = 3,
DBIO_GLOBAL_ID_RANGE_START = 4
2018-03-29 17:01:57 -04:00
};
class CDatabaseIO
{
public:
CDatabaseIO();
virtual ~CDatabaseIO();
const unsigned int BLOB_QUERY_BUFFER_LENGTH = 5000000;
2019-07-07 20:56:15 +00:00
uint8_t *blob_query_buffer = NULL;
2018-03-29 17:01:57 -04:00
const unsigned int MIN_USERNAME_LENGTH = 1;
const unsigned int MAX_USERNAME_LENGTH = 32;
const unsigned int MIN_PASSWORD_LENGTH = 1;
const unsigned int MAX_PASSWORD_LENGTH = 64;
2020-06-06 23:22:18 +00:00
bool IsUserNameValid(const std::string &username);
2018-03-29 17:01:57 -04:00
bool VerifyAccount(const char *username, const char *password, AccountInformation_t *pAccountInfo, int *pError);
2020-06-06 23:22:18 +00:00
bool VerifyAccount(void* dbc, const char *username, const char *password, AccountInformation_t *pAccountInfo, int *pError);
2018-03-29 17:01:57 -04:00
bool CreateAccount(const char *username, const char *password, int *pError, const char *ipaddress);
2020-06-06 23:22:18 +00:00
bool CreateAccount(void* dbc, const char *username, const char *password, int *pError, const char *ipaddress);
2018-03-29 17:01:57 -04:00
std::list<CharacterDesc_t> GetCharacterList(unsigned int accountid);
CharacterDesc_t GetCharacterInfo(unsigned int weenie_id);
2020-08-07 10:58:05 -07:00
2018-09-21 06:16:42 -07:00
std::list<CharacterSquelch_t> GetCharacterSquelch(unsigned int character_id);
bool SaveCharacterSquelch(unsigned int character_id, CharacterSquelch_t data);
bool RemoveCharacterSquelch(unsigned int character_id, CharacterSquelch_t data);
2020-08-07 10:58:05 -07:00
std::list<CharacterGags_t> GetServerGagData();
CharacterGags_t GetCharacterGagData(unsigned int character_id);
bool SaveServerGag(unsigned int character_id, double duration, bool account = false);
bool RemoveServerGag(unsigned int character_id, bool account = false);
2018-03-29 17:01:57 -04:00
bool CreateCharacter(unsigned int account_id, unsigned int weenie_id, const char *name);
bool DeleteCharacter(unsigned int weenie_id, bool force = false);
bool IsCharacterDeleting(unsigned int weenie_id);
bool RestoreCharacter(unsigned int weenie_id);
2018-03-29 17:01:57 -04:00
bool SetCharacterInstanceTS(unsigned int weenie_id, unsigned int instance_ts);
bool UpdateBan(unsigned int account_id, bool ban);
2018-03-29 17:01:57 -04:00
std::list<unsigned int> GetWeeniesAt(unsigned int block_id);
bool AddOrUpdateWeenieToBlock(unsigned int weenie_id, unsigned int block_id);
bool RemoveWeenieFromBlock(unsigned int weenie_id);
bool IDRangeTableExistsAndValid();
std::list<unsigned int> GetNextIDRange(unsigned int rangeStart, unsigned int count);
2018-03-29 17:01:57 -04:00
unsigned int GetHighestWeenieID(unsigned int min_range, unsigned int max_range);
2018-03-29 17:01:57 -04:00
bool IsCharacterNameOpen(const char *name);
bool IsPlayerCharacter(unsigned int weenie_id);
2019-07-07 20:56:15 +00:00
uint32_t GetPlayerCharacterId(const char *name);
std::string GetPlayerCharacterName(uint32_t weenie_id);
std::list<HouseInfo_t> GetHousingData();
2019-07-07 20:56:15 +00:00
uint32_t GetPlayerAccountId(unsigned int character_id);
2018-03-29 17:01:57 -04:00
bool CreateOrUpdateWeenie(unsigned int weenie_id, unsigned int top_level_object_id, unsigned int block_id, void *data, unsigned int data_length);
bool GetWeenie(unsigned int weenie_id, unsigned int *top_level_object_id, unsigned int *block_id, void **data, unsigned long *data_length);
bool DeleteWeenie(unsigned int weenie_id);
bool IsWeenieInDatabase(unsigned int weenie_id);
bool GetGlobalData(DBIOGlobalDataID id, void **data, unsigned long *data_length);
bool CreateOrUpdateGlobalData(DBIOGlobalDataID id, void *data, unsigned long data_length);
bool CreateOrUpdateHouseData(unsigned int house_id, void *data, unsigned int data_length);
bool GetHouseData(unsigned int house_id, void **data, unsigned long *data_length);
CLockable _pendingSavesLock;
2019-07-07 20:56:15 +00:00
std::unordered_map<uint32_t, uint32_t> _pendingSaves;
2018-03-29 17:01:57 -04:00
2019-07-07 20:56:15 +00:00
void IncrementPendingSave(uint32_t weenie_id);
void DecrementPendingSave(uint32_t weenie_id);
uint32_t GetNumPendingSaves(uint32_t weenie_id);
2019-02-10 01:02:56 +00:00
std::string LoadCharacterTitles(unsigned int character_id);
bool SaveCharacterTitles(unsigned int character_id, std::string titles);
bool DeleteCharacterTitles(unsigned int character_id);
bool DeleteCharacterInventory(unsigned int character_id);
2019-02-10 01:02:56 +00:00
std::string LoadCharacterCorpses(unsigned int character_id);
bool SaveCharacterCorpses(unsigned int, std::string corpselist);
std::string GetEmailOfAccount(unsigned int character_id);
bool SetEmailOfAccount(std::string email, unsigned int character_id);
bool IsEmailAlreadySet(unsigned int character_id);
std::list<unsigned int> GetAllCharacterIDs();
std::list<unsigned int> GetBannedCharacterIDs();
std::list<unsigned int> GetBannedAccountIDs();
bool IsAlreadyFriend(unsigned int character_id, unsigned int friend_id);
2019-05-28 14:45:19 +00:00
bool AddCharacterFriend(unsigned int character_id, unsigned int friend_id);
bool RemoveCharacterFriend(unsigned int character_id, unsigned int frenemy_id);
std::list<CharacterDesc_t> GetFriends(unsigned int character_id);
std::list<CharacterDesc_t> GetFriendsOf(unsigned int character_id);
void ClearFriendsList(unsigned int character_id);
void DeleteCharFriends(unsigned int character_id);
bool SaveWindowData(unsigned int character_id, BYTE* data, unsigned long data_length);
int LoadWindowData(unsigned int character_id, BYTE** data);
2018-03-29 17:01:57 -04:00
};