From 93e095d46e7ba5a247eb23a649e24c1724e6fb5b Mon Sep 17 00:00:00 2001 From: Kevin Whitaker <eyecreate@gmail.com> Date: Sat, 28 Jan 2017 14:41:08 -0500 Subject: [PATCH] Have GroovePlayer init music db on creation. Make fields correctly be fk. --- src/GroovePlayer.cpp | 18 ++++++++++++++++-- src/GroovePlayer.h | 9 +++++++-- src/db/UserAction.h | 8 ++++---- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index 3f20b1d..f72fe0a 100644 --- a/src/GroovePlayer.cpp +++ b/src/GroovePlayer.cpp @@ -18,8 +18,22 @@ */ #include "GroovePlayer.h" +#include "db/User.h" +#include "db/AudioTrack.h" +#include "db/UserAction.h" +#include <Wt/WLogger> -GroovePlayer::GroovePlayer() +GroovePlayer::GroovePlayer(std::string dbFile) : sqliteConnection(dbFile) { + sqlSession.setConnection(this->sqliteConnection); + sqlSession.mapClass<User>("user"); + sqlSession.mapClass<AudioTrack>("tracks"); + sqlSession.mapClass<UserAction>("actions"); + try + { + sqlSession.createTables(); + } catch(Wt::Dbo::Exception e) + { + Wt::log("info") << "Using Existing DB."; + } } - diff --git a/src/GroovePlayer.h b/src/GroovePlayer.h index 35e1233..3dc26eb 100644 --- a/src/GroovePlayer.h +++ b/src/GroovePlayer.h @@ -20,17 +20,22 @@ #ifndef GROOVEPLAYER_H #define GROOVEPLAYER_H +#include <Wt/Dbo/Session> +#include <Wt/Dbo/backend/Sqlite3> + class GroovePlayer { public: static GroovePlayer* getInstance() { - static GroovePlayer instance; + static GroovePlayer instance("music.db"); return &instance; }; GroovePlayer(GroovePlayer const&) = delete; void operator=(GroovePlayer const&) = delete; private: - GroovePlayer(); + GroovePlayer(std::string dbFile); + Wt::Dbo::backend::Sqlite3 sqliteConnection; + Wt::Dbo::Session sqlSession; }; #endif // GROOVEPLAYER_H diff --git a/src/db/UserAction.h b/src/db/UserAction.h index ec18747..93e5d0b 100644 --- a/src/db/UserAction.h +++ b/src/db/UserAction.h @@ -31,17 +31,17 @@ class UserAction public: enum UAction {Login = 0, Logout = 1, RequestTrack = 2, VoteTrack = 3, UploadTrack = 4, RequestSkip = 5, Pause = 6}; - User user; + Wt::Dbo::ptr<User> user; UAction action; - AudioTrack trackInvolved; + Wt::Dbo::ptr<AudioTrack> trackInvolved; Wt::WDateTime datetime; template<class Action> void persist(Action& a) { - Wt::Dbo::field(a, user, "user"); + Wt::Dbo::belongsTo(a, user, "user"); Wt::Dbo::field(a, action, "action"); - Wt::Dbo::field(a, trackInvolved, "track"); + Wt::Dbo::belongsTo(a, trackInvolved, "track"); Wt::Dbo::field(a, datetime, "datetime"); } -- GitLab