diff options
-rw-r--r-- | icetray/icetray/abstractDatabaseClient.cpp | 32 | ||||
-rw-r--r-- | icetray/icetray/abstractDatabaseClient.h | 31 | ||||
-rw-r--r-- | icetray/unittests/testIceTrayServiceI.cpp | 6 |
3 files changed, 16 insertions, 53 deletions
diff --git a/icetray/icetray/abstractDatabaseClient.cpp b/icetray/icetray/abstractDatabaseClient.cpp index 4c9ea32..3e16ba7 100644 --- a/icetray/icetray/abstractDatabaseClient.cpp +++ b/icetray/icetray/abstractDatabaseClient.cpp @@ -1,43 +1,19 @@ #include "abstractDatabaseClient.h" #include "Ice/Config.h" #include "IceUtil/Optional.h" -#include <Ice/BuiltinSequences.h> namespace IceTray { AbstractDatabaseClient::AbstractDatabaseClient(const DB::ConnectionPoolPtr & d) : db(d) { } +} -#define PARAMBINDER(T, bindFunc) \ - template<> \ - void \ - AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const T & p) \ - { \ - cmd->bindFunc(o, p); \ - } - PARAMBINDER(Glib::ustring, bindParamS); - PARAMBINDER(std::string_view, bindParamS); - PARAMBINDER(std::string, bindParamS); - PARAMBINDER(Ice::Byte, bindParamI); - PARAMBINDER(Ice::Short, bindParamI); - PARAMBINDER(Ice::Int, bindParamI); - PARAMBINDER(Ice::Long, bindParamI); - PARAMBINDER(unsigned long, bindParamI); - PARAMBINDER(Ice::Float, bindParamF); - PARAMBINDER(Ice::Double, bindParamF); - PARAMBINDER(bool, bindParamB); - PARAMBINDER(Ice::ByteSeq, bindParamBLOB); +namespace DB { template<> - void - AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const std::nullptr_t &) \ - { - cmd->bindNull(o); - } - - void - AbstractDatabaseClient::bind(int, DB::Command *) + void Command::bindParam(unsigned int offset, const Ice::ByteSeq & p) { + this->bindParamBLOB(offset, p); } } diff --git a/icetray/icetray/abstractDatabaseClient.h b/icetray/icetray/abstractDatabaseClient.h index c719902..81eb4bc 100644 --- a/icetray/icetray/abstractDatabaseClient.h +++ b/icetray/icetray/abstractDatabaseClient.h @@ -6,6 +6,7 @@ #include <db/sqlSelectDeserializer.h> #include <slicer/slicer.h> #include <visibility.h> +#include <Ice/BuiltinSequences.h> namespace IceTray { class DLL_PUBLIC AbstractDatabaseClient { @@ -48,36 +49,22 @@ namespace IceTray { } template<typename Param, typename ... Params> - static void inline bind(int offset, DB::Command * cmd, const Param & p, const Params & ... params) + static void inline bind(unsigned int offset, DB::Command * cmd, const Param & p, const Params & ... params) { - bind1(offset, cmd, p); + cmd->bindParam(offset, p); bind(offset + 1, cmd, params...); } - static void bind(int offset, DB::Command * cmd); - - template<typename Param> - static void bind1(int offset, DB::Command * cmd, const Param & p); - -#define BIND1OPTIONAL(T) \ - template<typename Param> \ - static void bind1(int offset, DB::Command * cmd, const T<Param> & p) \ - { \ - if (p) { \ - bind1(offset, cmd, *p); \ - } \ - else { \ - cmd->bindNull(offset); \ - } \ - } - - BIND1OPTIONAL(Ice::optional); - BIND1OPTIONAL(std::optional); -#undef BIND1OPTIONAL + static void inline bind(int, DB::Command *) { } const DB::ConnectionPoolPtr db; }; } +namespace DB { + template<> + void Command::bindParam(unsigned int offset, const Ice::ByteSeq & p); +} + #endif diff --git a/icetray/unittests/testIceTrayServiceI.cpp b/icetray/unittests/testIceTrayServiceI.cpp index 1baa781..c4b8331 100644 --- a/icetray/unittests/testIceTrayServiceI.cpp +++ b/icetray/unittests/testIceTrayServiceI.cpp @@ -11,12 +11,12 @@ class Foo { }; -namespace IceTray { +namespace DB { template<> void - AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const Foo &) + Command::bindParam(unsigned int o, const Foo &) { - cmd->bindNull(o); + bindNull(o); } } |