#include "User.hpp" namespace Database { // must be ordered const std::vector User::audioBitrates = { 64000, 96000, 128000, 160000, 192000, 224000, 256000, 320000, 512000 }; const std::vector User::videoBitrates = { 256000, 512000, 1024000, 2048000, 4096000, 8192000 }; User::User() : _maxAudioBitrate(maxAudioBitrate), _maxVideoBitrate(maxVideoBitrate), _isAdmin(false), _audioBitrate(defaultAudioBitrate), _videoBitrate(defaultVideoBitrate) { } std::vector User::getAll(Wt::Dbo::Session& session) { Wt::Dbo::collection res = session.find(); return std::vector(res.begin(), res.end()); } User::pointer User::getById(Wt::Dbo::Session& session, std::string id) { return session.find().where("id = ?").bind( id ); } std::string User::getId( pointer user) { std::ostringstream oss; oss << user.id(); return oss.str(); } void User::setAudioBitrate(std::size_t bitrate) { _audioBitrate = std::min(bitrate, std::min(static_cast(_maxAudioBitrate), audioBitrates.back())); } void User::setVideoBitrate(std::size_t bitrate) { _videoBitrate = std::min(bitrate, std::min(static_cast(_maxVideoBitrate), videoBitrates.back())); } void User::setMaxAudioBitrate(std::size_t bitrate) { _maxAudioBitrate = std::min(bitrate, static_cast(_maxAudioBitrate)); } void User::setMaxVideoBitrate(std::size_t bitrate) { _maxVideoBitrate = std::min(bitrate, static_cast(_maxVideoBitrate)); } std::size_t User::getAudioBitrate(void) const { if (!isAdmin()) return std::min(static_cast(_audioBitrate), std::min(static_cast(_maxAudioBitrate), audioBitrates.back())); else return std::min(static_cast(_audioBitrate), audioBitrates.back()); } std::size_t User::getVideoBitrate(void) const { if (!isAdmin()) return std::min(static_cast(_videoBitrate), std::min(static_cast(_maxVideoBitrate), videoBitrates.back())); else return std::min(static_cast(_videoBitrate), videoBitrates.back()); } std::size_t User::getMaxAudioBitrate(void) const { if (!isAdmin()) return std::min(static_cast(_maxAudioBitrate), audioBitrates.back()); else return audioBitrates.back(); } std::size_t User::getMaxVideoBitrate(void) const { if (!isAdmin()) return std::min(static_cast(_maxVideoBitrate), videoBitrates.back()); else return videoBitrates.back(); } } // namespace Database