diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index 3f20b1dbd9a3fd4f566a3280245348c98916cba2..f72fe0aa92ef30c259eca0bfa1b85aae6c9692a3 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 35e12333380d3074b54e2d537c7d41e1e740cff2..3dc26eb169205c169350df0ca60c65a9c85981c6 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 ec18747203514d616372abccc201493e98300d1c..93e5d0bd7565e32120628843580fb24fd7c997d4 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"); }