diff --git a/src/libs/database/include/database/Types.hpp b/src/libs/database/include/database/Types.hpp index c2fb4146..f89a3eb7 100644 --- a/src/libs/database/include/database/Types.hpp +++ b/src/libs/database/include/database/Types.hpp @@ -105,6 +105,8 @@ namespace Database const T* operator->() const { return _obj.get(); } operator bool() const { return _obj.get(); } bool operator!() const { return !_obj.get(); } + bool operator==(const ObjectPtr& other) const { return other._obj == _obj; } + bool operator!=(const ObjectPtr& other) const { return other._obj != _obj; } auto modify() { return _obj.modify(); } void remove() { _obj.remove(); } diff --git a/src/libs/database/test/Track.cpp b/src/libs/database/test/Track.cpp index bdc54855..98934310 100644 --- a/src/libs/database/test/Track.cpp +++ b/src/libs/database/test/Track.cpp @@ -45,6 +45,20 @@ TEST_F(DatabaseFixture, SingleTrack) } } +TEST_F(DatabaseFixture, MultipleTracks) +{ + ScopedTrack track1 {session, "MyTrackFile1"}; + ScopedTrack track2 {session, "MyTrackFile2"}; + + { + auto transaction {session.createSharedTransaction()}; + + EXPECT_TRUE(track1.getId() != track2.getId()); + EXPECT_TRUE(track1.get() != track2.get()); + EXPECT_FALSE(track1.get() == track2.get()); + } +} + TEST_F(DatabaseFixture, MultipleTracksSearchByFilter) { ScopedTrack track1 {session, ""}; diff --git a/src/lms/ui/admin/UsersView.cpp b/src/lms/ui/admin/UsersView.cpp index 50bc58e7..b0608d81 100644 --- a/src/lms/ui/admin/UsersView.cpp +++ b/src/lms/ui/admin/UsersView.cpp @@ -69,8 +69,8 @@ UsersView::refreshView() auto transaction {LmsApp->getDbSession().createSharedTransaction()}; - auto users = Database::User::getAll(LmsApp->getDbSession()); - for (const auto& user : users) + const Database::User::pointer currentUser {LmsApp->getUser()}; + for (const Database::User::pointer& user : Database::User::getAll(LmsApp->getDbSession())) { const Database::UserId userId {user->getId()}; @@ -86,7 +86,7 @@ UsersView::refreshView() } // Don't edit ourself this way - if (LmsApp->getUser() == user) + if (currentUser == user) continue; entry->setCondition("if-edit", true);