summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2015-10-17 18:47:19 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2015-10-17 18:47:19 +0100
commit802315513e89ef5ee41d68c91a2ff541bb084903 (patch)
tree3bfc03999c410024a977c96b2a0a4ae30a0f3de5
parentExclude test shouldn't happen error handling from coverage (diff)
downloadslicer-802315513e89ef5ee41d68c91a2ff541bb084903.tar.bz2
slicer-802315513e89ef5ee41d68c91a2ff541bb084903.tar.xz
slicer-802315513e89ef5ee41d68c91a2ff541bb084903.zip
Dedupe insert bind and execute
-rw-r--r--slicer/db/sqlInsertSerializer.cpp22
-rw-r--r--slicer/db/sqlInsertSerializer.h1
2 files changed, 13 insertions, 10 deletions
diff --git a/slicer/db/sqlInsertSerializer.cpp b/slicer/db/sqlInsertSerializer.cpp
index 2f8e88d..eccc083 100644
--- a/slicer/db/sqlInsertSerializer.cpp
+++ b/slicer/db/sqlInsertSerializer.cpp
@@ -30,11 +30,7 @@ namespace Slicer {
SqlInsertSerializer::SerializeObject(Slicer::ModelPartPtr mp) const
{
auto ins = createInsert(mp);
- int paramNo = 0;
- mp->OnEachChild([&ins, &paramNo](const std::string &, ModelPartPtr cmp, HookCommonPtr) {
- cmp->GetValue(new SqlBinder(*ins, paramNo++));
- });
- ins->execute();
+ bindObjectAndExecute(mp, ins.get());
}
void
@@ -45,12 +41,18 @@ namespace Slicer {
if (!ins) {
ins = createInsert(cmp);
}
- int paramNo = 0;
- cmp->OnEachChild([&ins, &paramNo](const std::string &, ModelPartPtr cmp, HookCommonPtr) {
- cmp->GetValue(new SqlBinder(*ins, paramNo++));
- });
- ins->execute();
+ bindObjectAndExecute(cmp, ins.get());
+ });
+ }
+
+ void
+ SqlInsertSerializer::bindObjectAndExecute(Slicer::ModelPartPtr cmp, DB::ModifyCommand * ins)
+ {
+ int paramNo = 0;
+ cmp->OnEachChild([&ins, &paramNo](const std::string &, ModelPartPtr cmp, HookCommonPtr) {
+ cmp->GetValue(new SqlBinder(*ins, paramNo++));
});
+ ins->execute();
}
SqlInsertSerializer::ModifyPtr
diff --git a/slicer/db/sqlInsertSerializer.h b/slicer/db/sqlInsertSerializer.h
index 9163f47..843be93 100644
--- a/slicer/db/sqlInsertSerializer.h
+++ b/slicer/db/sqlInsertSerializer.h
@@ -18,6 +18,7 @@ namespace Slicer {
void SerializeObject(Slicer::ModelPartPtr) const;
void SerializeSequence(Slicer::ModelPartPtr) const;
ModifyPtr createInsert(Slicer::ModelPartPtr) const;
+ static void bindObjectAndExecute(Slicer::ModelPartPtr, DB::ModifyCommand *);
DB::Connection * connection;
const std::string tableName;