From 1c29962606e8213366aae29698a0a9256e79b149 Mon Sep 17 00:00:00 2001 From: emeric Date: Sun, 10 Oct 2021 20:37:27 +0200 Subject: [PATCH] Fixed regression on db object comparison, fixes #178 --- src/libs/database/include/database/Types.hpp | 2 ++ src/libs/database/test/Track.cpp | 14 ++++++++++++++ src/lms/ui/admin/UsersView.cpp | 6 +++--- 3 files changed, 19 insertions(+), 3 deletions(-) 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);