Continued playlist handling

This commit is contained in:
emeric
2018-02-20 14:02:28 +01:00
parent 6060296649
commit f40df1fc29
16 changed files with 190 additions and 94 deletions
+19 -9
View File
@@ -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
+5 -6
View File
@@ -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);
+1 -1
View File
@@ -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 );
}
+1 -1
View File
@@ -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);