From 12c105623cf236a632d29f41b56c3f1e8df27416 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Fri, 29 Oct 2021 01:35:16 -0400 Subject: templatize some stuff --- discord/store.hpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'discord/store.hpp') diff --git a/discord/store.hpp b/discord/store.hpp index b30d4f4..791c790 100644 --- a/discord/store.hpp +++ b/discord/store.hpp @@ -100,13 +100,9 @@ private: bool OK() const; - int Bind(int index, int32_t num); - int Bind(int index, uint32_t num); - int Bind(int index, size_t num); int Bind(int index, Snowflake id); int Bind(int index, const char *str, size_t len = -1); int Bind(int index, const std::string &str); - int Bind(int index, bool val); int Bind(int index); template @@ -134,14 +130,6 @@ private: return Bind(index, std::string("[]")); } - template - int BindAsJSON(int index, const std::optional &obj) { - if (obj.has_value()) - return Bind(index, nlohmann::json(obj.value()).dump()); - else - return Bind(index); - } - template int BindAsJSON(int index, const T &obj) { return Bind(index, nlohmann::json(obj).dump()); @@ -153,10 +141,26 @@ private: return Bind(index, static_cast::type>(val)); } - void Get(int index, uint8_t &out) const; - void Get(int index, int32_t &out) const; - void Get(int index, size_t &out) const; - void Get(int index, bool &out) const; + template + typename std::enable_if::value, int>::type + Bind(int index, T val) { + return m_db->SetError(sqlite3_bind_int64(m_stmt, val, static_cast(val))); + } + + template + int BindAsJSON(int index, const std::optional &obj) { + if (obj.has_value()) + return Bind(index, nlohmann::json(obj.value()).dump()); + else + return Bind(index); + } + + template + typename std::enable_if::value>::type + Get(int index, T &out) const { + out = static_cast(sqlite3_column_int64(m_stmt, index)); + } + void Get(int index, Snowflake &out) const; void Get(int index, std::string &out) const; -- cgit v1.2.3