From 2bf44f4ec550266271346d3574bd1843a8d9dd3b Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 21 Jul 2017 20:43:52 +0100 Subject: Add variants of fetch which allow setting the typeIdCol value --- icetray/icetray/abstractDatabaseClient.h | 22 +++++++++++++++++++--- icetray/unittests/testIceTrayServiceI.cpp | 3 +++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/icetray/icetray/abstractDatabaseClient.h b/icetray/icetray/abstractDatabaseClient.h index 3178ed4..80bd4c9 100644 --- a/icetray/icetray/abstractDatabaseClient.h +++ b/icetray/icetray/abstractDatabaseClient.h @@ -17,18 +17,34 @@ namespace IceTray { Domain fetch(const SqlSource & sql, const Params & ... params) { - auto c = db->get(); - return fetch(c.get(), sql, params...); + return fetch(IceUtil::None, sql, params...); } template inline Domain fetch(DB::Connection * c, const SqlSource & sql, const Params & ... params) + { + return fetch(c, IceUtil::None, sql, params...); + } + + template + inline + Domain + fetch(const IceUtil::Optional & typeIdCol, const SqlSource & sql, const Params & ... params) + { + auto c = db->get(); + return fetch(c.get(), typeIdCol, sql, params...); + } + + template + inline + Domain + fetch(DB::Connection * c, const IceUtil::Optional & typeIdCol, const SqlSource & sql, const Params & ... params) { auto s = sql.select(c); bind(0, s.get(), params...); - return Slicer::DeserializeAny(*s); + return Slicer::DeserializeAny(*s, typeIdCol); } template diff --git a/icetray/unittests/testIceTrayServiceI.cpp b/icetray/unittests/testIceTrayServiceI.cpp index 73cf3a9..138e87b 100644 --- a/icetray/unittests/testIceTrayServiceI.cpp +++ b/icetray/unittests/testIceTrayServiceI.cpp @@ -42,6 +42,9 @@ namespace TestIceTray { // Test we can extend to bind other things Foo foo; fetch(sql::testIceTrayServiceTestSql, Foo(), foo); + // Test we can provide our own DB connection + auto dbc = db->get(); + fetch(dbc.get(), sql::testIceTrayServiceTestSql, 1, 1); } void TestIceTrayServiceI::method2(Ice::Int id, const std::string & name, const Ice::Current &) -- cgit v1.2.3