Have GroovePlayer init music db on creation. Make fields correctly be fk.

This commit is contained in:
Kevin Whitaker
2017-01-28 14:41:08 -05:00
parent c8637f2af6
commit 93e095d46e
3 changed files with 27 additions and 8 deletions

View File

@@ -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.";
}
}

View File

@@ -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

View File

@@ -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");
}