Added demo account support

This commit is contained in:
emeric
2018-08-01 12:57:03 +02:00
parent a31fb3c062
commit 4cadb915ba
11 changed files with 124 additions and 34 deletions
+9 -2
View File
@@ -33,7 +33,7 @@ User::audioBitrates =
User::User()
: _maxAudioBitrate(audioBitrates.back()),
_isAdmin(false),
_type(Type::REGULAR),
_audioBitrate(defaultAudioBitrate),
_audioEncoding(AudioEncoding::AUTO),
_curPlayingTrackPos(0)
@@ -48,6 +48,13 @@ User::getAll(Wt::Dbo::Session& session)
return std::vector<pointer>(res.begin(), res.end());
}
User::pointer
User::getDemo(Wt::Dbo::Session& session)
{
pointer res = session.find<User>().where("type = ?").bind(Type::DEMO);
return res;
}
User::pointer
User::create(Wt::Dbo::Session& session)
{
@@ -55,7 +62,7 @@ User::create(Wt::Dbo::Session& session)
}
User::pointer
User::getById(Wt::Dbo::Session& session, id_type id)
User::getById(Wt::Dbo::Session& session, IdType id)
{
return session.find<User>().where("id = ?").bind( id );
}
+17 -7
View File
@@ -24,6 +24,8 @@
#include <Wt/Dbo/Dbo.h>
#include <Wt/Auth/Dbo/AuthInfo.h>
#include "Types.hpp"
namespace Database {
class User;
@@ -43,12 +45,18 @@ enum class AudioEncoding
class User : public Wt::Dbo::Dbo<User>
{
public:
typedef Wt::Dbo::dbo_traits<User>::IdType id_type;
typedef Wt::Dbo::ptr<User> pointer;
using pointer = Wt::Dbo::ptr<User>;
static const std::size_t MinNameLength = 3;
static const std::size_t MaxNameLength = 15;
enum class Type
{
REGULAR,
ADMIN,
DEMO
};
// list of audio parameters
static const std::vector<std::size_t> audioBitrates;
@@ -58,18 +66,20 @@ class User : public Wt::Dbo::Dbo<User>
static pointer create(Wt::Dbo::Session& session);
// accessors
static pointer getById(Wt::Dbo::Session& session, id_type id);
static pointer getById(Wt::Dbo::Session& session, IdType id);
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
static pointer getDemo(Wt::Dbo::Session& session);
// write
void setAdmin(bool admin) { _isAdmin = admin; }
void setType(Type type) { _type = type; }
void setAudioBitrate(std::size_t bitrate);
void setAudioEncoding(AudioEncoding encoding) { _audioEncoding = encoding; }
void setMaxAudioBitrate(std::size_t bitrate);
void setCurPlayingTrackPos(std::size_t pos) { _curPlayingTrackPos = pos; }
// read
bool isAdmin() const { return _isAdmin; }
bool isAdmin() const { return _type == Type::ADMIN; }
bool isDemo() const { return _type == Type::DEMO; }
std::size_t getAudioBitrate() const;
AudioEncoding getAudioEncoding() const { return _audioEncoding; }
std::size_t getMaxAudioBitrate() const;
@@ -79,7 +89,7 @@ class User : public Wt::Dbo::Dbo<User>
void persist(Action& a)
{
Wt::Dbo::field(a, _maxAudioBitrate, "max_audio_bitrate");
Wt::Dbo::field(a, _isAdmin, "admin");
Wt::Dbo::field(a, _type, "type");
Wt::Dbo::field(a, _audioBitrate, "audio_bitrate");
Wt::Dbo::field(a, _audioEncoding, "audio_encoding");
// User's dynamic data
@@ -93,7 +103,7 @@ class User : public Wt::Dbo::Dbo<User>
// Admin defined settings
int _maxAudioBitrate;
bool _isAdmin;
Type _type;
// User defined settings
int _audioBitrate;