aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Database')
-rw-r--r--src/shared/Database/Database.cpp23
-rw-r--r--src/shared/Database/Database.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/src/shared/Database/Database.cpp b/src/shared/Database/Database.cpp
index 8b4de01e8db..9a43f72f272 100644
--- a/src/shared/Database/Database.cpp
+++ b/src/shared/Database/Database.cpp
@@ -21,6 +21,9 @@
#include "DatabaseEnv.h"
#include "Config/ConfigEnv.h"
+#include "Common.h"
+#include "../../game/UpdateFields.h"
+
#include <ctime>
#include <iostream>
#include <fstream>
@@ -172,6 +175,26 @@ bool Database::PExecute(const char * format,...)
return Execute(szQuery);
}
+bool Database::_UpdateDataBlobValue(const uint32 guid, const uint32 field, const uint32 value)
+{
+ return PExecute(
+ "UPDATE characters SET data="
+ "CONCAT(SUBSTRING_INDEX(`data`,' ',%u),' ',"
+ "SUBSTRING_INDEX(SUBSTRING_INDEX(`data`,' ',%u),' ',-1)+%u,"
+ "' ',SUBSTRING_INDEX(`data`,' ',%u)) WHERE guid=%u",
+ field, field+1, value, -int32(PLAYER_END-field)-1, guid);
+}
+
+bool Database::_SetDataBlobValue(const uint32 guid, const uint32 field, const uint32 value)
+{
+ return PExecute(
+ "UPDATE characters SET data="
+ "CONCAT(SUBSTRING_INDEX(`data`,' ',%u),' ',"
+ "%u,' ',SUBSTRING_INDEX(`data`,' ',%u)),"
+ "WHERE guid=%u",
+ field, field+1, value, -int32(PLAYER_END-field)-1, guid);
+}
+
bool Database::DirectPExecute(const char * format,...)
{
if (!format)
diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h
index a11c8e9a31f..bbdc137700d 100644
--- a/src/shared/Database/Database.h
+++ b/src/shared/Database/Database.h
@@ -102,6 +102,9 @@ class TRINITY_DLL_SPEC Database
virtual bool DirectExecute(const char* sql) = 0;
bool DirectPExecute(const char *format,...) ATTR_PRINTF(2,3);
+ bool Database::_UpdateDataBlobValue(const uint32 guid, const uint32 field, const uint32 value);
+ bool Database::_SetDataBlobValue(const uint32 guid, const uint32 field, const uint32 value);
+
// Writes SQL commands to a LOG file (see Trinityd.conf "LogSQL")
bool PExecuteLog(const char *format,...) ATTR_PRINTF(2,3);