diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-03-02 22:50:56 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-22 21:39:35 +0100 |
commit | cecb36bd68d30408a0741b161318aadc70a81e20 (patch) | |
tree | e61a09589006e64da71e5270acd6336447a3885f /src/server/database/Database/PreparedStatement.h | |
parent | dab7e5688c55d4b785a9277d15ea55e075870849 (diff) |
Core/DBLayer: Use std::variant's stored type instead of relying on our own separate enum for prepared statement parameters
(cherry picked from commit 30482038559d65648d9bcfa29cd426a6f266eeba)
Diffstat (limited to 'src/server/database/Database/PreparedStatement.h')
-rw-r--r-- | src/server/database/Database/PreparedStatement.h | 63 |
1 files changed, 25 insertions, 38 deletions
diff --git a/src/server/database/Database/PreparedStatement.h b/src/server/database/Database/PreparedStatement.h index e4bd08753f5..b920289623e 100644 --- a/src/server/database/Database/PreparedStatement.h +++ b/src/server/database/Database/PreparedStatement.h @@ -24,47 +24,34 @@ #include <vector> #include <variant> -#ifdef __APPLE__ -#undef TYPE_BOOL -#endif - -//- This enum helps us differ data held in above union -enum PreparedStatementValueType -{ - TYPE_BOOL, - TYPE_UI8, - TYPE_UI16, - TYPE_UI32, - TYPE_UI64, - TYPE_I8, - TYPE_I16, - TYPE_I32, - TYPE_I64, - TYPE_FLOAT, - TYPE_DOUBLE, - TYPE_STRING, - TYPE_BINARY, - TYPE_NULL -}; - struct PreparedStatementData { std::variant< - bool, // TYPE_BOOL - uint8, // TYPE_UI8 - uint16, // TYPE_UI16 - uint32, // TYPE_UI32 - uint64, // TYPE_UI64 - int8, // TYPE_I8 - int16, // TYPE_I16 - int32, // TYPE_UI32 - int64, // TYPE_UI64 - float, // TYPE_FLOAT - double, // TYPE_DOUBLE - std::string, // TYPE_STRING - std::vector<uint8>> // TYPE_BINARY - data; - PreparedStatementValueType type; + bool, + uint8, + uint16, + uint32, + uint64, + int8, + int16, + int32, + int64, + float, + double, + std::string, + std::vector<uint8>, + std::nullptr_t + > data; + + template<typename T> + static std::string ToString(T value); + + static std::string ToString(bool value); + static std::string ToString(uint8 value); + static std::string ToString(int8 value); + static std::string ToString(std::string const& value); + static std::string ToString(std::vector<uint8> const& value); + static std::string ToString(std::nullptr_t); }; //- Upper-level class that is used in code |