aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/Field.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-14 16:30:05 +0200
committerShauren <shauren.trinity@gmail.com>2023-05-14 16:30:05 +0200
commiteadafb0347d606e5e3e660d21227aa15378bdb21 (patch)
tree84f89281f37c0b32bb792167f59f1de85720ec56 /src/server/database/Database/Field.h
parent8d0620eb05e80644219300fecb136beae52bf2e2 (diff)
Core/DBLayer: Relaxed restrictions on which Field class member function can be used to access column value from "strict match" to "must not truncate"
Diffstat (limited to 'src/server/database/Database/Field.h')
-rw-r--r--src/server/database/Database/Field.h37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/server/database/Database/Field.h b/src/server/database/Database/Field.h
index 0229c852647..d0613a3a94f 100644
--- a/src/server/database/Database/Field.h
+++ b/src/server/database/Database/Field.h
@@ -15,22 +15,27 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _FIELD_H
-#define _FIELD_H
+#ifndef TRINITY_DATABASE_FIELD_H
+#define TRINITY_DATABASE_FIELD_H
#include "Define.h"
-#include "DatabaseEnvFwd.h"
#include <array>
#include <string>
#include <string_view>
#include <vector>
+class BaseDatabaseResultValueConverter;
+
enum class DatabaseFieldTypes : uint8
{
Null,
+ UInt8,
Int8,
+ UInt16,
Int16,
+ UInt32,
Int32,
+ UInt64,
Int64,
Float,
Double,
@@ -48,6 +53,7 @@ struct QueryResultFieldMetadata
char const* TypeName = nullptr;
uint32 Index = 0;
DatabaseFieldTypes Type = DatabaseFieldTypes::Null;
+ BaseDatabaseResultValueConverter const* Converter = nullptr;
};
/**
@@ -118,28 +124,17 @@ class TC_DATABASE_API Field
bool IsNull() const
{
- return data.value == nullptr;
+ return _value == nullptr;
}
- protected:
- struct
- {
- char const* value; // Actual data in memory
- uint32 length; // Length
- bool raw; // Raw bytes? (Prepared statement or ad hoc)
- } data;
-
- void SetByteValue(char const* newValue, uint32 length);
- void SetStructuredValue(char const* newValue, uint32 length);
-
- bool IsType(DatabaseFieldTypes type) const;
+ private:
+ char const* _value; // Actual data in memory
+ uint32 _length; // Length
- bool IsNumeric() const;
+ void SetValue(char const* newValue, uint32 length);
- private:
- QueryResultFieldMetadata const* meta;
- void LogWrongType(char const* getter) const;
- void SetMetadata(QueryResultFieldMetadata const* fieldMeta);
+ QueryResultFieldMetadata const* _meta;
+ void SetMetadata(QueryResultFieldMetadata const* meta);
void GetBinarySizeChecked(uint8* buf, size_t size) const;
};