diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-05-14 16:30:05 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-05-14 16:30:05 +0200 |
commit | eadafb0347d606e5e3e660d21227aa15378bdb21 (patch) | |
tree | 84f89281f37c0b32bb792167f59f1de85720ec56 /src/server/database/Database/Field.h | |
parent | 8d0620eb05e80644219300fecb136beae52bf2e2 (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.h | 37 |
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; }; |