Continued playlist handling
This commit is contained in:
@@ -61,6 +61,12 @@ Playlist::getAll(Wt::Dbo::Session& session, Wt::Dbo::ptr<User> user)
|
||||
return std::vector<Playlist::pointer>(res.begin(), res.end());
|
||||
}
|
||||
|
||||
void
|
||||
Playlist::addTrack(Wt::Dbo::ptr<Track> track)
|
||||
{
|
||||
_entries.insert( PlaylistEntry::create(*session(), track, self(), _entries.size()) );
|
||||
}
|
||||
|
||||
PlaylistEntry::PlaylistEntry(Wt::Dbo::ptr<Track> track, Wt::Dbo::ptr<Playlist> playlist, int pos)
|
||||
: _pos(pos),
|
||||
_track(track),
|
||||
@@ -74,19 +80,23 @@ PlaylistEntry::create(Wt::Dbo::Session& session, Wt::Dbo::ptr<Track> track, Wt::
|
||||
{
|
||||
return session.add( new PlaylistEntry( track, playlist, pos) );
|
||||
}
|
||||
/*
|
||||
std::vector<Track::id_type>
|
||||
PlaylistEntry::getEntries(Wt::Dbo::Session& session, Playlist::pointer playlist)
|
||||
|
||||
|
||||
std::vector<Wt::Dbo::ptr<Track>>
|
||||
Playlist::getTracks(int offset, int size) const
|
||||
{
|
||||
typedef Wt::Dbo::collection<pointer> Entries;
|
||||
assert(session());
|
||||
|
||||
Entries entries = session.find<PlaylistEntry>().where("playlist_id = ?").bind(playlist.id()).orderBy("pos");
|
||||
Wt::Dbo::collection<Wt::Dbo::ptr<PlaylistEntry>> entries = session()->find<PlaylistEntry>().where("playlist_id = ?").bind(self().id()).orderBy("pos").offset(offset).limit(size);
|
||||
|
||||
std::vector<Track::id_type> res;
|
||||
for (Entries::iterator it = entries.begin(); it != entries.end(); ++it)
|
||||
res.push_back((*it)->getTrack().id());
|
||||
std::vector<Wt::Dbo::ptr<Track>> res;
|
||||
|
||||
for (auto entry : entries)
|
||||
{
|
||||
res.push_back(entry->getTrack());
|
||||
}
|
||||
|
||||
return res;
|
||||
}*/
|
||||
}
|
||||
|
||||
} // namespace Database
|
||||
|
||||
@@ -30,7 +30,7 @@ class PlaylistEntry;
|
||||
class User;
|
||||
class Track;
|
||||
|
||||
class Playlist
|
||||
class Playlist : public Wt::Dbo::Dbo<Playlist>
|
||||
{
|
||||
public:
|
||||
typedef Wt::Dbo::ptr<Playlist> pointer;
|
||||
@@ -50,12 +50,11 @@ class Playlist
|
||||
bool isPublic() const { return _isPublic; }
|
||||
|
||||
// Modifiers
|
||||
void addTrack(id_type trackId);
|
||||
void addTracks(const std::vector<id_type>& trackIds);
|
||||
void clear();
|
||||
void addTrack(Wt::Dbo::ptr<Track> track);
|
||||
void clear() { _entries.clear(); }
|
||||
|
||||
// Get tracks, ordered by position
|
||||
std::vector<Track::id_type> getEntries(Wt::Dbo::Session& session, int offset = -1, int size = -1);
|
||||
std::vector<Wt::Dbo::ptr<Track>> getTracks(int offset = -1, int size = -1) const;
|
||||
|
||||
template<class Action>
|
||||
void persist(Action& a)
|
||||
@@ -82,7 +81,7 @@ class PlaylistEntry
|
||||
typedef Wt::Dbo::ptr<PlaylistEntry> pointer;
|
||||
|
||||
PlaylistEntry();
|
||||
PlaylistEntry(Wt::Dbo::ptr<Track> rack, Wt::Dbo::ptr<Playlist> playlist, int position);
|
||||
PlaylistEntry(Wt::Dbo::ptr<Track> track, Wt::Dbo::ptr<Playlist> playlist, int position);
|
||||
|
||||
// Create utility
|
||||
static pointer create(Wt::Dbo::Session& session, Wt::Dbo::ptr<Track> track, Wt::Dbo::ptr<Playlist> playlist, int position);
|
||||
|
||||
@@ -84,7 +84,7 @@ User::getAll(Wt::Dbo::Session& session)
|
||||
}
|
||||
|
||||
User::pointer
|
||||
User::getById(Wt::Dbo::Session& session, std::string id)
|
||||
User::getById(Wt::Dbo::Session& session, id_type id)
|
||||
{
|
||||
return session.find<User>().where("id = ?").bind( id );
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class User
|
||||
typedef Wt::Dbo::ptr<User> pointer;
|
||||
|
||||
// accessors
|
||||
static pointer getById(Wt::Dbo::Session& session, std::string id);
|
||||
static pointer getById(Wt::Dbo::Session& session, id_type id);
|
||||
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
|
||||
static std::string getId(pointer user);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user