diff --git a/src/libs/services/artwork/impl/ArtworkService.hpp b/src/libs/services/artwork/impl/ArtworkService.hpp index 58e0c201..ff8fa2f1 100644 --- a/src/libs/services/artwork/impl/ArtworkService.hpp +++ b/src/libs/services/artwork/impl/ArtworkService.hpp @@ -22,7 +22,6 @@ #include #include -#include "database/Types.hpp" #include "image/IEncodedImage.hpp" #include "services/artwork/IArtworkService.hpp" @@ -43,12 +42,12 @@ namespace lms::cover class ArtworkService : public IArtworkService { public: - ArtworkService(db::Db& db, const std::filesystem::path& defaultSvgCoverPath, const std::filesystem::path& defaultArtistImageSvgPath); - - private: + ArtworkService(db::Db& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); + ~ArtworkService() override = default; ArtworkService(const ArtworkService&) = delete; ArtworkService& operator=(const ArtworkService&) = delete; + private: std::shared_ptr getTrackImage(db::TrackId trackId, image::ImageSize width) override; std::shared_ptr getReleaseCover(db::ReleaseId releaseId, image::ImageSize width) override; std::shared_ptr getArtistImage(db::ArtistId artistId, image::ImageSize width) override; diff --git a/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp b/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp index 3d499303..6bb119f0 100644 --- a/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp +++ b/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp @@ -56,6 +56,6 @@ namespace lms::cover virtual void setJpegQuality(unsigned quality) = 0; // from 1 to 100 }; - std::unique_ptr createArtworkService(db::Db& db, const std::filesystem::path& defaultSvgCoverPath, const std::filesystem::path& defaultArtistImageSvgPath); + std::unique_ptr createArtworkService(db::Db& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); } // namespace lms::cover diff --git a/src/libs/services/auth/impl/AuthServiceBase.hpp b/src/libs/services/auth/impl/AuthServiceBase.hpp index bba5f54e..ec066fb1 100644 --- a/src/libs/services/auth/impl/AuthServiceBase.hpp +++ b/src/libs/services/auth/impl/AuthServiceBase.hpp @@ -35,6 +35,9 @@ namespace lms::auth { protected: AuthServiceBase(db::Db& db); + ~AuthServiceBase() = default; + AuthServiceBase(const AuthServiceBase&) = delete; + AuthServiceBase& operator=(const AuthServiceBase&) = delete; db::UserId getOrCreateUser(std::string_view loginName); void onUserAuthenticated(db::UserId userId); diff --git a/src/libs/services/auth/impl/AuthTokenService.cpp b/src/libs/services/auth/impl/AuthTokenService.cpp index 1fceeb1a..da31cbe2 100644 --- a/src/libs/services/auth/impl/AuthTokenService.cpp +++ b/src/libs/services/auth/impl/AuthTokenService.cpp @@ -22,7 +22,6 @@ #include #include -#include "core/Exception.hpp" #include "core/ILogger.hpp" #include "database/AuthToken.hpp" #include "database/Session.hpp" @@ -126,7 +125,7 @@ namespace lms::auth std::shared_lock lock{ _mutex }; if (_loginThrottler.isClientThrottled(clientAddress)) - return AuthTokenProcessResult{ AuthTokenProcessResult::State::Throttled }; + return AuthTokenProcessResult{ .state = AuthTokenProcessResult::State::Throttled, .authTokenInfo = std::nullopt }; } auto res{ processAuthToken(domain, tokenValue) }; @@ -134,17 +133,17 @@ namespace lms::auth std::unique_lock lock{ _mutex }; if (_loginThrottler.isClientThrottled(clientAddress)) - return AuthTokenProcessResult{ AuthTokenProcessResult::State::Throttled }; + return AuthTokenProcessResult{ .state = AuthTokenProcessResult::State::Throttled, .authTokenInfo = std::nullopt }; if (!res) { _loginThrottler.onBadClientAttempt(clientAddress); - return AuthTokenProcessResult{ AuthTokenProcessResult::State::Denied }; + return AuthTokenProcessResult{ .state = AuthTokenProcessResult::State::Denied, .authTokenInfo = std::nullopt }; } _loginThrottler.onGoodClientAttempt(clientAddress); onUserAuthenticated(res->userId); - return AuthTokenProcessResult{ AuthTokenProcessResult::State::Granted, res }; + return AuthTokenProcessResult{ .state = AuthTokenProcessResult::State::Granted, .authTokenInfo = res }; } } diff --git a/src/libs/services/auth/impl/AuthTokenService.hpp b/src/libs/services/auth/impl/AuthTokenService.hpp index 0f4e8e04..c7f3e5c0 100644 --- a/src/libs/services/auth/impl/AuthTokenService.hpp +++ b/src/libs/services/auth/impl/AuthTokenService.hpp @@ -39,6 +39,7 @@ namespace lms::auth public: AuthTokenService(db::Db& db, std::size_t maxThrottlerEntryCount); + ~AuthTokenService() override = default; AuthTokenService(const AuthTokenService&) = delete; AuthTokenService& operator=(const AuthTokenService&) = delete; AuthTokenService(AuthTokenService&&) = delete; diff --git a/src/libs/services/auth/impl/EnvService.cpp b/src/libs/services/auth/impl/EnvService.cpp index 113303c7..486616ad 100644 --- a/src/libs/services/auth/impl/EnvService.cpp +++ b/src/libs/services/auth/impl/EnvService.cpp @@ -25,8 +25,7 @@ namespace lms::auth { - std::unique_ptr - createEnvService(std::string_view backendName, db::Db& db) + std::unique_ptr createEnvService(std::string_view backendName, db::Db& db) { if (backendName == "http-headers") return std::make_unique(db); diff --git a/src/libs/services/auth/impl/LoginThrottler.hpp b/src/libs/services/auth/impl/LoginThrottler.hpp index 42a20fb8..bfa0b360 100644 --- a/src/libs/services/auth/impl/LoginThrottler.hpp +++ b/src/libs/services/auth/impl/LoginThrottler.hpp @@ -24,7 +24,6 @@ #include -#include "core/Exception.hpp" #include "core/NetAddress.hpp" namespace lms::auth @@ -35,6 +34,10 @@ namespace lms::auth LoginThrottler(std::size_t maxEntries) : _maxEntries{ maxEntries } {} + ~LoginThrottler() = default; + LoginThrottler(const LoginThrottler&) = delete; + LoginThrottler& operator=(const LoginThrottler&) = delete; + // user must lock these calls to avoid races bool isClientThrottled(const boost::asio::ip::address& address) const; void onBadClientAttempt(const boost::asio::ip::address& address); diff --git a/src/libs/services/auth/impl/PasswordServiceBase.cpp b/src/libs/services/auth/impl/PasswordServiceBase.cpp index 4a7a8b91..6972a954 100644 --- a/src/libs/services/auth/impl/PasswordServiceBase.cpp +++ b/src/libs/services/auth/impl/PasswordServiceBase.cpp @@ -27,10 +27,8 @@ #include "pam/PAMPasswordService.hpp" #endif // LMS_SUPPORT_PAM -#include "core/Exception.hpp" #include "core/ILogger.hpp" #include "database/Session.hpp" -#include "database/User.hpp" #include "services/auth/Types.hpp" namespace lms::auth @@ -63,7 +61,7 @@ namespace lms::auth std::shared_lock lock{ _mutex }; if (_loginThrottler.isClientThrottled(clientAddress)) - return { CheckResult::State::Throttled }; + return CheckResult{ .state = CheckResult::State::Throttled, .userId = {} }; } const bool match{ checkUserPassword(loginName, password) }; @@ -71,7 +69,7 @@ namespace lms::auth std::unique_lock lock{ _mutex }; if (_loginThrottler.isClientThrottled(clientAddress)) - return { CheckResult::State::Throttled }; + return CheckResult{ .state = CheckResult::State::Throttled, .userId = {} }; if (match) { @@ -79,13 +77,11 @@ namespace lms::auth const db::UserId userId{ getOrCreateUser(loginName) }; onUserAuthenticated(userId); - return { CheckResult::State::Granted, userId }; - } - else - { - _loginThrottler.onBadClientAttempt(clientAddress); - return { CheckResult::State::Denied }; + return CheckResult{ .state = CheckResult::State::Granted, .userId = userId }; } + + _loginThrottler.onBadClientAttempt(clientAddress); + return CheckResult{ .state = CheckResult::State::Denied, .userId = {} }; } } } // namespace lms::auth diff --git a/src/libs/services/auth/impl/PasswordServiceBase.hpp b/src/libs/services/auth/impl/PasswordServiceBase.hpp index ac75290f..8743e707 100644 --- a/src/libs/services/auth/impl/PasswordServiceBase.hpp +++ b/src/libs/services/auth/impl/PasswordServiceBase.hpp @@ -38,6 +38,7 @@ namespace lms::auth public: PasswordServiceBase(db::Db& db, std::size_t maxThrottlerEntries); + ~PasswordServiceBase() override = default; PasswordServiceBase(const PasswordServiceBase&) = delete; PasswordServiceBase& operator=(const PasswordServiceBase&) = delete; PasswordServiceBase(PasswordServiceBase&&) = delete; diff --git a/src/libs/services/auth/impl/internal/InternalPasswordService.hpp b/src/libs/services/auth/impl/internal/InternalPasswordService.hpp index 3f37f2a2..105fd746 100644 --- a/src/libs/services/auth/impl/internal/InternalPasswordService.hpp +++ b/src/libs/services/auth/impl/internal/InternalPasswordService.hpp @@ -38,7 +38,7 @@ namespace lms::auth bool checkUserPassword(std::string_view loginName, std::string_view password) override; bool canSetPasswords() const override; - PasswordAcceptabilityResult checkPasswordAcceptability(std::string_view loginName, const PasswordValidationContext& context) const override; + PasswordAcceptabilityResult checkPasswordAcceptability(std::string_view password, const PasswordValidationContext& context) const override; void setPassword(db::UserId userId, std::string_view newPassword) override; db::User::PasswordHash hashPassword(std::string_view password) const; diff --git a/src/libs/services/auth/impl/pam/PAMPasswordService.cpp b/src/libs/services/auth/impl/pam/PAMPasswordService.cpp index 12cfe99c..b4f6e24a 100644 --- a/src/libs/services/auth/impl/pam/PAMPasswordService.cpp +++ b/src/libs/services/auth/impl/pam/PAMPasswordService.cpp @@ -27,7 +27,6 @@ #include #include "core/ILogger.hpp" -#include "database/Session.hpp" #include "services/auth/Types.hpp" namespace lms::auth @@ -192,7 +191,7 @@ namespace lms::auth throw NotImplementedException{}; } - void PAMPasswordService::setPassword(db::UserId, std::string_view) + void PAMPasswordService::setPassword(db::UserId /*userId*/, std::string_view /*newPassword*/) { throw NotImplementedException{}; } diff --git a/src/libs/services/auth/impl/pam/PAMPasswordService.hpp b/src/libs/services/auth/impl/pam/PAMPasswordService.hpp index 38bb6d53..4429c952 100644 --- a/src/libs/services/auth/impl/pam/PAMPasswordService.hpp +++ b/src/libs/services/auth/impl/pam/PAMPasswordService.hpp @@ -19,8 +19,6 @@ #pragma once -#include - #include "PasswordServiceBase.hpp" namespace lms::auth diff --git a/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp b/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp index e3fea311..12763ac5 100644 --- a/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp +++ b/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -62,7 +61,7 @@ namespace lms::auth }; State state{ State::Denied }; - std::optional authTokenInfo{}; + std::optional authTokenInfo; }; struct DomainParameters diff --git a/src/libs/services/auth/include/services/auth/IEnvService.hpp b/src/libs/services/auth/include/services/auth/IEnvService.hpp index 64f1a41c..23ab73f4 100644 --- a/src/libs/services/auth/include/services/auth/IEnvService.hpp +++ b/src/libs/services/auth/include/services/auth/IEnvService.hpp @@ -19,8 +19,7 @@ #pragma once -#include -#include +#include #include "database/UserId.hpp" diff --git a/src/libs/services/auth/include/services/auth/IPasswordService.hpp b/src/libs/services/auth/include/services/auth/IPasswordService.hpp index 065fcd50..a1a90d68 100644 --- a/src/libs/services/auth/include/services/auth/IPasswordService.hpp +++ b/src/libs/services/auth/include/services/auth/IPasswordService.hpp @@ -19,7 +19,6 @@ #pragma once -#include #include #include @@ -52,7 +51,6 @@ namespace lms::auth }; State state{ State::Denied }; db::UserId userId{}; - std::optional expiry{}; }; virtual CheckResult checkUserPassword(const boost::asio::ip::address& clientAddress, std::string_view loginName, diff --git a/src/libs/services/feedback/impl/FeedbackService.hpp b/src/libs/services/feedback/impl/FeedbackService.hpp index 10cce872..6c5add69 100644 --- a/src/libs/services/feedback/impl/FeedbackService.hpp +++ b/src/libs/services/feedback/impl/FeedbackService.hpp @@ -37,12 +37,11 @@ namespace lms::feedback { public: FeedbackService(boost::asio::io_context& ioContext, db::Db& db); - ~FeedbackService(); - - private: + ~FeedbackService() override; FeedbackService(const FeedbackService&) = delete; FeedbackService& operator=(const FeedbackService&) = delete; + private: void star(db::UserId userId, db::ArtistId artistId) override; void unstar(db::UserId userId, db::ArtistId artistId) override; bool isStarred(db::UserId userId, db::ArtistId artistId) override; @@ -54,8 +53,8 @@ namespace lms::feedback void star(db::UserId userId, db::ReleaseId releaseId) override; void unstar(db::UserId userId, db::ReleaseId releaseId) override; - bool isStarred(db::UserId userId, db::ReleaseId releasedId) override; - Wt::WDateTime getStarredDateTime(db::UserId userId, db::ReleaseId releasedId) override; + bool isStarred(db::UserId userId, db::ReleaseId releaseId) override; + Wt::WDateTime getStarredDateTime(db::UserId userId, db::ReleaseId releaseId) override; ReleaseContainer findStarredReleases(const FindParameters& params) override; void setRating(db::UserId userId, db::ReleaseId releaseId, std::optional rating) override; @@ -70,7 +69,6 @@ namespace lms::feedback void setRating(db::UserId userId, db::TrackId trackId, std::optional rating) override; std::optional getRating(db::UserId userId, db::TrackId trackId) override; - private: std::optional getUserFeedbackBackend(db::UserId userId); template diff --git a/src/libs/services/feedback/impl/IFeedbackBackend.hpp b/src/libs/services/feedback/impl/IFeedbackBackend.hpp index 1d6a6b79..9fbe227e 100644 --- a/src/libs/services/feedback/impl/IFeedbackBackend.hpp +++ b/src/libs/services/feedback/impl/IFeedbackBackend.hpp @@ -30,12 +30,12 @@ namespace lms::feedback public: virtual ~IFeedbackBackend() = default; - virtual void onStarred(db::StarredArtistId) = 0; - virtual void onUnstarred(db::StarredArtistId) = 0; - virtual void onStarred(db::StarredReleaseId) = 0; - virtual void onUnstarred(db::StarredReleaseId) = 0; - virtual void onStarred(db::StarredTrackId) = 0; - virtual void onUnstarred(db::StarredTrackId) = 0; + virtual void onStarred(db::StarredArtistId artistId) = 0; + virtual void onUnstarred(db::StarredArtistId artistId) = 0; + virtual void onStarred(db::StarredReleaseId releaseId) = 0; + virtual void onUnstarred(db::StarredReleaseId releaseId) = 0; + virtual void onStarred(db::StarredTrackId trackId) = 0; + virtual void onUnstarred(db::StarredTrackId trackId) = 0; }; std::unique_ptr createFeedbackBackend(std::string_view backendName); diff --git a/src/libs/services/feedback/impl/internal/InternalBackend.cpp b/src/libs/services/feedback/impl/internal/InternalBackend.cpp index 1fa51022..7d3f1b9a 100644 --- a/src/libs/services/feedback/impl/internal/InternalBackend.cpp +++ b/src/libs/services/feedback/impl/internal/InternalBackend.cpp @@ -53,33 +53,33 @@ namespace lms::feedback { } - void InternalBackend::onStarred(db::StarredArtistId starredArtistId) + void InternalBackend::onStarred(db::StarredArtistId artistId) { - details::onStarred(_db.getTLSSession(), starredArtistId); + details::onStarred(_db.getTLSSession(), artistId); } - void InternalBackend::onUnstarred(db::StarredArtistId starredArtistId) + void InternalBackend::onUnstarred(db::StarredArtistId artistId) { - details::onUnstarred(_db.getTLSSession(), starredArtistId); + details::onUnstarred(_db.getTLSSession(), artistId); } - void InternalBackend::onStarred(db::StarredReleaseId starredReleaseId) + void InternalBackend::onStarred(db::StarredReleaseId releaseId) { - details::onStarred(_db.getTLSSession(), starredReleaseId); + details::onStarred(_db.getTLSSession(), releaseId); } - void InternalBackend::onUnstarred(db::StarredReleaseId starredReleaseId) + void InternalBackend::onUnstarred(db::StarredReleaseId releaseId) { - details::onUnstarred(_db.getTLSSession(), starredReleaseId); + details::onUnstarred(_db.getTLSSession(), releaseId); } - void InternalBackend::onStarred(db::StarredTrackId starredTrackId) + void InternalBackend::onStarred(db::StarredTrackId trackId) { - details::onStarred(_db.getTLSSession(), starredTrackId); + details::onStarred(_db.getTLSSession(), trackId); } - void InternalBackend::onUnstarred(db::StarredTrackId starredTrackId) + void InternalBackend::onUnstarred(db::StarredTrackId trackId) { - details::onUnstarred(_db.getTLSSession(), starredTrackId); + details::onUnstarred(_db.getTLSSession(), trackId); } } // namespace lms::feedback diff --git a/src/libs/services/feedback/impl/internal/InternalBackend.hpp b/src/libs/services/feedback/impl/internal/InternalBackend.hpp index a7447d17..0d41be4e 100644 --- a/src/libs/services/feedback/impl/internal/InternalBackend.hpp +++ b/src/libs/services/feedback/impl/internal/InternalBackend.hpp @@ -32,14 +32,17 @@ namespace lms::feedback { public: InternalBackend(db::Db& db); + ~InternalBackend() override = default; + InternalBackend(const InternalBackend&) = delete; + InternalBackend& operator=(const InternalBackend&) = delete; private: - void onStarred(db::StarredArtistId) override; - void onUnstarred(db::StarredArtistId) override; - void onStarred(db::StarredReleaseId) override; - void onUnstarred(db::StarredReleaseId) override; - void onStarred(db::StarredTrackId) override; - void onUnstarred(db::StarredTrackId) override; + void onStarred(db::StarredArtistId artistId) override; + void onUnstarred(db::StarredArtistId artistId) override; + void onStarred(db::StarredReleaseId releaseId) override; + void onUnstarred(db::StarredReleaseId releaseId) override; + void onStarred(db::StarredTrackId trackId) override; + void onUnstarred(db::StarredTrackId trackId) override; db::Db& _db; }; diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.cpp b/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.cpp index 328cf2a6..5d231141 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.cpp @@ -19,6 +19,8 @@ #include "FeedbackTypes.hpp" +#include + namespace lms::feedback::listenBrainz { std::ostream& operator<<(std::ostream& os, const Feedback& feedback) diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.hpp b/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.hpp index 354b1aa1..3c670340 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.hpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbackTypes.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include #include diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbacksParser.cpp b/src/libs/services/feedback/impl/listenbrainz/FeedbacksParser.cpp index fe6738b6..9c2650ac 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbacksParser.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbacksParser.cpp @@ -38,9 +38,9 @@ namespace lms::feedback::listenBrainz throw Exception{ "MBID not found!" }; return Feedback{ - Wt::WDateTime::fromTime_t(static_cast(feedbackObj.get("created"))), - *recordingMBID, - static_cast(static_cast(feedbackObj.get("score"))) + .created = Wt::WDateTime::fromTime_t(static_cast(feedbackObj.get("created"))), + .recordingMBID = *recordingMBID, + .score = static_cast(static_cast(feedbackObj.get("score"))) }; } } // namespace diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp index 2961858f..f463ce55 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp @@ -251,10 +251,9 @@ namespace lms::feedback::listenBrainz LOG(DEBUG, "getFeedbacks aborted"); return; } - else if (ec) - { + + if (ec) throw Exception{ "GetFeedbacks timer failure: " + std::string{ ec.message() } }; - } startSync(); })); @@ -430,7 +429,8 @@ namespace lms::feedback::listenBrainz LOG(DEBUG, "Too many matches for feedback '" << feedback << "': duplicate recording MBIDs found"); return; } - else if (tracks.empty()) + + if (tracks.empty()) { LOG(DEBUG, "Cannot match feedback '" << feedback << "': no track found for this recording MBID"); return; diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp index 38c01030..0371de51 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp @@ -27,7 +27,6 @@ #include #include "database/StarredTrackId.hpp" -#include "database/Types.hpp" #include "database/UserId.hpp" #include "FeedbackTypes.hpp" @@ -50,12 +49,14 @@ namespace lms::feedback::listenBrainz { public: FeedbacksSynchronizer(boost::asio::io_context& ioContext, db::Db& db, core::http::IClient& client); + ~FeedbacksSynchronizer() = default; + FeedbacksSynchronizer(const FeedbacksSynchronizer&) = delete; + FeedbacksSynchronizer& operator=(const FeedbacksSynchronizer&) = delete; void enqueFeedback(FeedbackType type, db::StarredTrackId starredTrackId); private: void onFeedbackSent(FeedbackType type, db::StarredTrackId starredTrackId); - void enquePendingFeedbacks(); struct UserContext @@ -63,12 +64,13 @@ namespace lms::feedback::listenBrainz UserContext(db::UserId id) : userId{ id } {} + ~UserContext() = default; UserContext(const UserContext&) = delete; UserContext& operator=(const UserContext&) = delete; const db::UserId userId; bool syncing{}; - std::optional feedbackCount{}; + std::optional feedbackCount; // resetted at each sync std::string listenBrainzUserName; // need to be resolved first diff --git a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp index 3789c332..bb7347ad 100644 --- a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp @@ -20,7 +20,6 @@ #include "ListenBrainzBackend.hpp" #include "core/IConfig.hpp" -#include "core/ILogger.hpp" #include "core/Service.hpp" #include "core/http/IClient.hpp" #include "database/Db.hpp" diff --git a/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp b/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp index eb067057..11a8e462 100644 --- a/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp +++ b/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp @@ -133,6 +133,6 @@ namespace lms::feedback virtual std::optional getRating(db::UserId userId, db::TrackId trackId) = 0; }; - std::unique_ptr createFeedbackService(boost::asio::io_service& ioService, db::Db& db); + std::unique_ptr createFeedbackService(boost::asio::io_service& ioContext, db::Db& db); } // namespace lms::feedback diff --git a/src/libs/services/recommendation/impl/RecommendationService.cpp b/src/libs/services/recommendation/impl/RecommendationService.cpp index 333bfdd2..01a96bde 100644 --- a/src/libs/services/recommendation/impl/RecommendationService.cpp +++ b/src/libs/services/recommendation/impl/RecommendationService.cpp @@ -19,11 +19,8 @@ #include "RecommendationService.hpp" -#include #include -#include "core/Exception.hpp" -#include "core/ILogger.hpp" #include "database/Db.hpp" #include "database/ScanSettings.hpp" #include "database/Session.hpp" diff --git a/src/libs/services/recommendation/impl/RecommendationService.hpp b/src/libs/services/recommendation/impl/RecommendationService.hpp index 721acc1a..76a252e2 100644 --- a/src/libs/services/recommendation/impl/RecommendationService.hpp +++ b/src/libs/services/recommendation/impl/RecommendationService.hpp @@ -42,8 +42,7 @@ namespace lms::recommendation { public: RecommendationService(db::Db& db); - ~RecommendationService() = default; - + ~RecommendationService() override= default; RecommendationService(const RecommendationService&) = delete; RecommendationService& operator=(const RecommendationService&) = delete; @@ -51,7 +50,7 @@ namespace lms::recommendation void load() override; TrackContainer findSimilarTracks(db::TrackListId tracklistId, std::size_t maxCount) const override; - TrackContainer findSimilarTracks(const std::vector& tracksId, std::size_t maxCount) const override; + TrackContainer findSimilarTracks(const std::vector& trackIds, std::size_t maxCount) const override; ReleaseContainer getSimilarReleases(db::ReleaseId releaseId, std::size_t maxCount) const override; ArtistContainer getSimilarArtists(db::ArtistId artistId, core::EnumSet linkTypes, std::size_t maxCount) const override; diff --git a/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp b/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp index b1e43fad..662d9da6 100644 --- a/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp +++ b/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp @@ -45,7 +45,7 @@ namespace lms::recommendation Session& dbSession{ _db.getTLSSession() }; auto transaction{ dbSession.createReadTransaction() }; - const auto similarTrackIds{ Track::findSimilarTrackIds(dbSession, trackIds, Range{ 0, maxCount }) }; + auto similarTrackIds{ Track::findSimilarTrackIds(dbSession, trackIds, Range{ 0, maxCount }) }; return std::move(similarTrackIds.results); } @@ -105,7 +105,7 @@ namespace lms::recommendation if (!artist) return {}; - const auto similarArtistIds{ artist->findSimilarArtistIds(artistLinkTypes, Range{ 0, maxCount }) }; + auto similarArtistIds{ artist->findSimilarArtistIds(artistLinkTypes, Range{ 0, maxCount }) }; return std::move(similarArtistIds.results); } diff --git a/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp b/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp index 4d019ccd..7cf50846 100644 --- a/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp +++ b/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp @@ -30,17 +30,18 @@ namespace lms::recommendation ClusterEngine(db::Db& db) : _db{ db } {} + ~ClusterEngine() override = default; ClusterEngine(const ClusterEngine&) = delete; ClusterEngine(ClusterEngine&&) = delete; ClusterEngine& operator=(const ClusterEngine&) = delete; ClusterEngine& operator=(ClusterEngine&&) = delete; private: - void load(bool, const ProgressCallback&) override {} + void load(bool /*forceReload*/, const ProgressCallback& /*progressCallback*/) override {} void requestCancelLoad() override {} TrackContainer findSimilarTracksFromTrackList(db::TrackListId tracklistId, std::size_t maxCount) const override; - TrackContainer findSimilarTracks(const std::vector& tracksId, std::size_t maxCount) const override; + TrackContainer findSimilarTracks(const std::vector& trackIds, std::size_t maxCount) const override; ReleaseContainer getSimilarReleases(db::ReleaseId releaseId, std::size_t maxCount) const override; ArtistContainer getSimilarArtists(db::ArtistId artistId, core::EnumSet linkTypes, std::size_t maxCount) const override; diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp index 0174a972..731cddd8 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp @@ -21,7 +21,6 @@ #include -#include "core/ILogger.hpp" #include "database/Db.hpp" #include "database/Release.hpp" #include "database/Session.hpp" diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp index 2ae75144..15ce02f4 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp @@ -21,8 +21,6 @@ #include "IConstraint.hpp" -#include "database/ReleaseId.hpp" - namespace lms::db { class Db; @@ -34,6 +32,9 @@ namespace lms::recommendation::PlaylistGeneratorConstraint { public: ConsecutiveArtists(db::Db& db); + ~ConsecutiveArtists() override = default; + ConsecutiveArtists(const ConsecutiveArtists&) = delete; + ConsecutiveArtists& operator=(const ConsecutiveArtists&) = delete; private: float computeScore(const TrackContainer& trackIds, std::size_t trackIndex) override; diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp index ab14bbc4..9e072f07 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp @@ -19,7 +19,6 @@ #include "ConsecutiveReleases.hpp" -#include "core/ILogger.hpp" #include "database/Db.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -46,10 +45,10 @@ namespace lms::recommendation::PlaylistGeneratorConstraint for (std::size_t i{ 1 }; i < rangeSize; ++i) { if ((trackIndex >= i) && getReleaseId(trackIds[trackIndex - i]) == releaseId) - score += (1.f / static_cast(i)); + score += (1.F / static_cast(i)); if ((trackIndex + i < trackIds.size()) && getReleaseId(trackIds[trackIndex + i]) == releaseId) - score += (1.f / static_cast(i)); + score += (1.F / static_cast(i)); } return score; diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp index fc997a72..11480ae7 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp @@ -34,6 +34,9 @@ namespace lms::recommendation::PlaylistGeneratorConstraint { public: ConsecutiveReleases(db::Db& db); + ~ConsecutiveReleases() override = default; + ConsecutiveReleases(const ConsecutiveReleases&) = delete; + ConsecutiveReleases& operator=(const ConsecutiveReleases&) = delete; private: float computeScore(const std::vector& trackIds, std::size_t trackIndex) override; diff --git a/src/libs/services/recommendation/impl/playlist-constraints/DuplicateTracks.cpp b/src/libs/services/recommendation/impl/playlist-constraints/DuplicateTracks.cpp index 8c61f970..50f48980 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/DuplicateTracks.cpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/DuplicateTracks.cpp @@ -26,6 +26,6 @@ namespace lms::recommendation::PlaylistGeneratorConstraint float DuplicateTracks::computeScore(const std::vector& trackIds, std::size_t trackIndex) { const auto count{ std::count(std::cbegin(trackIds), std::cend(trackIds), trackIds[trackIndex]) }; - return count == 1 ? 0 : 1000; + return count == 1 ? 0 : 1'000; } } // namespace lms::recommendation::PlaylistGeneratorConstraint diff --git a/src/libs/services/recommendation/impl/playlist-constraints/IConstraint.hpp b/src/libs/services/recommendation/impl/playlist-constraints/IConstraint.hpp index cf5119fb..1d01c299 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/IConstraint.hpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/IConstraint.hpp @@ -19,8 +19,6 @@ #pragma once -#include - #include "services/recommendation/Types.hpp" namespace lms::recommendation::PlaylistGeneratorConstraint diff --git a/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp b/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp index 0676f13f..58bda161 100644 --- a/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp +++ b/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp @@ -22,7 +22,6 @@ #include #include "database/TrackListId.hpp" -#include "database/Types.hpp" #include "services/recommendation/Types.hpp" namespace lms::db @@ -42,5 +41,5 @@ namespace lms::recommendation virtual TrackContainer extendPlaylist(db::TrackListId tracklistId, std::size_t maxCount) const = 0; }; - std::unique_ptr createPlaylistGeneratorService(db::Db& db, IRecommendationService& recommandationService); + std::unique_ptr createPlaylistGeneratorService(db::Db& db, IRecommendationService& recommendationService); } // namespace lms::recommendation diff --git a/src/libs/services/scanner/impl/FileScanQueue.cpp b/src/libs/services/scanner/impl/FileScanQueue.cpp index 0fcdf95f..40f6c0e0 100644 --- a/src/libs/services/scanner/impl/FileScanQueue.cpp +++ b/src/libs/services/scanner/impl/FileScanQueue.cpp @@ -21,11 +21,8 @@ #include -#include "core/Exception.hpp" -#include "core/IConfig.hpp" #include "core/ILogger.hpp" #include "core/ITraceLogger.hpp" -#include "core/Path.hpp" #include "image/Exception.hpp" #include "image/Image.hpp" #include "metadata/Exception.hpp" diff --git a/src/libs/services/scanner/impl/FileScanQueue.hpp b/src/libs/services/scanner/impl/FileScanQueue.hpp index 5503c034..e97f08f0 100644 --- a/src/libs/services/scanner/impl/FileScanQueue.hpp +++ b/src/libs/services/scanner/impl/FileScanQueue.hpp @@ -23,7 +23,6 @@ #include #include #include -#include #include #include diff --git a/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.cpp b/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.cpp index 33729986..18d34bd0 100644 --- a/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.cpp +++ b/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include "core/IConfig.hpp" #include "core/ILogger.hpp" @@ -33,8 +34,6 @@ #include "database/Image.hpp" #include "database/Session.hpp" #include "database/Track.hpp" -#include "image/Exception.hpp" -#include "image/Image.hpp" namespace lms::scanner { @@ -55,7 +54,7 @@ namespace lms::scanner db::Session& session; db::ArtistId lastRetrievedArtistId; std::size_t processedArtistCount{}; - const std::vector& artistFileNames; + std::span artistFileNames; }; db::Image::pointer findImageInDirectory(SearchImageContext& searchContext, const std::filesystem::path& directoryPath) diff --git a/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.hpp b/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.hpp index 4d65399d..b041f65a 100644 --- a/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.hpp +++ b/src/libs/services/scanner/impl/ScanStepAssociateArtistImages.hpp @@ -30,6 +30,9 @@ namespace lms::scanner { public: ScanStepAssociateArtistImages(InitParams& initParams); + ~ScanStepAssociateArtistImages() override = default; + ScanStepAssociateArtistImages(const ScanStepAssociateArtistImages&) = delete; + ScanStepAssociateArtistImages& operator=(const ScanStepAssociateArtistImages&) = delete; private: ScanStep getStep() const override { return ScanStep::AssociateArtistImages; } diff --git a/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.cpp b/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.cpp index 891eea6f..cefb76ec 100644 --- a/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.cpp +++ b/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.cpp @@ -33,8 +33,6 @@ #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" -#include "image/Exception.hpp" -#include "image/Image.hpp" namespace lms::scanner { diff --git a/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.hpp b/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.hpp index 0b4c9ee8..abf8a62f 100644 --- a/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.hpp +++ b/src/libs/services/scanner/impl/ScanStepAssociateReleaseImages.hpp @@ -30,6 +30,9 @@ namespace lms::scanner { public: ScanStepAssociateReleaseImages(InitParams& initParams); + ~ScanStepAssociateReleaseImages() override = default; + ScanStepAssociateReleaseImages(const ScanStepAssociateReleaseImages&) = delete; + ScanStepAssociateReleaseImages& operator=(const ScanStepAssociateReleaseImages&) = delete; private: ScanStep getStep() const override { return ScanStep::AssociateReleaseImages; } diff --git a/src/libs/services/scanner/impl/ScanStepBase.hpp b/src/libs/services/scanner/impl/ScanStepBase.hpp index a530dc1d..eea8339d 100644 --- a/src/libs/services/scanner/impl/ScanStepBase.hpp +++ b/src/libs/services/scanner/impl/ScanStepBase.hpp @@ -55,6 +55,8 @@ namespace lms::scanner } protected: + ~ScanStepBase() override = default; + const ScannerSettings& _settings; ProgressCallback _progressCallback; bool& _abortScan; diff --git a/src/libs/services/scanner/impl/ScanStepComputeClusterStats.cpp b/src/libs/services/scanner/impl/ScanStepComputeClusterStats.cpp index bc2f99b1..f776c6eb 100644 --- a/src/libs/services/scanner/impl/ScanStepComputeClusterStats.cpp +++ b/src/libs/services/scanner/impl/ScanStepComputeClusterStats.cpp @@ -19,7 +19,6 @@ #include "ScanStepComputeClusterStats.hpp" #include "core/ILogger.hpp" -#include "core/Path.hpp" #include "database/Cluster.hpp" #include "database/Db.hpp" #include "database/Session.hpp" diff --git a/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.cpp b/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.cpp index 9cc84ab9..8cd5dfdc 100644 --- a/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.cpp +++ b/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.cpp @@ -20,7 +20,6 @@ #include "ScanStepRemoveOrphanedDbEntries.hpp" #include "core/ILogger.hpp" -#include "core/Path.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" #include "database/Db.hpp" diff --git a/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.hpp b/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.hpp index 90346c98..f53a6b87 100644 --- a/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.hpp +++ b/src/libs/services/scanner/impl/ScanStepRemoveOrphanedDbEntries.hpp @@ -19,8 +19,6 @@ #pragma once -#include - #include "ScanStepBase.hpp" namespace lms::scanner diff --git a/src/libs/services/scanner/impl/ScanStepScanFiles.cpp b/src/libs/services/scanner/impl/ScanStepScanFiles.cpp index 1126959a..f930370d 100644 --- a/src/libs/services/scanner/impl/ScanStepScanFiles.cpp +++ b/src/libs/services/scanner/impl/ScanStepScanFiles.cpp @@ -36,7 +36,6 @@ #include "database/TrackArtistLink.hpp" #include "database/TrackFeatures.hpp" #include "database/TrackLyrics.hpp" -#include "metadata/Exception.hpp" #include "metadata/IParser.hpp" namespace lms::scanner @@ -391,9 +390,9 @@ namespace lms::scanner if (readStyle == "fast") return metadata::ParserReadStyle::Fast; - else if (readStyle == "average") + if (readStyle == "average") return metadata::ParserReadStyle::Average; - else if (readStyle == "accurate") + if (readStyle == "accurate") return metadata::ParserReadStyle::Accurate; throw core::LmsException{ "Invalid value for 'scanner-parser-read-style'" }; @@ -888,16 +887,9 @@ namespace lms::scanner return; } - bool added; + const bool added{ !image }; if (!image) - { image = dbSession.create(file); - added = true; - } - else - { - added = false; - } image.modify()->setLastWriteTime(fileInfo->lastWriteTime); image.modify()->setFileSize(fileInfo->fileSize); @@ -945,16 +937,11 @@ namespace lms::scanner return; } - bool added; + const bool added{ !trackLyrics }; if (!trackLyrics) { trackLyrics = dbSession.create(); trackLyrics.modify()->setAbsoluteFilePath(file); - added = true; - } - else - { - added = false; } trackLyrics.modify()->setLastWriteTime(fileInfo->lastWriteTime); diff --git a/src/libs/services/scanner/impl/ScanStepScanFiles.hpp b/src/libs/services/scanner/impl/ScanStepScanFiles.hpp index 01041114..372c3301 100644 --- a/src/libs/services/scanner/impl/ScanStepScanFiles.hpp +++ b/src/libs/services/scanner/impl/ScanStepScanFiles.hpp @@ -47,9 +47,9 @@ namespace lms::scanner bool checkLyricsFileNeedScan(ScanContext& context, const std::filesystem::path& file); void processFileScanResults(ScanContext& context, std::span scanResults, const ScannerSettings::MediaLibraryInfo& libraryInfo); - void processAudioFileScanData(ScanContext& context, const std::filesystem::path& path, const metadata::Track* trackMetadata, const ScannerSettings::MediaLibraryInfo& libraryInfo); - void processImageFileScanData(ScanContext& context, const std::filesystem::path& path, const ImageInfo* imageInfo, const ScannerSettings::MediaLibraryInfo& libraryInfo); - void processLyricsFileScanData(ScanContext& context, const std::filesystem::path& path, const metadata::Lyrics* lyrics, const ScannerSettings::MediaLibraryInfo& libraryInfo); + void processAudioFileScanData(ScanContext& context, const std::filesystem::path& file, const metadata::Track* trackMetadata, const ScannerSettings::MediaLibraryInfo& libraryInfo); + void processImageFileScanData(ScanContext& context, const std::filesystem::path& file, const ImageInfo* imageInfo, const ScannerSettings::MediaLibraryInfo& libraryInfo); + void processLyricsFileScanData(ScanContext& context, const std::filesystem::path& file, const metadata::Lyrics* lyrics, const ScannerSettings::MediaLibraryInfo& libraryInfo); std::unique_ptr _metadataParser; const std::vector _extraTagsToParse; diff --git a/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.cpp b/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.cpp index 3520e7f4..d9a0ec34 100644 --- a/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.cpp +++ b/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.cpp @@ -19,8 +19,6 @@ #include "ScanStepUpdateLibraryFields.hpp" -#include "core/ILogger.hpp" -#include "core/Path.hpp" #include "database/Db.hpp" #include "database/Directory.hpp" #include "database/MediaLibrary.hpp" diff --git a/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.hpp b/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.hpp index 6bdfc9b2..dc671abe 100644 --- a/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.hpp +++ b/src/libs/services/scanner/impl/ScanStepUpdateLibraryFields.hpp @@ -19,8 +19,6 @@ #pragma once -#include "database/DirectoryId.hpp" - #include "ScanStepBase.hpp" namespace lms::scanner diff --git a/src/libs/services/scanner/impl/ScannerService.cpp b/src/libs/services/scanner/impl/ScannerService.cpp index afb82f32..f691aede 100644 --- a/src/libs/services/scanner/impl/ScannerService.cpp +++ b/src/libs/services/scanner/impl/ScannerService.cpp @@ -21,11 +21,9 @@ #include -#include "core/Exception.hpp" #include "core/IConfig.hpp" #include "core/ILogger.hpp" #include "core/ITraceLogger.hpp" -#include "core/Path.hpp" #include "database/MediaLibrary.hpp" #include "database/ScanSettings.hpp" #include "database/TrackFeatures.hpp" diff --git a/src/libs/services/scanner/impl/ScannerService.hpp b/src/libs/services/scanner/impl/ScannerService.hpp index 3f4a57aa..58a59aed 100644 --- a/src/libs/services/scanner/impl/ScannerService.hpp +++ b/src/libs/services/scanner/impl/ScannerService.hpp @@ -31,10 +31,8 @@ #include "IScanStep.hpp" #include "ScannerSettings.hpp" -#include "core/Path.hpp" #include "database/Db.hpp" #include "database/Session.hpp" -#include "database/Types.hpp" #include "services/scanner/IScannerService.hpp" namespace lms::scanner @@ -44,11 +42,10 @@ namespace lms::scanner public: ScannerService(db::Db& db); ~ScannerService() override; - - private: ScannerService(const ScannerService&) = delete; ScannerService& operator=(const ScannerService&) = delete; + private: void requestReload() override; void requestImmediateScan(const ScanOptions& scanOptions) override; @@ -83,7 +80,7 @@ namespace lms::scanner Wt::WIOService _ioService; boost::asio::system_timer _scheduleTimer{ _ioService }; Events _events; - std::chrono::system_clock::time_point _lastScanInProgressEmit{}; + std::chrono::system_clock::time_point _lastScanInProgressEmit; db::Db& _db; mutable std::shared_mutex _statusMutex; diff --git a/src/tools/recommendation/LmsRecommendation.cpp b/src/tools/recommendation/LmsRecommendation.cpp index cf44404b..c2e45a5e 100644 --- a/src/tools/recommendation/LmsRecommendation.cpp +++ b/src/tools/recommendation/LmsRecommendation.cpp @@ -58,9 +58,9 @@ namespace lms res += track->getName(); if (track->getRelease()) res += " [" + std::string{ track->getRelease()->getName() } + "]"; - for (auto artist : track->getArtists({ TrackArtistLinkType::Artist })) + for (const auto& artist : track->getArtists({ TrackArtistLinkType::Artist })) res += " - " + artist->getName(); - for (auto cluster : track->getClusters()) + for (const auto& cluster : track->getClusters()) res += " {" + std::string{ cluster->getType()->getName() } + "-" + std::string{ cluster->getName() } + "}"; return res;