diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-10-24 15:22:27 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-10-24 15:22:27 +0100 |
commit | f529b94f37e5a4387e2e68f6742972defcce017b (patch) | |
tree | 38db9868322c1c241e262a4bccf4e92de50719b2 | |
parent | Use slicer for inserts and updates (diff) | |
download | p2pvr-f529b94f37e5a4387e2e68f6742972defcce017b.tar.bz2 p2pvr-f529b94f37e5a4387e2e68f6742972defcce017b.tar.xz p2pvr-f529b94f37e5a4387e2e68f6742972defcce017b.zip |
Wrap up slicer updates and DB connection access
-rw-r--r-- | p2pvr/daemon/dbClient.h | 8 | ||||
-rw-r--r-- | p2pvr/daemon/recordings.cpp | 3 | ||||
-rw-r--r-- | p2pvr/daemon/schedules.cpp | 7 |
3 files changed, 11 insertions, 7 deletions
diff --git a/p2pvr/daemon/dbClient.h b/p2pvr/daemon/dbClient.h index cd846e5..1fc12e8 100644 --- a/p2pvr/daemon/dbClient.h +++ b/p2pvr/daemon/dbClient.h @@ -11,6 +11,7 @@ #include <sqlVariableBinder.h> #include <sqlHandleAsVariableType.h> #include "p2Helpers.h" +#include <slicer/slicer.h> class SqlMergeTask; @@ -40,6 +41,13 @@ class DatabaseClient : public virtual CommonObjects { return {db, cmd}; } + template <typename SerializerType, typename Obj, typename ... ExtraArgs> + void Store(const Obj & o, const ExtraArgs & ... ea) const + { + auto db = dataSource<RdbmsDataSource>("postgres")->getWritable(); + Slicer::SerializeAny<SerializerType>(o, db.get(), ea...); + } + template <typename... Args> std::pair<RdbmsDataSource::ConnectionRef, SelectPtr> Select(const std::string & sql, const Args & ... args) const { diff --git a/p2pvr/daemon/recordings.cpp b/p2pvr/daemon/recordings.cpp index 547b3bf..ac8f27a 100644 --- a/p2pvr/daemon/recordings.cpp +++ b/p2pvr/daemon/recordings.cpp @@ -16,8 +16,7 @@ Recordings::NewRecording(const P2PVR::RecordingPtr & r, const Ice::Current &) { Logger()->messagebf(LOG_INFO, "%s: Creating new recording %s at %s", __PRETTY_FUNCTION__, r->Guid, r->StorageAddress); TxHelper tx(this); - auto db = dataSource<RdbmsDataSource>("postgres")->getWritable(); - Slicer::SerializeAny<Slicer::SqlFetchIdInsertSerializer>(r, db.get(), "recordings"); + Store<Slicer::SqlFetchIdInsertSerializer>(r, "recordings"); Logger()->messagebf(LOG_INFO, "%s: Created recording Id: %d", __PRETTY_FUNCTION__, r->RecordingId); return r->RecordingId; } diff --git a/p2pvr/daemon/schedules.cpp b/p2pvr/daemon/schedules.cpp index 6a985c3..90a42a9 100644 --- a/p2pvr/daemon/schedules.cpp +++ b/p2pvr/daemon/schedules.cpp @@ -14,7 +14,6 @@ #include <slicer/db/sqlSelectDeserializer.h> #include <slicer/db/sqlInsertSerializer.h> #include <slicer/db/sqlUpdateSerializer.h> -#include <slicer/slicer.h> #include <p2pvr-int.h> #include <privateExecContext.h> @@ -334,8 +333,7 @@ Ice::Int Schedules::NewSchedule(const P2PVR::SchedulePtr & s, const Ice::Current & ice) { TxHelper tx(this); - auto db = dataSource<RdbmsDataSource>("postgres")->getWritable(); - Slicer::SerializeAny<Slicer::SqlFetchIdInsertSerializer>(s, db.get(), "schedules"); + Store<Slicer::SqlFetchIdInsertSerializer>(s, "schedules"); DoReschedule(ice); return s->ScheduleId; } @@ -344,8 +342,7 @@ void Schedules::UpdateSchedule(const P2PVR::SchedulePtr & s, const Ice::Current & ice) { TxHelper tx(this); - auto db = dataSource<RdbmsDataSource>("postgres")->getWritable(); - Slicer::SerializeAny<Slicer::SqlUpdateSerializer>(s, db.get(), "schedules"); + Store<Slicer::SqlUpdateSerializer>(s, "schedules"); DoReschedule(ice); } |