Dedicated view for tracklist

This commit is contained in:
emeric
2022-06-30 21:18:42 +02:00
parent b4e8f55d15
commit 169a5f5d08
65 changed files with 784 additions and 423 deletions
@@ -345,7 +345,6 @@ TEST_F(DatabaseFixture, Artist_nonReleaseTracks)
track1.get().modify()->setRelease(release.get());
}
{
auto transaction {session.createSharedTransaction()};
+11 -11
View File
@@ -211,9 +211,9 @@ TEST_F(DatabaseFixture, Cluster_multiTracksMultipleClustersTopRelease)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, trackA.get(), trackList.get());
TrackListEntry::create(session, trackB.get(), trackList.get());
TrackListEntry::create(session, trackB.get(), trackList.get());
session.create<TrackListEntry>(trackA.get(), trackList.get());
session.create<TrackListEntry>(trackB.get(), trackList.get());
session.create<TrackListEntry>(trackB.get(), trackList.get());
}
{
@@ -249,9 +249,9 @@ TEST_F(DatabaseFixture, Cluster_multiTracksMultipleClustersTopRelease)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, trackC.get(), trackList.get());
TrackListEntry::create(session, trackC.get(), trackList.get());
TrackListEntry::create(session, trackC.get(), trackList.get());
session.create<TrackListEntry>(trackC.get(), trackList.get());
session.create<TrackListEntry>(trackC.get(), trackList.get());
session.create<TrackListEntry>(trackC.get(), trackList.get());
}
{
@@ -630,7 +630,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackSingleCluster)
auto transaction {session.createUniqueTransaction()};
if (i < 5)
TrackListEntry::create(session, tracks.back().get(), trackList.get());
session.create<TrackListEntry>(tracks.back().get(), trackList.get());
if (i < 10)
cluster.get().modify()->addTrack(tracks.back().get());
@@ -663,7 +663,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackMultiClusters)
auto transaction {session.createUniqueTransaction()};
if (i < 5)
TrackListEntry::create(session, tracks.back().get(), trackList.get());
session.create<TrackListEntry>(tracks.back().get(), trackList.get());
if (i < 10)
{
@@ -742,7 +742,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackMultiClustersRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get(), now);
session.create<TrackListEntry>(track1.get(), trackList.get(), now);
}
{
@@ -828,7 +828,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackMultiClustersRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track2.get(), trackList.get(), now.addSecs(1));
session.create<TrackListEntry>(track2.get(), trackList.get(), now.addSecs(1));
}
{
@@ -908,7 +908,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackMultiClustersRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get(), now.addSecs(2));
session.create<TrackListEntry>(track1.get(), trackList.get(), now.addSecs(2));
}
{
+5 -2
View File
@@ -29,6 +29,7 @@
#include "services/database/Db.hpp"
#include "services/database/Listen.hpp"
#include "services/database/Release.hpp"
#include "services/database/ScanSettings.hpp"
#include "services/database/Session.hpp"
#include "services/database/Track.hpp"
#include "services/database/TrackArtistLink.hpp"
@@ -50,7 +51,7 @@ class ScopedEntity
{
auto transaction {_session.createUniqueTransaction()};
auto entity {T::create(_session, std::forward<Args>(args)...)};
auto entity {_session.create<T>(std::forward<Args>(args)...)};
EXPECT_TRUE(entity);
_id = entity->getId();
}
@@ -60,7 +61,9 @@ class ScopedEntity
auto transaction {_session.createUniqueTransaction()};
auto entity {T::find(_session, _id)};
entity.remove();
// could not be here due to "on delete cascade" constraints...
if (entity)
entity.remove();
}
ScopedEntity(const ScopedEntity&) = delete;
+62 -15
View File
@@ -59,7 +59,7 @@ TEST_F(DatabaseFixture, SingleTrackListSingleTrack)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track.get(), trackList1.get());
session.create<TrackListEntry>(track.get(), trackList1.get());
}
{
@@ -74,6 +74,53 @@ TEST_F(DatabaseFixture, SingleTrackListSingleTrack)
}
}
TEST_F(DatabaseFixture, TrackList_SortMethod)
{
ScopedUser user {session, "MyUser"};
ScopedTrackList trackList2 {session, "MyTrackList2", TrackListType::Playlist, false, user.lockAndGet()};
ScopedTrackList trackList1 {session, "MyTrackList1", TrackListType::Playlist, false, user.lockAndGet()};
ScopedTrack track {session, "MyTrack"};
{
auto transaction {session.createSharedTransaction()};
const auto trackLists {TrackList::find(session, TrackList::FindParameters {}.setSortMethod(TrackListSortMethod::Name))};
ASSERT_EQ(trackLists.results.size(), 2);
EXPECT_EQ(trackLists.results[0], trackList1.getId());
EXPECT_EQ(trackLists.results[1], trackList2.getId());
}
{
auto transaction {session.createUniqueTransaction()};
session.create<TrackListEntry>(track.get(), trackList1.get());
}
{
auto transaction {session.createSharedTransaction()};
const auto trackLists {TrackList::find(session, TrackList::FindParameters {}.setSortMethod(TrackListSortMethod::LastModifiedDesc))};
ASSERT_EQ(trackLists.results.size(), 2);
EXPECT_EQ(trackLists.results[0], trackList1.getId());
EXPECT_EQ(trackLists.results[1], trackList2.getId());
}
{
auto transaction {session.createUniqueTransaction()};
session.create<TrackListEntry>(track.get(), trackList2.get());
}
{
auto transaction {session.createSharedTransaction()};
const auto trackLists {TrackList::find(session, TrackList::FindParameters {}.setSortMethod(TrackListSortMethod::LastModifiedDesc))};
ASSERT_EQ(trackLists.results.size(), 2);
EXPECT_EQ(trackLists.results[0], trackList2.getId());
EXPECT_EQ(trackLists.results[1], trackList1.getId());
}
}
TEST_F(DatabaseFixture, SingleTrackListMultipleTrack)
{
ScopedUser user {session, "MyUser"};
@@ -85,7 +132,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrack)
tracks.emplace_back(session, "MyTrack" + std::to_string(i));
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, tracks.back().get(), trackList.get());
session.create<TrackListEntry>(tracks.back().get(), trackList.get());
}
{
@@ -127,9 +174,9 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackDateTime)
{
Wt::WDateTime now {Wt::WDateTime::currentDateTime()};
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get(), now);
TrackListEntry::create(session, track2.get(), trackList.get(), now.addSecs(-1));
TrackListEntry::create(session, track3.get(), trackList.get(), now.addSecs(1));
session.create<TrackListEntry>(track1.get(), trackList.get(), now);
session.create<TrackListEntry>(track2.get(), trackList.get(), now.addSecs(-1));
session.create<TrackListEntry>(track3.get(), trackList.get(), now.addSecs(1));
}
{
@@ -176,7 +223,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get(), now);
session.create<TrackListEntry>(track1.get(), trackList.get(), now);
}
{
@@ -198,7 +245,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track2.get(), trackList.get(), now.addSecs(1));
session.create<TrackListEntry>(track2.get(), trackList.get(), now.addSecs(1));
}
{
@@ -224,7 +271,7 @@ TEST_F(DatabaseFixture, SingleTrackListMultipleTrackRecentlyPlayed)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get(), now.addSecs(2));
session.create<TrackListEntry>(track1.get(), trackList.get(), now.addSecs(2));
}
{
@@ -270,7 +317,7 @@ TEST_F(DatabaseFixture, SingleTrackList_getArtists)
{
auto transaction {session.createUniqueTransaction()};
TrackArtistLink::create(session, track1.get(), artist1.get(), TrackArtistLinkType::Artist);
TrackListEntry::create(session, track1.get(), trackList.get());
session.create<TrackListEntry>(track1.get(), trackList.get());
}
{
@@ -303,7 +350,7 @@ TEST_F(DatabaseFixture, SingleTrackList_getArtists)
{
auto transaction {session.createUniqueTransaction()};
TrackArtistLink::create(session, track2.get(), artist2.get(), TrackArtistLinkType::Artist);
TrackListEntry::create(session, track2.get(), trackList.get());
session.create<TrackListEntry>(track2.get(), trackList.get());
artist1.get().modify()->setSortName("ZZZ");
artist2.get().modify()->setSortName("AAA");
}
@@ -350,7 +397,7 @@ TEST_F(DatabaseFixture, SingleTrackList_getReleases)
track.get().modify()->setRelease(release.get());
TrackListEntry::create(session, track.get(), trackList.get());
session.create<TrackListEntry>(track.get(), trackList.get());
}
{
@@ -382,9 +429,9 @@ TEST_F(DatabaseFixture, SingleTrackList_getTracks)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track1.get(), trackList.get());
TrackListEntry::create(session, track2.get(), trackList.get());
TrackListEntry::create(session, track1.get(), trackList.get());
session.create<TrackListEntry>(track1.get(), trackList.get());
session.create<TrackListEntry>(track2.get(), trackList.get());
session.create<TrackListEntry>(track1.get(), trackList.get());
}
{
@@ -418,7 +465,7 @@ TEST_F(DatabaseFixture, SingleTrackListSingleTrackWithCluster)
{
auto transaction {session.createUniqueTransaction()};
TrackListEntry::create(session, track.get(), trackList1.get());
session.create<TrackListEntry>(track.get(), trackList1.get());
cluster.get().modify()->addTrack(track.get());
}