feat(Core/Database): port TrinityCore database API (#5611)

This commit is contained in:
Kargatum
2021-06-22 11:21:07 +07:00
committed by GitHub
parent 2a2e54d8c5
commit 9ac6fddcae
155 changed files with 5818 additions and 4321 deletions

View File

@@ -927,7 +927,7 @@ public:
}
else
{
SQLTransaction trans(nullptr);
CharacterDatabaseTransaction trans(nullptr);
Player::OfflineResurrect(targetGuid, trans);
}
@@ -1491,7 +1491,7 @@ public:
{
std::string itemName = itemNameStr + 1;
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME);
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME);
stmt->setString(0, itemName);
PreparedQueryResult result = WorldDatabase.Query(stmt);
@@ -1787,7 +1787,8 @@ public:
Player* target;
ObjectGuid targetGuid;
std::string targetName;
PreparedStatement* stmt = nullptr;
CharacterDatabasePreparedStatement* stmt = nullptr;
LoginDatabasePreparedStatement* loginStmt = nullptr;
ObjectGuid parseGUID = ObjectGuid::Create<HighGuid::Player>(atol((char*)args));
@@ -1907,11 +1908,11 @@ public:
}
// Query the prepared statement for login data
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
stmt->setInt32(0, int32(realm.Id.Realm));
stmt->setUInt32(1, accId);
PreparedQueryResult accInfoResult = LoginDatabase.Query(stmt);
loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
loginStmt->setInt32(0, int32(realm.Id.Realm));
loginStmt->setUInt32(1, accId);
PreparedQueryResult accInfoResult = LoginDatabase.Query(loginStmt);
if (accInfoResult)
{
Field* fields = accInfoResult->Fetch();
@@ -1952,8 +1953,9 @@ public:
std::string nameLink = handler->playerLink(targetName);
// Returns banType, banTime, bannedBy, banreason
PreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
LoginDatabasePreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
banQuery->setUInt32(0, accId);
PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery);
if (!accBannedResult)
{
@@ -1972,10 +1974,10 @@ public:
}
// Can be used to query data from World database
PreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP);
WorldDatabasePreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP);
xpQuery->setUInt8(0, level);
PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery);
PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery);
if (xpResult)
{
Field* fields = xpResult->Fetch();
@@ -1983,10 +1985,10 @@ public:
}
// Can be used to query data from Characters database
PreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
CharacterDatabasePreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
charXpQuery->setUInt32(0, lowguid);
PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery);
PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery);
if (charXpResult)
{
Field* fields = charXpResult->Fetch();
@@ -1995,8 +1997,9 @@ public:
if (gguid != 0)
{
PreparedStatement* guildQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
CharacterDatabasePreparedStatement* guildQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
guildQuery->setUInt32(0, lowguid);
PreparedQueryResult guildInfoResult = CharacterDatabase.Query(guildQuery);
if (guildInfoResult)
{
@@ -2170,8 +2173,9 @@ public:
// Mail Data - an own query, because it may or may not be useful.
// SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
PreparedStatement* mailQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
CharacterDatabasePreparedStatement* mailQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
mailQuery->setUInt32(0, lowguid);
PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery);
if (mailInfoResult)
{
@@ -2250,7 +2254,7 @@ public:
if (handler->HasLowerSecurity (target, targetGuid, true))
return false;
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
std::string muteBy = "";
if (handler->GetSession())
muteBy = handler->GetSession()->GetPlayerName();
@@ -2336,7 +2340,7 @@ public:
target->GetSession()->m_muteTime = 0;
}
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
stmt->setInt64(0, 0);
stmt->setString(1, "");
stmt->setString(2, "");
@@ -2384,7 +2388,7 @@ public:
// helper for mutehistory
static bool HandleMuteInfoHelper(uint32 accountId, char const* accountName, ChatHandler* handler)
{
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO);
stmt->setUInt16(0, accountId);
PreparedQueryResult result = LoginDatabase.Query(stmt);
@@ -2671,7 +2675,7 @@ public:
MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : 0, MAIL_STATIONERY_GM);
//- TODO: Fix poor design
SQLTransaction trans = CharacterDatabase.BeginTransaction();
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
MailDraft(subject, text)
.SendMailTo(trans, MailReceiver(target, targetGuid.GetCounter()), sender);
@@ -2771,7 +2775,7 @@ public:
// fill mail
MailDraft draft(subject, text);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
for (ItemPairs::const_iterator itr = items.begin(); itr != items.end(); ++itr)
{
@@ -2828,7 +2832,7 @@ public:
// from console show not existed sender
MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : 0, MAIL_STATIONERY_GM);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
MailDraft(subject, text)
.AddMoney(money)
@@ -3092,7 +3096,7 @@ public:
{
if (ObjectGuid playerGUID = sWorld->GetGlobalPlayerGUID(name))
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_FROZEN);
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_FROZEN);
stmt->setUInt32(0, playerGUID.GetCounter());
CharacterDatabase.Execute(stmt);
handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, name.c_str());