WIP. Reorganizing things to get settings work. First attempt on Database settings
This commit is contained in:
@@ -91,4 +91,29 @@ Handler::getUserDatabase()
|
||||
return *_users;
|
||||
}
|
||||
|
||||
User::pointer
|
||||
Handler::getCurrentUser()
|
||||
{
|
||||
if (_login.loggedIn())
|
||||
return getUser(_login.user());
|
||||
else
|
||||
return User::pointer();
|
||||
}
|
||||
|
||||
User::pointer
|
||||
Handler::getUser(const Wt::Auth::User& authUser)
|
||||
{
|
||||
Wt::Dbo::ptr<AuthInfo> authInfo = _users->find(authUser);
|
||||
|
||||
User::pointer user = authInfo->user();
|
||||
|
||||
if (!user) {
|
||||
user = _session.add(new User());
|
||||
authInfo.modify()->setUser(user);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
} // namespace Database
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
#include "MediaDirectory.hpp"
|
||||
|
||||
namespace Database {
|
||||
@@ -27,6 +29,14 @@ MediaDirectory::create(Wt::Dbo::Session& session, boost::filesystem::path p, Typ
|
||||
return session.add( new MediaDirectory( p, type ) );
|
||||
}
|
||||
|
||||
void
|
||||
MediaDirectory::eraseAll(Wt::Dbo::Session& session)
|
||||
{
|
||||
std::vector<MediaDirectory::pointer> dirs = getAll(session);
|
||||
BOOST_FOREACH(MediaDirectory::pointer dir, dirs)
|
||||
dir.remove();
|
||||
}
|
||||
|
||||
std::vector<MediaDirectory::pointer>
|
||||
MediaDirectory::getAll(Wt::Dbo::Session& session)
|
||||
{
|
||||
|
||||
@@ -24,15 +24,25 @@ class MediaDirectorySettings
|
||||
static pointer get(Wt::Dbo::Session& session);
|
||||
|
||||
// write accessors
|
||||
void setManualScanRequested(bool value) { _manualScanRequested = value;}
|
||||
void setUpdatePeriod(boost::posix_time::time_duration dur) { _updatePeriod = dur;}
|
||||
void setUpdateStartTime(boost::posix_time::time_duration dur) { _updateStartTime = dur;}
|
||||
void setLastUpdate(boost::posix_time::ptime time) { _lastUpdate = time; }
|
||||
void setLastScan(boost::posix_time::ptime time) { _lastScan = time; }
|
||||
|
||||
// Read accessors
|
||||
bool getManualScanRequested(void) const { return _manualScanRequested; }
|
||||
boost::posix_time::time_duration getUpdatePeriod(void) const { return _updatePeriod; }
|
||||
boost::posix_time::time_duration getUpdateStartTime(void) const { return _updateStartTime; }
|
||||
boost::posix_time::ptime getLastUpdated(void) const { return _lastUpdate; }
|
||||
boost::posix_time::ptime getLastScan(void) const { return _lastScan; }
|
||||
|
||||
template<class Action>
|
||||
void persist(Action& a)
|
||||
{
|
||||
Wt::Dbo::field(a, _manualScanRequested, "manual_scan_requested");
|
||||
Wt::Dbo::field(a, _updatePeriod, "update_period");
|
||||
Wt::Dbo::field(a, _updateStartTime, "update_start_time");
|
||||
Wt::Dbo::field(a, _lastUpdate, "last_update");
|
||||
Wt::Dbo::field(a, _lastScan, "last_scan");
|
||||
Wt::Dbo::hasMany(a, _mediaDirectories, Wt::Dbo::ManyToOne, "media_directory_settings");
|
||||
@@ -40,7 +50,9 @@ class MediaDirectorySettings
|
||||
|
||||
private:
|
||||
|
||||
boost::posix_time::time_duration _updatePeriod; // TODO
|
||||
bool _manualScanRequested; // Immadiate scan has been requested by user
|
||||
boost::posix_time::time_duration _updatePeriod; // How long between updates
|
||||
boost::posix_time::time_duration _updateStartTime; // Time of day to begin the update
|
||||
boost::posix_time::ptime _lastUpdate; // last time the database has changed
|
||||
boost::posix_time::ptime _lastScan; // last time the database has been scanned
|
||||
Wt::Dbo::collection< Wt::Dbo::ptr<MediaDirectory> > _mediaDirectories; // list of media directories
|
||||
@@ -65,6 +77,8 @@ class MediaDirectory
|
||||
static pointer create(Wt::Dbo::Session& session, boost::filesystem::path p, Type type);
|
||||
static std::vector<MediaDirectory::pointer> getAll(Wt::Dbo::Session& session);
|
||||
|
||||
static void eraseAll(Wt::Dbo::Session& session);
|
||||
|
||||
Type getType(void) const { return _type; }
|
||||
boost::filesystem::path getPath(void) const { return boost::filesystem::path(_path); }
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
#include "User.hpp"
|
||||
|
||||
|
||||
namespace Database {
|
||||
|
||||
User::User()
|
||||
: _maxAudioBitrate(maxAudioBitrate),
|
||||
_maxVideoBitrate(maxVideoBitrate),
|
||||
_isAdmin(false),
|
||||
_audioBitrate(defaultAudioBitrate),
|
||||
_videoBitrate(defaultVideoBitrate)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // namespace Database
|
||||
|
||||
|
||||
+22
-1
@@ -13,17 +13,38 @@ class User {
|
||||
|
||||
public:
|
||||
|
||||
User();
|
||||
|
||||
typedef Wt::Dbo::ptr<User> pointer;
|
||||
|
||||
bool isAdmin() const {return _isAdmin;}
|
||||
|
||||
template<class Action>
|
||||
void persist(Action& a)
|
||||
{
|
||||
Wt::Dbo::field(a, _maxAudioBitrate, "max_audio_bitrate");
|
||||
Wt::Dbo::field(a, _maxVideoBitrate, "max_video_bitrate");
|
||||
Wt::Dbo::field(a, _isAdmin, "admin");
|
||||
Wt::Dbo::field(a, _audioBitrate, "audio_bitrate");
|
||||
Wt::Dbo::field(a, _videoBitrate, "video_bitrate");
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
bool _isAdmin;
|
||||
static const std::size_t maxAudioBitrate = 320000;
|
||||
static const std::size_t maxVideoBitrate = 7500000;
|
||||
|
||||
static const std::size_t defaultAudioBitrate = 128000;
|
||||
static const std::size_t defaultVideoBitrate = 1500000;
|
||||
|
||||
// Admin defined settings
|
||||
int _maxAudioBitrate;
|
||||
int _maxVideoBitrate;
|
||||
bool _isAdmin;
|
||||
|
||||
// User defined settings
|
||||
int _audioBitrate;
|
||||
int _videoBitrate;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user