diff --git a/src/libs/database/impl/Db.cpp b/src/libs/database/impl/Db.cpp index 0bb7e46a..91787a7e 100644 --- a/src/libs/database/impl/Db.cpp +++ b/src/libs/database/impl/Db.cpp @@ -17,8 +17,6 @@ * along with LMS. If not, see . */ -#include "database/Db.hpp" - #include #include @@ -31,6 +29,8 @@ #include "database/Session.hpp" #include "database/User.hpp" +#include "Db.hpp" + namespace lms::db { namespace @@ -134,6 +134,11 @@ namespace lms::db } } // namespace + std::unique_ptr createDb(const std::filesystem::path& dbPath, std::size_t connectionCount) + { + return std::make_unique(dbPath, connectionCount); + } + // Session living class handling the database and the login Db::Db(const std::filesystem::path& dbPath, std::size_t connectionCount) { diff --git a/src/libs/database/include/database/Db.hpp b/src/libs/database/impl/Db.hpp similarity index 91% rename from src/libs/database/include/database/Db.hpp rename to src/libs/database/impl/Db.hpp index 352bdf03..60002d26 100644 --- a/src/libs/database/include/database/Db.hpp +++ b/src/libs/database/impl/Db.hpp @@ -19,23 +19,25 @@ #pragma once -#include +#include +#include #include #include "core/RecursiveSharedMutex.hpp" +#include "database/IDb.hpp" + namespace lms::db { - class Session; - class Db + class Db : public IDb { public: - Db(const std::filesystem::path& dbPath, std::size_t connectionCount = 10); + Db(const std::filesystem::path& dbPath, std::size_t connectionCount); - Session& getTLSSession(); + Session& getTLSSession() override; - void executeSql(const std::string& sql); + void executeSql(const std::string& sql) override; private: Db(const Db&) = delete; diff --git a/src/libs/database/impl/Migration.cpp b/src/libs/database/impl/Migration.cpp index 2d1752bc..d6664c87 100644 --- a/src/libs/database/impl/Migration.cpp +++ b/src/libs/database/impl/Migration.cpp @@ -24,11 +24,11 @@ #include "core/Exception.hpp" #include "core/ILogger.hpp" #include "core/ITraceLogger.hpp" -#include "database/Db.hpp" #include "database/ScanSettings.hpp" #include "database/Session.hpp" #include "database/User.hpp" +#include "Db.hpp" #include "Utils.hpp" namespace lms::db @@ -67,7 +67,7 @@ namespace lms::db::Migration class ScopedNoForeignKeys { public: - ScopedNoForeignKeys(Db& db) + ScopedNoForeignKeys(IDb& db) : _db{ db } { _db.executeSql("PRAGMA foreign_keys=OFF"); @@ -83,7 +83,7 @@ namespace lms::db::Migration ScopedNoForeignKeys& operator=(const ScopedNoForeignKeys&) = delete; ScopedNoForeignKeys& operator=(ScopedNoForeignKeys&&) = delete; - Db& _db; + IDb& _db; }; namespace diff --git a/src/libs/database/impl/Session.cpp b/src/libs/database/impl/Session.cpp index 4e0c841d..3ebcebc7 100644 --- a/src/libs/database/impl/Session.cpp +++ b/src/libs/database/impl/Session.cpp @@ -26,7 +26,6 @@ #include "database/Artwork.hpp" #include "database/AuthToken.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" #include "database/Image.hpp" #include "database/Listen.hpp" @@ -53,6 +52,7 @@ #include "database/UIState.hpp" #include "database/User.hpp" +#include "Db.hpp" #include "Migration.hpp" #include "Utils.hpp" #include "traits/EnumSetTraits.hpp" @@ -96,10 +96,10 @@ namespace lms::db #endif } - Session::Session(Db& db) + Session::Session(IDb& db) : _db{ db } { - _session.setConnectionPool(_db.getConnectionPool()); + _session.setConnectionPool(static_cast(_db).getConnectionPool()); _session.mapClass("artist"); _session.mapClass("artist_info"); @@ -140,7 +140,7 @@ namespace lms::db WriteTransaction Session::createWriteTransaction() { - return WriteTransaction{ _db.getMutex(), _session }; + return WriteTransaction{ static_cast(_db).getMutex(), _session }; } ReadTransaction Session::createReadTransaction() @@ -359,7 +359,7 @@ namespace lms::db // We manually take a lock here since vacuum cannot be inside a transaction { - std::unique_lock lock{ _db.getMutex() }; + std::unique_lock lock{ static_cast(_db).getMutex() }; _db.executeSql("VACUUM"); } diff --git a/src/libs/database/include/database/IDb.hpp b/src/libs/database/include/database/IDb.hpp new file mode 100644 index 00000000..1823275a --- /dev/null +++ b/src/libs/database/include/database/IDb.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2019 Emeric Poupon + * + * This file is part of LMS. + * + * LMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with LMS. If not, see . + */ + +#pragma once + +#include +#include + +namespace lms::db +{ + class Session; + class IDb + { + public: + virtual ~IDb() = default; + + virtual Session& getTLSSession() = 0; + + virtual void executeSql(const std::string& sql) = 0; // TODO make this private + }; + + std::unique_ptr createDb(const std::filesystem::path& dbPath, std::size_t connectionCount = 10); +} // namespace lms::db diff --git a/src/libs/database/include/database/Session.hpp b/src/libs/database/include/database/Session.hpp index 88b0c7d9..82586461 100644 --- a/src/libs/database/include/database/Session.hpp +++ b/src/libs/database/include/database/Session.hpp @@ -65,11 +65,11 @@ namespace lms::db Wt::Dbo::Transaction _transaction; }; - class Db; + class IDb; class Session { public: - Session(Db& db); + Session(IDb& db); ~Session() = default; Session(const Session&) = delete; Session& operator=(const Session&) = delete; @@ -111,7 +111,7 @@ namespace lms::db { return &_session; } - Db& getDb() + IDb& getDb() { return _db; } @@ -146,7 +146,7 @@ namespace lms::db private: void execute(std::string_view query, long long id); - Db& _db; + IDb& _db; Wt::Dbo::Session _session; }; } // namespace lms::db diff --git a/src/libs/database/test/Common.cpp b/src/libs/database/test/Common.cpp index 2a59b829..7817b3dc 100644 --- a/src/libs/database/test/Common.cpp +++ b/src/libs/database/test/Common.cpp @@ -19,7 +19,6 @@ #include "Common.hpp" -#include "database/Db.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Types.hpp" @@ -29,13 +28,13 @@ namespace lms::db::tests TmpDatabase::TmpDatabase() : _tmpFile{ std::tmpnam(nullptr) } , _fileDeleter{ _tmpFile } - , _db{ _tmpFile } + , _db{ createDb(_tmpFile) } { } - db::Db& TmpDatabase::getDb() + db::IDb& TmpDatabase::getDb() { - return _db; + return *_db; } DatabaseFixture::~DatabaseFixture() diff --git a/src/libs/database/test/Common.hpp b/src/libs/database/test/Common.hpp index 45f53db5..1c7d92fc 100644 --- a/src/libs/database/test/Common.hpp +++ b/src/libs/database/test/Common.hpp @@ -26,7 +26,7 @@ #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Listen.hpp" #include "database/MediaLibrary.hpp" #include "database/Release.hpp" @@ -131,12 +131,12 @@ namespace lms::db::tests public: TmpDatabase(); - db::Db& getDb(); + IDb& getDb(); private: const std::filesystem::path _tmpFile; ScopedFileDeleter _fileDeleter; - db::Db _db; + std::unique_ptr _db; }; class DatabaseFixture : public ::testing::Test diff --git a/src/libs/database/test/Migration.cpp b/src/libs/database/test/Migration.cpp index da3b66d4..84c78238 100644 --- a/src/libs/database/test/Migration.cpp +++ b/src/libs/database/test/Migration.cpp @@ -23,7 +23,6 @@ #include "database/Artist.hpp" #include "database/ArtistInfo.hpp" #include "database/AuthToken.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" #include "database/Image.hpp" #include "database/PlayListFile.hpp" diff --git a/src/libs/services/artwork/impl/ArtworkService.cpp b/src/libs/services/artwork/impl/ArtworkService.cpp index fa3a7467..23b697db 100644 --- a/src/libs/services/artwork/impl/ArtworkService.cpp +++ b/src/libs/services/artwork/impl/ArtworkService.cpp @@ -24,7 +24,7 @@ #include "core/Utils.hpp" #include "database/Artist.hpp" #include "database/Artwork.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Image.hpp" #include "database/ImageId.hpp" #include "database/Release.hpp" @@ -40,12 +40,12 @@ namespace lms::artwork { - std::unique_ptr createArtworkService(db::Db& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath) + std::unique_ptr createArtworkService(db::IDb& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath) { return std::make_unique(db, defaultReleaseCoverSvgPath, defaultArtistImageSvgPath); } - ArtworkService::ArtworkService(db::Db& db, + ArtworkService::ArtworkService(db::IDb& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath) : _db{ db } diff --git a/src/libs/services/artwork/impl/ArtworkService.hpp b/src/libs/services/artwork/impl/ArtworkService.hpp index a0aa24d5..f08b8a6d 100644 --- a/src/libs/services/artwork/impl/ArtworkService.hpp +++ b/src/libs/services/artwork/impl/ArtworkService.hpp @@ -43,7 +43,7 @@ namespace lms::artwork class ArtworkService : public IArtworkService { public: - ArtworkService(db::Db& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); + ArtworkService(db::IDb& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); ~ArtworkService() override; ArtworkService(const ArtworkService&) = delete; ArtworkService& operator=(const ArtworkService&) = delete; @@ -65,7 +65,7 @@ namespace lms::artwork std::unique_ptr getFromImageFile(const std::filesystem::path& p, std::optional width) const; std::unique_ptr getTrackImage(const std::filesystem::path& path, std::size_t index, std::optional width) const; - db::Db& _db; + db::IDb& _db; std::unique_ptr _audioFileParser; ImageCache _cache; diff --git a/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp b/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp index 4d8c1605..7577f640 100644 --- a/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp +++ b/src/libs/services/artwork/include/services/artwork/IArtworkService.hpp @@ -29,7 +29,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::artwork @@ -54,6 +54,6 @@ namespace lms::artwork virtual void setJpegQuality(unsigned quality) = 0; // from 1 to 100 }; - std::unique_ptr createArtworkService(db::Db& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); + std::unique_ptr createArtworkService(db::IDb& db, const std::filesystem::path& defaultReleaseCoverSvgPath, const std::filesystem::path& defaultArtistImageSvgPath); } // namespace lms::artwork diff --git a/src/libs/services/auth/impl/AuthServiceBase.cpp b/src/libs/services/auth/impl/AuthServiceBase.cpp index 3dfed8d2..9164716a 100644 --- a/src/libs/services/auth/impl/AuthServiceBase.cpp +++ b/src/libs/services/auth/impl/AuthServiceBase.cpp @@ -20,7 +20,7 @@ #include "AuthServiceBase.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/User.hpp" @@ -28,7 +28,7 @@ namespace lms::auth { using namespace db; - AuthServiceBase::AuthServiceBase(Db& db) + AuthServiceBase::AuthServiceBase(db::IDb& db) : _db{ db } { } diff --git a/src/libs/services/auth/impl/AuthServiceBase.hpp b/src/libs/services/auth/impl/AuthServiceBase.hpp index ec066fb1..4b9956b1 100644 --- a/src/libs/services/auth/impl/AuthServiceBase.hpp +++ b/src/libs/services/auth/impl/AuthServiceBase.hpp @@ -25,7 +25,7 @@ namespace lms::db { - class Db; + class IDb; class Session; } // namespace lms::db @@ -34,7 +34,7 @@ namespace lms::auth class AuthServiceBase { protected: - AuthServiceBase(db::Db& db); + AuthServiceBase(db::IDb& db); ~AuthServiceBase() = default; AuthServiceBase(const AuthServiceBase&) = delete; AuthServiceBase& operator=(const AuthServiceBase&) = delete; @@ -45,6 +45,6 @@ namespace lms::auth db::Session& getDbSession(); private: - db::Db& _db; + db::IDb& _db; }; } // namespace lms::auth diff --git a/src/libs/services/auth/impl/AuthTokenService.cpp b/src/libs/services/auth/impl/AuthTokenService.cpp index da31cbe2..2e1fca8f 100644 --- a/src/libs/services/auth/impl/AuthTokenService.cpp +++ b/src/libs/services/auth/impl/AuthTokenService.cpp @@ -44,12 +44,12 @@ namespace lms::auth } } // namespace - std::unique_ptr createAuthTokenService(db::Db& db, std::size_t maxThrottlerEntryCount) + std::unique_ptr createAuthTokenService(db::IDb& db, std::size_t maxThrottlerEntryCount) { return std::make_unique(db, maxThrottlerEntryCount); } - AuthTokenService::AuthTokenService(db::Db& db, std::size_t maxThrottlerEntryCount) + AuthTokenService::AuthTokenService(db::IDb& db, std::size_t maxThrottlerEntryCount) : AuthServiceBase{ db } , _loginThrottler{ maxThrottlerEntryCount } { diff --git a/src/libs/services/auth/impl/AuthTokenService.hpp b/src/libs/services/auth/impl/AuthTokenService.hpp index c7f3e5c0..c0206774 100644 --- a/src/libs/services/auth/impl/AuthTokenService.hpp +++ b/src/libs/services/auth/impl/AuthTokenService.hpp @@ -37,7 +37,7 @@ namespace lms::auth class AuthTokenService : public IAuthTokenService, public AuthServiceBase { public: - AuthTokenService(db::Db& db, std::size_t maxThrottlerEntryCount); + AuthTokenService(db::IDb& db, std::size_t maxThrottlerEntryCount); ~AuthTokenService() override = default; AuthTokenService(const AuthTokenService&) = delete; diff --git a/src/libs/services/auth/impl/EnvService.cpp b/src/libs/services/auth/impl/EnvService.cpp index 486616ad..74d0283d 100644 --- a/src/libs/services/auth/impl/EnvService.cpp +++ b/src/libs/services/auth/impl/EnvService.cpp @@ -25,7 +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::IDb& db) { if (backendName == "http-headers") return std::make_unique(db); diff --git a/src/libs/services/auth/impl/PasswordServiceBase.cpp b/src/libs/services/auth/impl/PasswordServiceBase.cpp index 6972a954..c9f0da03 100644 --- a/src/libs/services/auth/impl/PasswordServiceBase.cpp +++ b/src/libs/services/auth/impl/PasswordServiceBase.cpp @@ -35,7 +35,7 @@ namespace lms::auth { static const Wt::Auth::SHA1HashFunction sha1Function; - std::unique_ptr createPasswordService(std::string_view backend, db::Db& db, std::size_t maxThrottlerEntryCount) + std::unique_ptr createPasswordService(std::string_view backend, db::IDb& db, std::size_t maxThrottlerEntryCount) { if (backend == "internal") return std::make_unique(db, maxThrottlerEntryCount); @@ -46,7 +46,7 @@ namespace lms::auth throw Exception{ "Authentication backend '" + std::string{ backend } + "' not supported!" }; } - PasswordServiceBase::PasswordServiceBase(db::Db& db, std::size_t maxThrottlerEntries) + PasswordServiceBase::PasswordServiceBase(db::IDb& db, std::size_t maxThrottlerEntries) : AuthServiceBase{ db } , _loginThrottler{ maxThrottlerEntries } { diff --git a/src/libs/services/auth/impl/PasswordServiceBase.hpp b/src/libs/services/auth/impl/PasswordServiceBase.hpp index 8743e707..3c5be452 100644 --- a/src/libs/services/auth/impl/PasswordServiceBase.hpp +++ b/src/libs/services/auth/impl/PasswordServiceBase.hpp @@ -27,7 +27,7 @@ namespace lms::db { - class Db; + class IDb; class Session; } // namespace lms::db @@ -36,7 +36,7 @@ namespace lms::auth class PasswordServiceBase : public IPasswordService, public AuthServiceBase { public: - PasswordServiceBase(db::Db& db, std::size_t maxThrottlerEntries); + PasswordServiceBase(db::IDb& db, std::size_t maxThrottlerEntries); ~PasswordServiceBase() override = default; PasswordServiceBase(const PasswordServiceBase&) = delete; diff --git a/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.cpp b/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.cpp index 9c065e7f..7bc60b04 100644 --- a/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.cpp +++ b/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.cpp @@ -27,7 +27,7 @@ namespace lms::auth { - HttpHeadersEnvService::HttpHeadersEnvService(db::Db& db) + HttpHeadersEnvService::HttpHeadersEnvService(db::IDb& db) : AuthServiceBase{ db } , _fieldName{ core::Service::get()->getString("http-headers-login-field", "X-Forwarded-User") } { diff --git a/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.hpp b/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.hpp index 0e3f9ffe..e8334130 100644 --- a/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.hpp +++ b/src/libs/services/auth/impl/http-headers/HttpHeadersEnvService.hpp @@ -28,7 +28,7 @@ namespace lms::auth class HttpHeadersEnvService : public IEnvService, public AuthServiceBase { public: - HttpHeadersEnvService(db::Db& db); + HttpHeadersEnvService(db::IDb& db); private: CheckResult processEnv(const Wt::WEnvironment& env) override; diff --git a/src/libs/services/auth/impl/internal/InternalPasswordService.cpp b/src/libs/services/auth/impl/internal/InternalPasswordService.cpp index 013923e0..2b3e5bc0 100644 --- a/src/libs/services/auth/impl/internal/InternalPasswordService.cpp +++ b/src/libs/services/auth/impl/internal/InternalPasswordService.cpp @@ -29,7 +29,7 @@ namespace lms::auth { - InternalPasswordService::InternalPasswordService(db::Db& db, std::size_t maxThrottlerEntries) + InternalPasswordService::InternalPasswordService(db::IDb& db, std::size_t maxThrottlerEntries) : PasswordServiceBase{ db, maxThrottlerEntries } , _bcryptRoundCount{ static_cast(core::Service::get()->getULong("internal-password-bcrypt-round", 12)) } { diff --git a/src/libs/services/auth/impl/internal/InternalPasswordService.hpp b/src/libs/services/auth/impl/internal/InternalPasswordService.hpp index 105fd746..1c05e3d8 100644 --- a/src/libs/services/auth/impl/internal/InternalPasswordService.hpp +++ b/src/libs/services/auth/impl/internal/InternalPasswordService.hpp @@ -32,7 +32,7 @@ namespace lms::auth class InternalPasswordService : public PasswordServiceBase { public: - InternalPasswordService(db::Db& db, std::size_t maxThrottlerEntries); + InternalPasswordService(db::IDb& db, std::size_t maxThrottlerEntries); private: bool checkUserPassword(std::string_view loginName, std::string_view password) override; diff --git a/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp b/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp index 12763ac5..22739642 100644 --- a/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp +++ b/src/libs/services/auth/include/services/auth/IAuthTokenService.hpp @@ -32,7 +32,7 @@ namespace lms::db { - class Db; + class IDb; } // namespace lms::db namespace lms::auth @@ -81,5 +81,5 @@ namespace lms::auth virtual void clearAuthTokens(core::LiteralString domain, db::UserId userid) = 0; }; - std::unique_ptr createAuthTokenService(db::Db& db, std::size_t maxThrottlerEntryCount); + std::unique_ptr createAuthTokenService(db::IDb& db, std::size_t maxThrottlerEntryCount); } // namespace lms::auth diff --git a/src/libs/services/auth/include/services/auth/IEnvService.hpp b/src/libs/services/auth/include/services/auth/IEnvService.hpp index 4c84dc4f..502d9f19 100644 --- a/src/libs/services/auth/include/services/auth/IEnvService.hpp +++ b/src/libs/services/auth/include/services/auth/IEnvService.hpp @@ -26,7 +26,7 @@ namespace lms::db { - class Db; + class IDb; class Session; } // namespace lms::db @@ -65,5 +65,5 @@ namespace lms::auth virtual CheckResult processRequest(const Wt::Http::Request& request) = 0; }; - std::unique_ptr createEnvService(std::string_view backend, db::Db& db); + std::unique_ptr createEnvService(std::string_view backend, db::IDb& db); } // namespace lms::auth diff --git a/src/libs/services/auth/include/services/auth/IPasswordService.hpp b/src/libs/services/auth/include/services/auth/IPasswordService.hpp index a1a90d68..1986883b 100644 --- a/src/libs/services/auth/include/services/auth/IPasswordService.hpp +++ b/src/libs/services/auth/include/services/auth/IPasswordService.hpp @@ -30,7 +30,7 @@ namespace lms::db { - class Db; + class IDb; class User; } // namespace lms::db @@ -69,5 +69,5 @@ namespace lms::auth virtual void setPassword(db::UserId userId, std::string_view newPassword) = 0; }; - std::unique_ptr createPasswordService(std::string_view backend, db::Db& db, std::size_t maxThrottlerEntryCount); + std::unique_ptr createPasswordService(std::string_view backend, db::IDb& db, std::size_t maxThrottlerEntryCount); } // namespace lms::auth diff --git a/src/libs/services/feedback/impl/FeedbackService.cpp b/src/libs/services/feedback/impl/FeedbackService.cpp index 448234d8..69e80df9 100644 --- a/src/libs/services/feedback/impl/FeedbackService.cpp +++ b/src/libs/services/feedback/impl/FeedbackService.cpp @@ -22,7 +22,7 @@ #include "core/ILogger.hpp" #include "database/Artist.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/RatedArtist.hpp" #include "database/RatedRelease.hpp" #include "database/RatedTrack.hpp" @@ -39,12 +39,12 @@ namespace lms::feedback { - std::unique_ptr createFeedbackService(boost::asio::io_context& ioContext, Db& db) + std::unique_ptr createFeedbackService(boost::asio::io_context& ioContext, db::IDb& db) { return std::make_unique(ioContext, db); } - FeedbackService::FeedbackService(boost::asio::io_context& ioContext, Db& db) + FeedbackService::FeedbackService(boost::asio::io_context& ioContext, db::IDb& db) : _db{ db } { LMS_LOG(SCROBBLING, INFO, "Starting service..."); @@ -58,7 +58,7 @@ namespace lms::feedback LMS_LOG(SCROBBLING, INFO, "Service stopped!"); } - std::optional FeedbackService::getUserFeedbackBackend(UserId userId) + std::optional FeedbackService::getUserFeedbackBackend(db::UserId userId) { std::optional feedbackBackend; diff --git a/src/libs/services/feedback/impl/FeedbackService.hpp b/src/libs/services/feedback/impl/FeedbackService.hpp index 6c5add69..e8407c7f 100644 --- a/src/libs/services/feedback/impl/FeedbackService.hpp +++ b/src/libs/services/feedback/impl/FeedbackService.hpp @@ -28,7 +28,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::feedback @@ -36,7 +36,7 @@ namespace lms::feedback class FeedbackService : public IFeedbackService { public: - FeedbackService(boost::asio::io_context& ioContext, db::Db& db); + FeedbackService(boost::asio::io_context& ioContext, db::IDb& db); ~FeedbackService() override; FeedbackService(const FeedbackService&) = delete; FeedbackService& operator=(const FeedbackService&) = delete; @@ -86,7 +86,7 @@ namespace lms::feedback template std::optional getRating(db::UserId userId, ObjIdType objectId); - db::Db& _db; + db::IDb& _db; std::unordered_map> _backends; }; diff --git a/src/libs/services/feedback/impl/FeedbackService.impl.hpp b/src/libs/services/feedback/impl/FeedbackService.impl.hpp index 29307983..2db429ce 100644 --- a/src/libs/services/feedback/impl/FeedbackService.impl.hpp +++ b/src/libs/services/feedback/impl/FeedbackService.impl.hpp @@ -19,7 +19,7 @@ #pragma once -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/User.hpp" diff --git a/src/libs/services/feedback/impl/internal/InternalBackend.cpp b/src/libs/services/feedback/impl/internal/InternalBackend.cpp index 7d3f1b9a..847e24ac 100644 --- a/src/libs/services/feedback/impl/internal/InternalBackend.cpp +++ b/src/libs/services/feedback/impl/internal/InternalBackend.cpp @@ -19,7 +19,7 @@ #include "InternalBackend.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/StarredArtist.hpp" #include "database/StarredRelease.hpp" @@ -48,7 +48,7 @@ namespace lms::feedback } } // namespace details - InternalBackend::InternalBackend(db::Db& db) + InternalBackend::InternalBackend(db::IDb& db) : _db{ db } { } diff --git a/src/libs/services/feedback/impl/internal/InternalBackend.hpp b/src/libs/services/feedback/impl/internal/InternalBackend.hpp index 0d41be4e..1839b498 100644 --- a/src/libs/services/feedback/impl/internal/InternalBackend.hpp +++ b/src/libs/services/feedback/impl/internal/InternalBackend.hpp @@ -23,7 +23,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::feedback @@ -31,7 +31,7 @@ namespace lms::feedback class InternalBackend final : public IFeedbackBackend { public: - InternalBackend(db::Db& db); + InternalBackend(db::IDb& db); ~InternalBackend() override = default; InternalBackend(const InternalBackend&) = delete; InternalBackend& operator=(const InternalBackend&) = delete; @@ -44,6 +44,6 @@ namespace lms::feedback void onStarred(db::StarredTrackId trackId) override; void onUnstarred(db::StarredTrackId trackId) override; - db::Db& _db; + db::IDb& _db; }; } // namespace lms::feedback diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp index a0a80c66..40123058 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.cpp @@ -29,7 +29,7 @@ #include "core/IConfig.hpp" #include "core/Service.hpp" #include "core/http/IClient.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/StarredTrack.hpp" #include "database/Track.hpp" @@ -60,7 +60,7 @@ namespace lms::feedback::listenBrainz } } // namespace - FeedbacksSynchronizer::FeedbacksSynchronizer(boost::asio::io_context& ioContext, db::Db& db, core::http::IClient& client) + FeedbacksSynchronizer::FeedbacksSynchronizer(boost::asio::io_context& ioContext, db::IDb& db, core::http::IClient& client) : _ioContext{ ioContext } , _db{ db } , _client{ client } diff --git a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp index 0371de51..ae9153ea 100644 --- a/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp +++ b/src/libs/services/feedback/impl/listenbrainz/FeedbacksSynchronizer.hpp @@ -39,7 +39,7 @@ namespace lms } namespace db { - class Db; + class IDb; } } // namespace lms @@ -48,7 +48,7 @@ namespace lms::feedback::listenBrainz class FeedbacksSynchronizer { public: - FeedbacksSynchronizer(boost::asio::io_context& ioContext, db::Db& db, core::http::IClient& client); + FeedbacksSynchronizer(boost::asio::io_context& ioContext, db::IDb& db, core::http::IClient& client); ~FeedbacksSynchronizer() = default; FeedbacksSynchronizer(const FeedbacksSynchronizer&) = delete; FeedbacksSynchronizer& operator=(const FeedbacksSynchronizer&) = delete; @@ -95,7 +95,7 @@ namespace lms::feedback::listenBrainz boost::asio::io_context& _ioContext; boost::asio::io_context::strand _strand{ _ioContext }; - db::Db& _db; + db::IDb& _db; boost::asio::steady_timer _syncTimer{ _ioContext }; core::http::IClient& _client; diff --git a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp index bb7347ad..f3a45527 100644 --- a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp +++ b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.cpp @@ -22,7 +22,7 @@ #include "core/IConfig.hpp" #include "core/Service.hpp" #include "core/http/IClient.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/StarredArtist.hpp" #include "database/StarredRelease.hpp" @@ -56,7 +56,7 @@ namespace lms::feedback::listenBrainz } } // namespace details - ListenBrainzBackend::ListenBrainzBackend(boost::asio::io_context& ioContext, db::Db& db) + ListenBrainzBackend::ListenBrainzBackend(boost::asio::io_context& ioContext, db::IDb& db) : _ioContext{ ioContext } , _db{ db } , _baseAPIUrl{ core::Service::get()->getString("listenbrainz-api-base-url", "https://api.listenbrainz.org") } diff --git a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.hpp b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.hpp index f7359095..88ff7419 100644 --- a/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.hpp +++ b/src/libs/services/feedback/impl/listenbrainz/ListenBrainzBackend.hpp @@ -28,7 +28,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::feedback::listenBrainz @@ -36,7 +36,7 @@ namespace lms::feedback::listenBrainz class ListenBrainzBackend final : public IFeedbackBackend { public: - ListenBrainzBackend(boost::asio::io_context& ioContext, db::Db& db); + ListenBrainzBackend(boost::asio::io_context& ioContext, db::IDb& db); ~ListenBrainzBackend() override; private: @@ -51,7 +51,7 @@ namespace lms::feedback::listenBrainz void onUnstarred(db::StarredTrackId starredTrackId) override; boost::asio::io_context& _ioContext; - db::Db& _db; + db::IDb& _db; std::string _baseAPIUrl; std::unique_ptr _client; FeedbacksSynchronizer _feedbacksSynchronizer; diff --git a/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp b/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp index b88c8102..10fa960b 100644 --- a/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp +++ b/src/libs/services/feedback/include/services/feedback/IFeedbackService.hpp @@ -34,7 +34,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::feedback @@ -125,6 +125,6 @@ namespace lms::feedback virtual std::optional getRating(db::UserId userId, db::TrackId trackId) = 0; }; - std::unique_ptr createFeedbackService(boost::asio::io_context& ioContext, db::Db& db); + std::unique_ptr createFeedbackService(boost::asio::io_context& ioContext, db::IDb& db); } // namespace lms::feedback diff --git a/src/libs/services/recommendation/impl/ClustersEngineCreator.hpp b/src/libs/services/recommendation/impl/ClustersEngineCreator.hpp index d83328c8..7d157526 100644 --- a/src/libs/services/recommendation/impl/ClustersEngineCreator.hpp +++ b/src/libs/services/recommendation/impl/ClustersEngineCreator.hpp @@ -23,11 +23,11 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation { class IEngine; - std::unique_ptr createClustersEngine(db::Db& db); + std::unique_ptr createClustersEngine(db::IDb& db); } // namespace lms::recommendation diff --git a/src/libs/services/recommendation/impl/FeaturesEngineCreator.hpp b/src/libs/services/recommendation/impl/FeaturesEngineCreator.hpp index 107e250a..3d9bcb2e 100644 --- a/src/libs/services/recommendation/impl/FeaturesEngineCreator.hpp +++ b/src/libs/services/recommendation/impl/FeaturesEngineCreator.hpp @@ -25,10 +25,10 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation { - std::unique_ptr createFeaturesEngine(db::Db& db); + std::unique_ptr createFeaturesEngine(db::IDb& db); } diff --git a/src/libs/services/recommendation/impl/IEngine.hpp b/src/libs/services/recommendation/impl/IEngine.hpp index 890631dc..d4229a8f 100644 --- a/src/libs/services/recommendation/impl/IEngine.hpp +++ b/src/libs/services/recommendation/impl/IEngine.hpp @@ -28,7 +28,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation @@ -47,6 +47,6 @@ namespace lms::recommendation virtual ArtistContainer getSimilarArtists(db::ArtistId artistId, core::EnumSet linkTypes, std::size_t maxCount) const = 0; }; - std::unique_ptr createEngine(db::Db& db); + std::unique_ptr createEngine(db::IDb& db); } // namespace lms::recommendation diff --git a/src/libs/services/recommendation/impl/PlaylistGeneratorService.cpp b/src/libs/services/recommendation/impl/PlaylistGeneratorService.cpp index 5256e2d7..1315bbd6 100644 --- a/src/libs/services/recommendation/impl/PlaylistGeneratorService.cpp +++ b/src/libs/services/recommendation/impl/PlaylistGeneratorService.cpp @@ -22,7 +22,7 @@ #include #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" #include "services/recommendation/IRecommendationService.hpp" @@ -35,12 +35,12 @@ namespace lms::recommendation { using namespace db; - std::unique_ptr createPlaylistGeneratorService(Db& db, IRecommendationService& recommendationService) + std::unique_ptr createPlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService) { return std::make_unique(db, recommendationService); } - PlaylistGeneratorService::PlaylistGeneratorService(Db& db, IRecommendationService& recommendationService) + PlaylistGeneratorService::PlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService) : _db{ db } , _recommendationService{ recommendationService } { diff --git a/src/libs/services/recommendation/impl/PlaylistGeneratorService.hpp b/src/libs/services/recommendation/impl/PlaylistGeneratorService.hpp index 6287d778..0e6f88f0 100644 --- a/src/libs/services/recommendation/impl/PlaylistGeneratorService.hpp +++ b/src/libs/services/recommendation/impl/PlaylistGeneratorService.hpp @@ -29,14 +29,14 @@ namespace lms::recommendation class PlaylistGeneratorService : public IPlaylistGeneratorService { public: - PlaylistGeneratorService(db::Db& db, IRecommendationService& recommendationService); + PlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService); private: TrackContainer extendPlaylist(db::TrackListId tracklistId, std::size_t maxCount) const override; TrackContainer getTracksFromTrackList(db::TrackListId tracklistId) const; - db::Db& _db; + db::IDb& _db; IRecommendationService& _recommendationService; std::vector> _constraints; }; diff --git a/src/libs/services/recommendation/impl/RecommendationService.cpp b/src/libs/services/recommendation/impl/RecommendationService.cpp index 51a7e365..b5498f9f 100644 --- a/src/libs/services/recommendation/impl/RecommendationService.cpp +++ b/src/libs/services/recommendation/impl/RecommendationService.cpp @@ -21,7 +21,7 @@ #include -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/ScanSettings.hpp" #include "database/Session.hpp" @@ -40,12 +40,12 @@ namespace lms::recommendation } } // namespace - std::unique_ptr createRecommendationService(db::Db& db) + std::unique_ptr createRecommendationService(db::IDb& db) { return std::make_unique(db); } - RecommendationService::RecommendationService(db::Db& db) + RecommendationService::RecommendationService(db::IDb& db) : _db{ db } { load(); diff --git a/src/libs/services/recommendation/impl/RecommendationService.hpp b/src/libs/services/recommendation/impl/RecommendationService.hpp index d5cde868..8424e528 100644 --- a/src/libs/services/recommendation/impl/RecommendationService.hpp +++ b/src/libs/services/recommendation/impl/RecommendationService.hpp @@ -27,7 +27,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation @@ -41,7 +41,7 @@ namespace lms::recommendation class RecommendationService : public IRecommendationService { public: - RecommendationService(db::Db& db); + RecommendationService(db::IDb& db); ~RecommendationService() override = default; RecommendationService(const RecommendationService&) = delete; RecommendationService& operator=(const RecommendationService&) = delete; @@ -58,7 +58,7 @@ namespace lms::recommendation void clearEngines(); void loadPendingEngine(EngineType engineType, std::unique_ptr engine, bool forceReload, const ProgressCallback& progressCallback); - db::Db& _db; + db::IDb& _db; std::optional _engineType; std::unique_ptr _engine; }; diff --git a/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp b/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp index 662d9da6..2a001500 100644 --- a/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp +++ b/src/libs/services/recommendation/impl/clusters/ClustersEngine.cpp @@ -21,7 +21,7 @@ #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -29,10 +29,9 @@ namespace lms::recommendation { - using namespace db; - std::unique_ptr createClustersEngine(Db& db) + std::unique_ptr createClustersEngine(db::IDb& db) { return std::make_unique(db); } diff --git a/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp b/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp index 7cf50846..4ae10610 100644 --- a/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp +++ b/src/libs/services/recommendation/impl/clusters/ClustersEngine.hpp @@ -27,7 +27,7 @@ namespace lms::recommendation class ClusterEngine : public IEngine { public: - ClusterEngine(db::Db& db) + ClusterEngine(db::IDb& db) : _db{ db } {} ~ClusterEngine() override = default; @@ -45,7 +45,7 @@ namespace lms::recommendation 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; - db::Db& _db; + db::IDb& _db; }; } // namespace lms::recommendation diff --git a/src/libs/services/recommendation/impl/features/FeaturesEngine.cpp b/src/libs/services/recommendation/impl/features/FeaturesEngine.cpp index cca183fc..181f6c3f 100644 --- a/src/libs/services/recommendation/impl/features/FeaturesEngine.cpp +++ b/src/libs/services/recommendation/impl/features/FeaturesEngine.cpp @@ -24,7 +24,7 @@ #include "core/ILogger.hpp" #include "core/Random.hpp" #include "database/Artist.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -37,7 +37,7 @@ namespace lms::recommendation { using namespace db; - std::unique_ptr createFeaturesEngine(Db& db) + std::unique_ptr createFeaturesEngine(db::IDb& db) { return std::make_unique(db); } diff --git a/src/libs/services/recommendation/impl/features/FeaturesEngine.hpp b/src/libs/services/recommendation/impl/features/FeaturesEngine.hpp index 1e0c91fa..3633a9f2 100644 --- a/src/libs/services/recommendation/impl/features/FeaturesEngine.hpp +++ b/src/libs/services/recommendation/impl/features/FeaturesEngine.hpp @@ -46,7 +46,7 @@ namespace lms::recommendation class FeaturesEngine : public IEngine { public: - FeaturesEngine(db::Db& db) + FeaturesEngine(db::IDb& db) : _db{ db } {} FeaturesEngine(const FeaturesEngine&) = delete; @@ -105,7 +105,7 @@ namespace lms::recommendation const ObjectPositions& objectPositions, std::size_t maxCount) const; - db::Db& _db; + db::IDb& _db; bool _loadCancelled{}; std::unique_ptr _network; double _networkRefVectorsDistanceMedian{}; diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp index 731cddd8..9aaaae0c 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.cpp @@ -21,7 +21,7 @@ #include -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -42,7 +42,7 @@ namespace lms::recommendation::PlaylistGeneratorConstraint } } // namespace - ConsecutiveArtists::ConsecutiveArtists(db::Db& db) + ConsecutiveArtists::ConsecutiveArtists(db::IDb& db) : _db{ db } { } diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp index 15ce02f4..4082b927 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveArtists.hpp @@ -23,7 +23,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation::PlaylistGeneratorConstraint @@ -31,7 +31,7 @@ namespace lms::recommendation::PlaylistGeneratorConstraint class ConsecutiveArtists : public IConstraint { public: - ConsecutiveArtists(db::Db& db); + ConsecutiveArtists(db::IDb& db); ~ConsecutiveArtists() override = default; ConsecutiveArtists(const ConsecutiveArtists&) = delete; ConsecutiveArtists& operator=(const ConsecutiveArtists&) = delete; @@ -40,6 +40,6 @@ namespace lms::recommendation::PlaylistGeneratorConstraint float computeScore(const TrackContainer& trackIds, std::size_t trackIndex) override; ArtistContainer getArtists(db::TrackId trackId); - db::Db& _db; + db::IDb& _db; }; } // namespace lms::recommendation::PlaylistGeneratorConstraint diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp index 9e072f07..9d8a4760 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.cpp @@ -19,14 +19,14 @@ #include "ConsecutiveReleases.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" namespace lms::recommendation::PlaylistGeneratorConstraint { - ConsecutiveReleases::ConsecutiveReleases(db::Db& db) + ConsecutiveReleases::ConsecutiveReleases(db::IDb& db) : _db{ db } { } diff --git a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp index 11480ae7..6055e21d 100644 --- a/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp +++ b/src/libs/services/recommendation/impl/playlist-constraints/ConsecutiveReleases.hpp @@ -25,7 +25,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation::PlaylistGeneratorConstraint @@ -33,7 +33,7 @@ namespace lms::recommendation::PlaylistGeneratorConstraint class ConsecutiveReleases : public IConstraint { public: - ConsecutiveReleases(db::Db& db); + ConsecutiveReleases(db::IDb& db); ~ConsecutiveReleases() override = default; ConsecutiveReleases(const ConsecutiveReleases&) = delete; ConsecutiveReleases& operator=(const ConsecutiveReleases&) = delete; @@ -43,6 +43,6 @@ namespace lms::recommendation::PlaylistGeneratorConstraint db::ReleaseId getReleaseId(db::TrackId trackId); - db::Db& _db; + db::IDb& _db; }; } // 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 58bda161..3fd5168b 100644 --- a/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp +++ b/src/libs/services/recommendation/include/services/recommendation/IPlaylistGeneratorService.hpp @@ -26,7 +26,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation @@ -41,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& recommendationService); + std::unique_ptr createPlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService); } // namespace lms::recommendation diff --git a/src/libs/services/recommendation/include/services/recommendation/IRecommendationService.hpp b/src/libs/services/recommendation/include/services/recommendation/IRecommendationService.hpp index 0872cc69..92849eec 100644 --- a/src/libs/services/recommendation/include/services/recommendation/IRecommendationService.hpp +++ b/src/libs/services/recommendation/include/services/recommendation/IRecommendationService.hpp @@ -31,7 +31,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::recommendation @@ -49,5 +49,5 @@ namespace lms::recommendation virtual ArtistContainer getSimilarArtists(db::ArtistId artistId, core::EnumSet linkTypes, std::size_t maxCount) const = 0; }; - std::unique_ptr createRecommendationService(db::Db& db); + std::unique_ptr createRecommendationService(db::IDb& db); } // namespace lms::recommendation diff --git a/src/libs/services/scanner/impl/ScannerService.cpp b/src/libs/services/scanner/impl/ScannerService.cpp index 3bb087ee..cc770bd2 100644 --- a/src/libs/services/scanner/impl/ScannerService.cpp +++ b/src/libs/services/scanner/impl/ScannerService.cpp @@ -152,12 +152,12 @@ namespace lms::scanner } // namespace - std::unique_ptr createScannerService(Db& db) + std::unique_ptr createScannerService(db::IDb& db) { return std::make_unique(db); } - ScannerService::ScannerService(Db& db) + ScannerService::ScannerService(db::IDb& db) : _db{ db } , _jobScheduler{ core::createJobScheduler("Scanner", getScannerThreadCount()) } { diff --git a/src/libs/services/scanner/impl/ScannerService.hpp b/src/libs/services/scanner/impl/ScannerService.hpp index c3705905..35599da9 100644 --- a/src/libs/services/scanner/impl/ScannerService.hpp +++ b/src/libs/services/scanner/impl/ScannerService.hpp @@ -32,7 +32,7 @@ #include #include "ScannerSettings.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "services/scanner/IScannerService.hpp" #include "steps/IScanStep.hpp" @@ -52,7 +52,7 @@ namespace lms::scanner class ScannerService : public IScannerService { public: - ScannerService(db::Db& db); + ScannerService(db::IDb& db); ~ScannerService() override; ScannerService(const ScannerService&) = delete; ScannerService& operator=(const ScannerService&) = delete; @@ -85,7 +85,7 @@ namespace lms::scanner void notifyInProgressIfNeeded(const ScanStepStats& stats); void notifyInProgress(const ScanStepStats& stats); - db::Db& _db; + db::IDb& _db; std::unique_ptr _jobScheduler; std::vector> _fileScanners; diff --git a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp index 21469e80..7fade649 100644 --- a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp @@ -26,7 +26,7 @@ #include "core/String.hpp" #include "database/Artist.hpp" #include "database/ArtistInfo.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Session.hpp" #include "metadata/ArtistInfo.hpp" @@ -137,7 +137,7 @@ namespace lms::scanner } } // namespace - ArtistInfoFileScanner::ArtistInfoFileScanner(db::Db& db, const ScannerSettings& settings) + ArtistInfoFileScanner::ArtistInfoFileScanner(db::IDb& db, const ScannerSettings& settings) : _db{ db } , _settings{ settings } { diff --git a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.hpp b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.hpp index 4d0af151..8036d4e9 100644 --- a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.hpp +++ b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.hpp @@ -21,13 +21,10 @@ #include "IFileScanner.hpp" -namespace lms +namespace lms::db { - namespace db - { - class Db; - } -} // namespace lms + class IDb; +} namespace lms::scanner { @@ -36,7 +33,7 @@ namespace lms::scanner class ArtistInfoFileScanner : public IFileScanner { public: - ArtistInfoFileScanner(db::Db& db, const ScannerSettings& _settings); + ArtistInfoFileScanner(db::IDb& db, const ScannerSettings& _settings); ~ArtistInfoFileScanner() override = default; ArtistInfoFileScanner(const ArtistInfoFileScanner&) = delete; ArtistInfoFileScanner& operator=(const ArtistInfoFileScanner&) = delete; @@ -48,7 +45,7 @@ namespace lms::scanner bool needsScan(const FileToScan& file) const override; std::unique_ptr createScanOperation(FileToScan&& fileToScan) const override; - db::Db& _db; + db::IDb& _db; const ScannerSettings& _settings; }; } // namespace lms::scanner \ No newline at end of file diff --git a/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.cpp b/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.cpp index 4406e91b..6c3d1221 100644 --- a/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.cpp +++ b/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.cpp @@ -27,8 +27,8 @@ #include "database/Artist.hpp" #include "database/Artwork.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -466,7 +466,7 @@ namespace lms::scanner } } // namespace - AudioFileScanOperation::AudioFileScanOperation(FileToScan&& fileToScan, db::Db& db, const ScannerSettings& settings, metadata::IAudioFileParser& parser) + AudioFileScanOperation::AudioFileScanOperation(FileToScan&& fileToScan, db::IDb& db, const ScannerSettings& settings, metadata::IAudioFileParser& parser) : FileScanOperationBase{ std::move(fileToScan), db, settings } , _parser{ parser } { diff --git a/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.hpp b/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.hpp index a6bf3c54..20344ee9 100644 --- a/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.hpp +++ b/src/libs/services/scanner/impl/scanners/AudioFileScanOperation.hpp @@ -32,7 +32,7 @@ namespace lms::db { - class Db; + class IDb; } // namespace lms::db namespace lms::metadata @@ -56,7 +56,7 @@ namespace lms::scanner class AudioFileScanOperation : public FileScanOperationBase { public: - AudioFileScanOperation(FileToScan&& fileToScan, db::Db& db, const ScannerSettings& settings, metadata::IAudioFileParser& parser); + AudioFileScanOperation(FileToScan&& fileToScan, db::IDb& db, const ScannerSettings& settings, metadata::IAudioFileParser& parser); ~AudioFileScanOperation() override; AudioFileScanOperation(const AudioFileScanOperation&) = delete; AudioFileScanOperation& operator=(const AudioFileScanOperation&) = delete; diff --git a/src/libs/services/scanner/impl/scanners/AudioFileScanner.cpp b/src/libs/services/scanner/impl/scanners/AudioFileScanner.cpp index 7c68d3fd..5bd20f8a 100644 --- a/src/libs/services/scanner/impl/scanners/AudioFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/AudioFileScanner.cpp @@ -21,7 +21,7 @@ #include "core/IConfig.hpp" #include "core/Service.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -64,7 +64,7 @@ namespace lms::scanner } // namespace - AudioFileScanner::AudioFileScanner(db::Db& db, const ScannerSettings& settings) + AudioFileScanner::AudioFileScanner(db::IDb& db, const ScannerSettings& settings) : _db{ db } , _settings{ settings } , _metadataParser{ metadata::createAudioFileParser(createAudioFileParserParameters(settings)) } // For now, always use TagLib diff --git a/src/libs/services/scanner/impl/scanners/AudioFileScanner.hpp b/src/libs/services/scanner/impl/scanners/AudioFileScanner.hpp index 3fa46cbf..924f4baf 100644 --- a/src/libs/services/scanner/impl/scanners/AudioFileScanner.hpp +++ b/src/libs/services/scanner/impl/scanners/AudioFileScanner.hpp @@ -25,7 +25,7 @@ namespace lms { namespace db { - class Db; + class IDb; } namespace metadata @@ -41,7 +41,7 @@ namespace lms::scanner class AudioFileScanner : public IFileScanner { public: - AudioFileScanner(db::Db& db, const ScannerSettings& settings); + AudioFileScanner(db::IDb& db, const ScannerSettings& settings); ~AudioFileScanner() override; AudioFileScanner(const AudioFileScanner&) = delete; AudioFileScanner& operator=(const AudioFileScanner&) = delete; @@ -53,7 +53,7 @@ namespace lms::scanner bool needsScan(const FileToScan& file) const override; std::unique_ptr createScanOperation(FileToScan&& fileToScan) const override; - db::Db& _db; + db::IDb& _db; const ScannerSettings& _settings; std::unique_ptr _metadataParser; }; diff --git a/src/libs/services/scanner/impl/scanners/FileScanOperationBase.cpp b/src/libs/services/scanner/impl/scanners/FileScanOperationBase.cpp index ca3ca660..5275be53 100644 --- a/src/libs/services/scanner/impl/scanners/FileScanOperationBase.cpp +++ b/src/libs/services/scanner/impl/scanners/FileScanOperationBase.cpp @@ -23,7 +23,7 @@ namespace lms::scanner { - FileScanOperationBase::FileScanOperationBase(FileToScan&& fileToScan, db::Db& db, const ScannerSettings& settings) + FileScanOperationBase::FileScanOperationBase(FileToScan&& fileToScan, db::IDb& db, const ScannerSettings& settings) : _file{ std::move(fileToScan) } , _db{ db } , _settings{ settings } diff --git a/src/libs/services/scanner/impl/scanners/FileScanOperationBase.hpp b/src/libs/services/scanner/impl/scanners/FileScanOperationBase.hpp index 33482190..f8318a52 100644 --- a/src/libs/services/scanner/impl/scanners/FileScanOperationBase.hpp +++ b/src/libs/services/scanner/impl/scanners/FileScanOperationBase.hpp @@ -27,7 +27,7 @@ namespace lms::db { - class Db; + class IDb; } // namespace lms::db namespace lms::scanner @@ -38,7 +38,7 @@ namespace lms::scanner class FileScanOperationBase : public IFileScanOperation { public: - FileScanOperationBase(FileToScan&& fileToScan, db::Db& db, const ScannerSettings& settings); + FileScanOperationBase(FileToScan&& fileToScan, db::IDb& db, const ScannerSettings& settings); ~FileScanOperationBase() override; FileScanOperationBase(const FileScanOperationBase&) = delete; FileScanOperationBase& operator=(const FileScanOperationBase&) = delete; @@ -46,7 +46,7 @@ namespace lms::scanner protected: const std::filesystem::path& getFilePath() const override { return _file.filePath; } const MediaLibraryInfo& getMediaLibrary() const { return _file.mediaLibrary; } - db::Db& getDb() { return _db; } + db::IDb& getDb() { return _db; } const ScannerSettings& getScannerSettings() const { return _settings; } Wt::WDateTime getLastWriteTime() const { return _file.lastWriteTime; } std::size_t getFileSize() const { return _file.fileSize; } @@ -61,7 +61,7 @@ namespace lms::scanner private: const FileToScan _file; - db::Db& _db; + db::IDb& _db; const ScannerSettings& _settings; ScanErrorVector _errors; }; diff --git a/src/libs/services/scanner/impl/scanners/ImageFileScanner.cpp b/src/libs/services/scanner/impl/scanners/ImageFileScanner.cpp index d4d512e8..8910f07d 100644 --- a/src/libs/services/scanner/impl/scanners/ImageFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/ImageFileScanner.cpp @@ -23,7 +23,7 @@ #include "core/ILogger.hpp" #include "database/Artwork.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Image.hpp" #include "database/MediaLibrary.hpp" #include "database/Session.hpp" @@ -108,7 +108,7 @@ namespace lms::scanner } } // namespace - ImageFileScanner::ImageFileScanner(db::Db& db, ScannerSettings& settings) + ImageFileScanner::ImageFileScanner(db::IDb& db, ScannerSettings& settings) : _db{ db } , _settings{ settings } { diff --git a/src/libs/services/scanner/impl/scanners/ImageFileScanner.hpp b/src/libs/services/scanner/impl/scanners/ImageFileScanner.hpp index 4e34b0cb..7c4f8974 100644 --- a/src/libs/services/scanner/impl/scanners/ImageFileScanner.hpp +++ b/src/libs/services/scanner/impl/scanners/ImageFileScanner.hpp @@ -21,13 +21,10 @@ #include "IFileScanner.hpp" -namespace lms +namespace lms::db { - namespace db - { - class Db; - } -} // namespace lms + class IDb; +} namespace lms::scanner { @@ -36,7 +33,7 @@ namespace lms::scanner class ImageFileScanner : public IFileScanner { public: - ImageFileScanner(db::Db& db, ScannerSettings& settings); + ImageFileScanner(db::IDb& db, ScannerSettings& settings); ~ImageFileScanner() override = default; ImageFileScanner(const ImageFileScanner&) = delete; ImageFileScanner& operator=(const ImageFileScanner&) = delete; @@ -48,7 +45,7 @@ namespace lms::scanner bool needsScan(const FileToScan& file) const override; std::unique_ptr createScanOperation(FileToScan&& fileToScan) const override; - db::Db& _db; + db::IDb& _db; ScannerSettings& _settings; }; } // namespace lms::scanner diff --git a/src/libs/services/scanner/impl/scanners/LyricsFileScanner.cpp b/src/libs/services/scanner/impl/scanners/LyricsFileScanner.cpp index f88e3563..d077802b 100644 --- a/src/libs/services/scanner/impl/scanners/LyricsFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/LyricsFileScanner.cpp @@ -25,7 +25,7 @@ #include "FileScanOperationBase.hpp" #include "ScannerSettings.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Session.hpp" #include "database/TrackLyrics.hpp" @@ -122,7 +122,7 @@ namespace lms::scanner } } // namespace - LyricsFileScanner::LyricsFileScanner(db::Db& db, ScannerSettings& _settings) + LyricsFileScanner::LyricsFileScanner(db::IDb& db, ScannerSettings& _settings) : _db{ db } , _settings{ _settings } { diff --git a/src/libs/services/scanner/impl/scanners/LyricsFileScanner.hpp b/src/libs/services/scanner/impl/scanners/LyricsFileScanner.hpp index 3bcb4f0d..0b265b77 100644 --- a/src/libs/services/scanner/impl/scanners/LyricsFileScanner.hpp +++ b/src/libs/services/scanner/impl/scanners/LyricsFileScanner.hpp @@ -21,13 +21,10 @@ #include "IFileScanner.hpp" -namespace lms +namespace lms::db { - namespace db - { - class Db; - } -} // namespace lms + class IDb; +} namespace lms::scanner { @@ -36,7 +33,7 @@ namespace lms::scanner class LyricsFileScanner : public IFileScanner { public: - LyricsFileScanner(db::Db& db, ScannerSettings& settings); + LyricsFileScanner(db::IDb& db, ScannerSettings& settings); ~LyricsFileScanner() override = default; LyricsFileScanner(const LyricsFileScanner&) = delete; LyricsFileScanner& operator=(const LyricsFileScanner&) = delete; @@ -48,7 +45,7 @@ namespace lms::scanner bool needsScan(const FileToScan& file) const override; std::unique_ptr createScanOperation(FileToScan&& fileToScan) const override; - db::Db& _db; + db::IDb& _db; ScannerSettings& _settings; }; } // namespace lms::scanner diff --git a/src/libs/services/scanner/impl/scanners/PlayListFileScanner.cpp b/src/libs/services/scanner/impl/scanners/PlayListFileScanner.cpp index ca168dab..0be759d6 100644 --- a/src/libs/services/scanner/impl/scanners/PlayListFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/PlayListFileScanner.cpp @@ -23,7 +23,7 @@ #include #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/PlayListFile.hpp" #include "database/Session.hpp" @@ -121,7 +121,7 @@ namespace lms::scanner } } // namespace - PlayListFileScanner::PlayListFileScanner(db::Db& db, ScannerSettings& settings) + PlayListFileScanner::PlayListFileScanner(db::IDb& db, ScannerSettings& settings) : _db{ db } , _settings{ settings } { diff --git a/src/libs/services/scanner/impl/scanners/PlayListFileScanner.hpp b/src/libs/services/scanner/impl/scanners/PlayListFileScanner.hpp index db0f2333..0bbfb8a4 100644 --- a/src/libs/services/scanner/impl/scanners/PlayListFileScanner.hpp +++ b/src/libs/services/scanner/impl/scanners/PlayListFileScanner.hpp @@ -21,13 +21,10 @@ #include "IFileScanner.hpp" -namespace lms +namespace lms::db { - namespace db - { - class Db; - } -} // namespace lms + class IDb; +} namespace lms::scanner { @@ -36,7 +33,7 @@ namespace lms::scanner class PlayListFileScanner : public IFileScanner { public: - PlayListFileScanner(db::Db& db, ScannerSettings& settings); + PlayListFileScanner(db::IDb& db, ScannerSettings& settings); ~PlayListFileScanner() override = default; PlayListFileScanner(const PlayListFileScanner&) = delete; PlayListFileScanner& operator=(const PlayListFileScanner&) = delete; @@ -48,7 +45,7 @@ namespace lms::scanner bool needsScan(const FileToScan& file) const override; std::unique_ptr createScanOperation(FileToScan&& fileToScan) const override; - db::Db& _db; + db::IDb& _db; ScannerSettings& _settings; }; } // namespace lms::scanner diff --git a/src/libs/services/scanner/impl/steps/ScanStepArtistReconciliation.cpp b/src/libs/services/scanner/impl/steps/ScanStepArtistReconciliation.cpp index c39bc2ba..4513ea96 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepArtistReconciliation.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepArtistReconciliation.cpp @@ -25,7 +25,7 @@ #include "core/ILogger.hpp" #include "database/Artist.hpp" #include "database/ArtistInfo.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" #include "database/TrackArtistLink.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp index a25b83c0..9e3490d5 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateArtistImages.cpp @@ -34,8 +34,8 @@ #include "database/ArtistInfo.hpp" #include "database/Artwork.hpp" #include "database/ArtworkId.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/Image.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -270,7 +270,7 @@ namespace lms::scanner class ComputeArtistArtworkAssociationsJob : public core::IJob { public: - ComputeArtistArtworkAssociationsJob(db::Db& db, const SearchArtistArtworkParams& searchParams, db::IdRange artistIdRange) + ComputeArtistArtworkAssociationsJob(db::IDb& db, const SearchArtistArtworkParams& searchParams, db::IdRange artistIdRange) : _db{ db } , _searchParams{ searchParams } , _artistIdRange{ artistIdRange } @@ -304,7 +304,7 @@ namespace lms::scanner }); } - db::Db& _db; + db::IDb& _db; const SearchArtistArtworkParams& _searchParams; db::IdRange _artistIdRange; std::vector _associations; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateExternalLyrics.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateExternalLyrics.cpp index e54349a9..03dc6cbe 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateExternalLyrics.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateExternalLyrics.cpp @@ -22,8 +22,8 @@ #include #include "core/ILogger.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" #include "database/TrackLyrics.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp index 5d009edb..f8f740b6 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociatePlayListTracks.cpp @@ -25,8 +25,8 @@ #include "core/IJob.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/PlayListFile.hpp" #include "database/ReleaseId.hpp" #include "database/Session.hpp" @@ -174,7 +174,7 @@ namespace lms::scanner class ComputePlayListFileAssociationsJob : public core::IJob { public: - ComputePlayListFileAssociationsJob(db::Db& db, const ScannerSettings& settings, db::IdRange playListFileIdRange) + ComputePlayListFileAssociationsJob(db::IDb& db, const ScannerSettings& settings, db::IdRange playListFileIdRange) : _db{ db } , _settings{ settings } , _playListFileIdRange{ playListFileIdRange } @@ -239,7 +239,7 @@ namespace lms::scanner }); } - db::Db& _db; + db::IDb& _db; const ScannerSettings& _settings; db::IdRange _playListFileIdRange; std::vector _associations; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp index 61a9aa0c..3e15d1ad 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateReleaseImages.cpp @@ -29,8 +29,8 @@ #include "core/ILogger.hpp" #include "core/Path.hpp" #include "database/Artwork.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/Image.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -213,7 +213,7 @@ namespace lms::scanner class ComputeReleaseArtworkAssociationsJob : public core::IJob { public: - ComputeReleaseArtworkAssociationsJob(db::Db& db, const SearchReleaseArtworkParams& searchParams, db::IdRange artistIdRange) + ComputeReleaseArtworkAssociationsJob(db::IDb& db, const SearchReleaseArtworkParams& searchParams, db::IdRange artistIdRange) : _db{ db } , _searchParams{ searchParams } , _artistIdRange{ artistIdRange } @@ -247,7 +247,7 @@ namespace lms::scanner }); } - db::Db& _db; + db::IDb& _db; const SearchReleaseArtworkParams& _searchParams; db::IdRange _artistIdRange; std::vector _associations; diff --git a/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp b/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp index 76d2dc30..dd361328 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepAssociateTrackImages.cpp @@ -28,8 +28,8 @@ #include "core/ILogger.hpp" #include "core/LiteralString.hpp" #include "database/Artwork.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/IdRange.hpp" #include "database/Image.hpp" #include "database/Release.hpp" @@ -160,7 +160,7 @@ namespace lms::scanner class ComputeTrackArtworkAssociationsJob : public core::IJob { public: - ComputeTrackArtworkAssociationsJob(db::Db& db, db::IdRange trackIdRange) + ComputeTrackArtworkAssociationsJob(db::IDb& db, db::IdRange trackIdRange) : _db{ db } , _trackIdRange{ trackIdRange } { @@ -209,7 +209,7 @@ namespace lms::scanner }); } - db::Db& _db; + db::IDb& _db; db::IdRange _trackIdRange; std::vector _trackAssociations; std::size_t _processedTrackCount{}; diff --git a/src/libs/services/scanner/impl/steps/ScanStepBase.hpp b/src/libs/services/scanner/impl/steps/ScanStepBase.hpp index 2677726d..a544274a 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepBase.hpp +++ b/src/libs/services/scanner/impl/steps/ScanStepBase.hpp @@ -34,7 +34,7 @@ namespace lms::core namespace lms::db { - class Db; + class IDb; } namespace lms::scanner @@ -56,7 +56,7 @@ namespace lms::scanner const ScannerSettings* lastScanSettings{}; ProgressCallback progressCallback; bool& abortScan; - db::Db& db; + db::IDb& db; std::span fileScanners; }; ScanStepBase(InitParams& initParams); @@ -82,7 +82,7 @@ namespace lms::scanner const ScannerSettings& _settings; ProgressCallback _progressCallback; bool& _abortScan; - db::Db& _db; + db::IDb& _db; private: core::IJobScheduler& _jobScheduler; diff --git a/src/libs/services/scanner/impl/steps/ScanStepCheckForDuplicatedFiles.cpp b/src/libs/services/scanner/impl/steps/ScanStepCheckForDuplicatedFiles.cpp index cea51cc6..b78918f9 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepCheckForDuplicatedFiles.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepCheckForDuplicatedFiles.cpp @@ -20,7 +20,7 @@ #include "ScanStepCheckForDuplicatedFiles.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp b/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp index 3ab0c0c8..c91c8b2c 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepCheckForRemovedFiles.cpp @@ -24,7 +24,7 @@ #include "core/ILogger.hpp" #include "core/Path.hpp" #include "database/ArtistInfo.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Image.hpp" #include "database/PlayListFile.hpp" #include "database/Session.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepCompact.cpp b/src/libs/services/scanner/impl/steps/ScanStepCompact.cpp index 130d3408..e231bc7e 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepCompact.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepCompact.cpp @@ -19,7 +19,7 @@ #include "ScanStepCompact.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "ScanContext.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepComputeClusterStats.cpp b/src/libs/services/scanner/impl/steps/ScanStepComputeClusterStats.cpp index e2fd438a..60cb53b1 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepComputeClusterStats.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepComputeClusterStats.cpp @@ -20,7 +20,7 @@ #include "ScanStepComputeClusterStats.hpp" #include "core/ILogger.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "ScanContext.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepOptimize.cpp b/src/libs/services/scanner/impl/steps/ScanStepOptimize.cpp index 576f79d9..98acc7ea 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepOptimize.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepOptimize.cpp @@ -20,7 +20,7 @@ #include "ScanStepOptimize.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "ScanContext.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepRemoveOrphanedDbEntries.cpp b/src/libs/services/scanner/impl/steps/ScanStepRemoveOrphanedDbEntries.cpp index e665422a..dba7c06c 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepRemoveOrphanedDbEntries.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepRemoveOrphanedDbEntries.cpp @@ -22,8 +22,8 @@ #include "core/ILogger.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp b/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp index 5b1f91e7..e0183444 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepScanFiles.cpp @@ -25,7 +25,7 @@ #include "core/ILogger.hpp" #include "core/ITraceLogger.hpp" #include "core/Path.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "scanners/FileToScan.hpp" #include "scanners/IFileScanOperation.hpp" diff --git a/src/libs/services/scanner/impl/steps/ScanStepUpdateLibraryFields.cpp b/src/libs/services/scanner/impl/steps/ScanStepUpdateLibraryFields.cpp index 1e9b52fd..14958504 100644 --- a/src/libs/services/scanner/impl/steps/ScanStepUpdateLibraryFields.cpp +++ b/src/libs/services/scanner/impl/steps/ScanStepUpdateLibraryFields.cpp @@ -19,8 +19,8 @@ #include "ScanStepUpdateLibraryFields.hpp" -#include "database/Db.hpp" #include "database/Directory.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Session.hpp" diff --git a/src/libs/services/scanner/include/services/scanner/IScannerService.hpp b/src/libs/services/scanner/include/services/scanner/IScannerService.hpp index b811ce29..fa272396 100644 --- a/src/libs/services/scanner/include/services/scanner/IScannerService.hpp +++ b/src/libs/services/scanner/include/services/scanner/IScannerService.hpp @@ -27,7 +27,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::scanner @@ -61,5 +61,5 @@ namespace lms::scanner virtual Events& getEvents() = 0; }; - std::unique_ptr createScannerService(db::Db& db); + std::unique_ptr createScannerService(db::IDb& db); } // namespace lms::scanner diff --git a/src/libs/services/scrobbling/impl/ScrobblingService.cpp b/src/libs/services/scrobbling/impl/ScrobblingService.cpp index 7ace3afd..162cf523 100644 --- a/src/libs/services/scrobbling/impl/ScrobblingService.cpp +++ b/src/libs/services/scrobbling/impl/ScrobblingService.cpp @@ -21,7 +21,7 @@ #include "core/ILogger.hpp" #include "database/Artist.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Listen.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -55,12 +55,12 @@ namespace lms::scrobbling } } // namespace - std::unique_ptr createScrobblingService(boost::asio::io_context& ioContext, Db& db) + std::unique_ptr createScrobblingService(boost::asio::io_context& ioContext, db::IDb& db) { return std::make_unique(ioContext, db); } - ScrobblingService::ScrobblingService(boost::asio::io_context& ioContext, Db& db) + ScrobblingService::ScrobblingService(boost::asio::io_context& ioContext, db::IDb& db) : _db{ db } { LMS_LOG(SCROBBLING, INFO, "Starting service..."); diff --git a/src/libs/services/scrobbling/impl/ScrobblingService.hpp b/src/libs/services/scrobbling/impl/ScrobblingService.hpp index 1bde3e49..6fc26444 100644 --- a/src/libs/services/scrobbling/impl/ScrobblingService.hpp +++ b/src/libs/services/scrobbling/impl/ScrobblingService.hpp @@ -32,7 +32,7 @@ namespace lms::scrobbling class ScrobblingService : public IScrobblingService { public: - ScrobblingService(boost::asio::io_context& ioContext, db::Db& db); + ScrobblingService(boost::asio::io_context& ioContext, db::IDb& db); ~ScrobblingService(); private: @@ -56,7 +56,7 @@ namespace lms::scrobbling std::optional getUserBackend(db::UserId userId); - db::Db& _db; + db::IDb& _db; std::unordered_map> _scrobblingBackends; }; diff --git a/src/libs/services/scrobbling/impl/internal/InternalBackend.cpp b/src/libs/services/scrobbling/impl/internal/InternalBackend.cpp index b70ab4b7..70ae072d 100644 --- a/src/libs/services/scrobbling/impl/internal/InternalBackend.cpp +++ b/src/libs/services/scrobbling/impl/internal/InternalBackend.cpp @@ -19,7 +19,7 @@ #include "InternalBackend.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Listen.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -27,7 +27,7 @@ namespace lms::scrobbling { - InternalBackend::InternalBackend(db::Db& db) + InternalBackend::InternalBackend(db::IDb& db) : _db{ db } { } diff --git a/src/libs/services/scrobbling/impl/internal/InternalBackend.hpp b/src/libs/services/scrobbling/impl/internal/InternalBackend.hpp index a0fd45d7..6a952373 100644 --- a/src/libs/services/scrobbling/impl/internal/InternalBackend.hpp +++ b/src/libs/services/scrobbling/impl/internal/InternalBackend.hpp @@ -23,7 +23,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::scrobbling @@ -31,13 +31,13 @@ namespace lms::scrobbling class InternalBackend final : public IScrobblingBackend { public: - InternalBackend(db::Db& db); + InternalBackend(db::IDb& db); private: void listenStarted(const Listen& listen) override; void listenFinished(const Listen& listen, std::optional duration) override; void addTimedListen(const TimedListen& listen) override; - db::Db& _db; + db::IDb& _db; }; } // namespace lms::scrobbling diff --git a/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.cpp b/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.cpp index 1d0ac7a5..19adf19e 100644 --- a/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.cpp +++ b/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.cpp @@ -23,7 +23,7 @@ #include "core/ILogger.hpp" #include "core/Service.hpp" #include "core/http/IClient.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -51,7 +51,7 @@ namespace lms::scrobbling::listenBrainz } } // namespace - ListenBrainzBackend::ListenBrainzBackend(boost::asio::io_context& ioContext, Db& db) + ListenBrainzBackend::ListenBrainzBackend(boost::asio::io_context& ioContext, db::IDb& db) : _ioContext{ ioContext } , _db{ db } , _baseAPIUrl{ core::Service::get()->getString("listenbrainz-api-base-url", "https://api.listenbrainz.org") } diff --git a/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.hpp b/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.hpp index 3ab08fd5..e04a5be4 100644 --- a/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.hpp +++ b/src/libs/services/scrobbling/impl/listenbrainz/ListenBrainzBackend.hpp @@ -29,7 +29,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::scrobbling::listenBrainz @@ -37,7 +37,7 @@ namespace lms::scrobbling::listenBrainz class ListenBrainzBackend final : public IScrobblingBackend { public: - ListenBrainzBackend(boost::asio::io_context& ioContext, db::Db& db); + ListenBrainzBackend(boost::asio::io_context& ioContext, db::IDb& db); ~ListenBrainzBackend() override; private: @@ -52,7 +52,7 @@ namespace lms::scrobbling::listenBrainz void enqueListen(const Listen& listen, const Wt::WDateTime& timePoint); boost::asio::io_context& _ioContext; - db::Db& _db; + db::IDb& _db; std::string _baseAPIUrl; std::unique_ptr _client; ListensSynchronizer _listensSynchronizer; diff --git a/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.cpp b/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.cpp index e08baab2..2e9a81e3 100644 --- a/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.cpp +++ b/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.cpp @@ -31,7 +31,7 @@ #include "core/Service.hpp" #include "core/http/IClient.hpp" #include "database/Artist.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Listen.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -210,7 +210,7 @@ namespace lms::scrobbling::listenBrainz } } // namespace - ListensSynchronizer::ListensSynchronizer(boost::asio::io_context& ioContext, db::Db& db, core::http::IClient& client) + ListensSynchronizer::ListensSynchronizer(boost::asio::io_context& ioContext, db::IDb& db, core::http::IClient& client) : _ioContext{ ioContext } , _db{ db } , _client{ client } diff --git a/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.hpp b/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.hpp index dd851e45..2751272f 100644 --- a/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.hpp +++ b/src/libs/services/scrobbling/impl/listenbrainz/ListensSynchronizer.hpp @@ -39,7 +39,7 @@ namespace lms } namespace db { - class Db; + class IDb; } } // namespace lms @@ -48,7 +48,7 @@ namespace lms::scrobbling::listenBrainz class ListensSynchronizer { public: - ListensSynchronizer(boost::asio::io_context& ioContext, db::Db& db, core::http::IClient& client); + ListensSynchronizer(boost::asio::io_context& ioContext, db::IDb& db, core::http::IClient& client); void enqueListen(const TimedListen& listen); void enqueListenNow(const Listen& listen); @@ -94,7 +94,7 @@ namespace lms::scrobbling::listenBrainz boost::asio::io_context& _ioContext; boost::asio::io_context::strand _strand{ _ioContext }; - db::Db& _db; + db::IDb& _db; boost::asio::steady_timer _syncTimer{ _ioContext }; core::http::IClient& _client; diff --git a/src/libs/services/scrobbling/include/services/scrobbling/IScrobblingService.hpp b/src/libs/services/scrobbling/include/services/scrobbling/IScrobblingService.hpp index 9eb60100..35f3e8bc 100644 --- a/src/libs/services/scrobbling/include/services/scrobbling/IScrobblingService.hpp +++ b/src/libs/services/scrobbling/include/services/scrobbling/IScrobblingService.hpp @@ -35,7 +35,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::scrobbling @@ -126,5 +126,5 @@ namespace lms::scrobbling virtual TrackContainer getTopTracks(const FindParameters& params) = 0; }; - std::unique_ptr createScrobblingService(boost::asio::io_context& ioContext, db::Db& db); + std::unique_ptr createScrobblingService(boost::asio::io_context& ioContext, db::IDb& db); } // namespace lms::scrobbling diff --git a/src/libs/services/transcoding/impl/TranscodingService.cpp b/src/libs/services/transcoding/impl/TranscodingService.cpp index 09270a19..56fa18dc 100644 --- a/src/libs/services/transcoding/impl/TranscodingService.cpp +++ b/src/libs/services/transcoding/impl/TranscodingService.cpp @@ -21,7 +21,7 @@ #include "av/ITranscoder.hpp" #include "core/ILogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -43,12 +43,12 @@ namespace lms::transcoding } } // namespace - std::unique_ptr createTranscodingService(db::Db& db, core::IChildProcessManager& childProcessManager) + std::unique_ptr createTranscodingService(db::IDb& db, core::IChildProcessManager& childProcessManager) { return std::make_unique(db, childProcessManager); } - TranscodingService::TranscodingService(db::Db& db, core::IChildProcessManager& childProcessManager) + TranscodingService::TranscodingService(db::IDb& db, core::IChildProcessManager& childProcessManager) : _db{ db } , _childProcessManager(childProcessManager) { diff --git a/src/libs/services/transcoding/impl/TranscodingService.hpp b/src/libs/services/transcoding/impl/TranscodingService.hpp index cfa45eaf..d5ea4471 100644 --- a/src/libs/services/transcoding/impl/TranscodingService.hpp +++ b/src/libs/services/transcoding/impl/TranscodingService.hpp @@ -26,7 +26,7 @@ namespace lms::transcoding class TranscodingService : public ITranscodingService { public: - explicit TranscodingService(db::Db& db, core::IChildProcessManager& childProcessManager); + explicit TranscodingService(db::IDb& db, core::IChildProcessManager& childProcessManager); ~TranscodingService() override; TranscodingService(const TranscodingService&) = delete; @@ -35,7 +35,7 @@ namespace lms::transcoding private: std::unique_ptr createResourceHandler(const InputParameters& inputParameters, const OutputParameters& outputParameters, bool estimateContentLength) override; - db::Db& _db; + db::IDb& _db; core::IChildProcessManager& _childProcessManager; }; } // namespace lms::transcoding diff --git a/src/libs/services/transcoding/include/services/transcoding/ITranscodingService.hpp b/src/libs/services/transcoding/include/services/transcoding/ITranscodingService.hpp index c6fccd01..e1b478d3 100644 --- a/src/libs/services/transcoding/include/services/transcoding/ITranscodingService.hpp +++ b/src/libs/services/transcoding/include/services/transcoding/ITranscodingService.hpp @@ -35,7 +35,7 @@ namespace lms namespace db { - class Db; + class IDb; } } // namespace lms @@ -72,5 +72,5 @@ namespace lms::transcoding virtual std::unique_ptr createResourceHandler(const InputParameters& inputParameters, const OutputParameters& outputParameters, bool estimateContentLength) = 0; }; - std::unique_ptr createTranscodingService(db::Db& db, core::IChildProcessManager& childProcessManager); + std::unique_ptr createTranscodingService(db::IDb& db, core::IChildProcessManager& childProcessManager); } // namespace lms::transcoding diff --git a/src/libs/subsonic/impl/SubsonicResource.cpp b/src/libs/subsonic/impl/SubsonicResource.cpp index 8d5e95fe..67718981 100644 --- a/src/libs/subsonic/impl/SubsonicResource.cpp +++ b/src/libs/subsonic/impl/SubsonicResource.cpp @@ -29,7 +29,7 @@ #include "core/LiteralString.hpp" #include "core/Service.hpp" #include "core/String.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "database/User.hpp" #include "services/auth/IAuthTokenService.hpp" @@ -52,7 +52,7 @@ namespace lms::api::subsonic { - std::unique_ptr createSubsonicResource(db::Db& db) + std::unique_ptr createSubsonicResource(db::IDb& db) { return std::make_unique(db); } @@ -295,7 +295,7 @@ namespace lms::api::subsonic } } // namespace - SubsonicResource::SubsonicResource(db::Db& db) + SubsonicResource::SubsonicResource(db::IDb& db) : _serverProtocolVersionsByClient{ readConfigProtocolVersions() } , _openSubsonicDisabledClients{ readOpenSubsonicDisabledClients() } , _supportUserPasswordAuthentication{ core::Service::get()->getBool("api-subsonic-support-user-password-auth", true) } diff --git a/src/libs/subsonic/impl/SubsonicResource.hpp b/src/libs/subsonic/impl/SubsonicResource.hpp index af8ace3d..4433d1ab 100644 --- a/src/libs/subsonic/impl/SubsonicResource.hpp +++ b/src/libs/subsonic/impl/SubsonicResource.hpp @@ -31,7 +31,7 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::api::subsonic @@ -39,7 +39,7 @@ namespace lms::api::subsonic class SubsonicResource final : public Wt::WResource { public: - SubsonicResource(db::Db& db); + SubsonicResource(db::IDb& db); private: void handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response) override; @@ -53,6 +53,6 @@ namespace lms::api::subsonic const std::unordered_set _openSubsonicDisabledClients; const bool _supportUserPasswordAuthentication; - db::Db& _db; + db::IDb& _db; }; } // namespace lms::api::subsonic diff --git a/src/libs/subsonic/include/subsonic/SubsonicResource.hpp b/src/libs/subsonic/include/subsonic/SubsonicResource.hpp index 2c52bac4..d719c3c5 100644 --- a/src/libs/subsonic/include/subsonic/SubsonicResource.hpp +++ b/src/libs/subsonic/include/subsonic/SubsonicResource.hpp @@ -24,10 +24,10 @@ namespace lms::db { - class Db; + class IDb; } namespace lms::api::subsonic { - std::unique_ptr createSubsonicResource(db::Db& db); + std::unique_ptr createSubsonicResource(db::IDb& db); } // namespace lms::api::subsonic diff --git a/src/lms/main.cpp b/src/lms/main.cpp index 0a96921e..9110af3e 100644 --- a/src/lms/main.cpp +++ b/src/lms/main.cpp @@ -32,7 +32,7 @@ #include "core/String.hpp" #include "core/SystemPaths.hpp" #include "core/WtLogger.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Session.hpp" #include "image/Image.hpp" #include "services/artwork/IArtworkService.hpp" @@ -316,9 +316,9 @@ namespace lms core::IOContextRunner ioContextRunner{ ioContext, getThreadCount(), "Misc" }; // Connection pool size must be twice the number of threads: we have at least 2 io pools with getThreadCount() each and they all may access the database - db::Db database{ config->getPath("working-dir", "/var/lms") / "lms.db", getThreadCount() * 2 }; + auto database{ db::createDb(config->getPath("working-dir", "/var/lms") / "lms.db", getThreadCount() * 2) }; { - db::Session session{ database }; + db::Session session{ *database }; session.prepareTablesIfNeeded(); bool migrationPerformed{ session.migrateSchemaIfNeeded() }; session.createIndexesIfNeeded(); @@ -332,7 +332,7 @@ namespace lms // force optimize in case scanner aborted during a large import: // queries may be too slow to even be able to relaunch a scan using the web interface session.fullAnalyze(); - database.getTLSSession().refreshTracingLoggerStats(); + database->getTLSSession().refreshTracingLoggerStats(); } ui::LmsApplicationManager appManager; @@ -342,7 +342,7 @@ namespace lms core::Service childProcessManagerService{ core::createChildProcessManager(ioContext) }; const ui::AuthenticationBackend uiAuthenticationBackend{ getUIAuthenticationBackend() }; - core::Service authTokenService{ auth::createAuthTokenService(database, config->getULong("login-throttler-max-entriees", 10'000)) }; + core::Service authTokenService{ auth::createAuthTokenService(*database, config->getULong("login-throttler-max-entriees", 10'000)) }; core::Service authPasswordService; core::Service authEnvService; @@ -359,32 +359,32 @@ namespace lms switch (uiAuthenticationBackend) { case ui::AuthenticationBackend::Internal: - authPasswordService.assign(auth::createPasswordService("internal", database, loginThrottlerMaxEntries)); + authPasswordService.assign(auth::createPasswordService("internal", *database, loginThrottlerMaxEntries)); break; case ui::AuthenticationBackend::PAM: - authPasswordService.assign(auth::createPasswordService("PAM", database, loginThrottlerMaxEntries)); + authPasswordService.assign(auth::createPasswordService("PAM", *database, loginThrottlerMaxEntries)); break; case ui::AuthenticationBackend::Env: - authEnvService.assign(auth::createEnvService("http-headers", database)); + authEnvService.assign(auth::createEnvService("http-headers", *database)); break; } image::init(argv[0]); - core::Service artworkService{ artwork::createArtworkService(database, server.appRoot() + "/images/unknown-cover.svg", server.appRoot() + "/images/unknown-artist.svg") }; - core::Service recommendationService{ recommendation::createRecommendationService(database) }; - core::Service playlistGeneratorService{ recommendation::createPlaylistGeneratorService(database, *recommendationService.get()) }; - core::Service scannerService{ scanner::createScannerService(database) }; - core::Service transcodingService{ transcoding::createTranscodingService(database, *childProcessManagerService.get()) }; + core::Service artworkService{ artwork::createArtworkService(*database, server.appRoot() + "/images/unknown-cover.svg", server.appRoot() + "/images/unknown-artist.svg") }; + core::Service recommendationService{ recommendation::createRecommendationService(*database) }; + core::Service playlistGeneratorService{ recommendation::createPlaylistGeneratorService(*database, *recommendationService) }; + core::Service scannerService{ scanner::createScannerService(*database) }; + core::Service transcodingService{ transcoding::createTranscodingService(*database, *childProcessManagerService) }; scannerService->getEvents().scanComplete.connect([&] { // Flush cover cache even if no changes: // covers may be external files that changed and we don't keep track of them for now (but we should) artworkService->flushCache(); - database.getTLSSession().refreshTracingLoggerStats(); + database->getTLSSession().refreshTracingLoggerStats(); }); - core::Service feedbackService{ feedback::createFeedbackService(ioContext, database) }; - core::Service scrobblingService{ scrobbling::createScrobblingService(ioContext, database) }; + core::Service feedbackService{ feedback::createFeedbackService(ioContext, *database) }; + core::Service scrobblingService{ scrobbling::createScrobblingService(ioContext, *database) }; LMS_LOG(MAIN, INFO, "Stopping init web server..."); server.stop(); @@ -395,14 +395,14 @@ namespace lms // bind API resources if (config->getBool("api-subsonic", true)) { - subsonicResource = api::subsonic::createSubsonicResource(database); + subsonicResource = api::subsonic::createSubsonicResource(*database); server.addResource(subsonicResource.get(), "/rest"); } // bind UI entry point server.addEntryPoint(Wt::EntryPointType::Application, [&database, &appManager, uiAuthenticationBackend](const Wt::WEnvironment& env) { - return ui::LmsApplication::create(env, database, appManager, uiAuthenticationBackend); + return ui::LmsApplication::create(env, *database, appManager, uiAuthenticationBackend); }); proxyScannerEventsToApplication(*scannerService, server); diff --git a/src/lms/ui/LmsApplication.cpp b/src/lms/ui/LmsApplication.cpp index 01ecca92..437bed35 100644 --- a/src/lms/ui/LmsApplication.cpp +++ b/src/lms/ui/LmsApplication.cpp @@ -31,7 +31,7 @@ #include "core/Service.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/TrackList.hpp" @@ -183,7 +183,7 @@ namespace lms::ui } } // namespace - std::unique_ptr LmsApplication::create(const Wt::WEnvironment& env, db::Db& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend) + std::unique_ptr LmsApplication::create(const Wt::WEnvironment& env, db::IDb& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend) { return std::make_unique(env, db, appManager, authBackend); } @@ -193,7 +193,7 @@ namespace lms::ui return static_cast(Wt::WApplication::instance()); } - db::Db& LmsApplication::getDb() + db::IDb& LmsApplication::getDb() { return _db; } @@ -235,7 +235,7 @@ namespace lms::ui return _user->userLoginName; } - LmsApplication::LmsApplication(const Wt::WEnvironment& env, db::Db& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend) + LmsApplication::LmsApplication(const Wt::WEnvironment& env, db::IDb& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend) : Wt::WApplication{ env } , _db{ db } , _appManager{ appManager } diff --git a/src/lms/ui/LmsApplication.hpp b/src/lms/ui/LmsApplication.hpp index 8f943561..166716cf 100644 --- a/src/lms/ui/LmsApplication.hpp +++ b/src/lms/ui/LmsApplication.hpp @@ -35,7 +35,7 @@ namespace lms::db { - class Db; + class IDb; class Session; class User; } // namespace lms::db @@ -53,15 +53,15 @@ namespace lms::ui class LmsApplication : public Wt::WApplication { public: - LmsApplication(const Wt::WEnvironment& env, db::Db& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend); + LmsApplication(const Wt::WEnvironment& env, db::IDb& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend); ~LmsApplication(); - static std::unique_ptr create(const Wt::WEnvironment& env, db::Db& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend); + static std::unique_ptr create(const Wt::WEnvironment& env, db::IDb& db, LmsApplicationManager& appManager, AuthenticationBackend authBackend); static LmsApplication* instance(); // Session application data std::shared_ptr getArtworkResource() { return _artworkResource; } - db::Db& getDb(); + db::IDb& getDb(); db::Session& getDbSession(); // always thread safe db::ObjectPtr getUser(); @@ -105,7 +105,7 @@ namespace lms::ui void setUserInfo(db::UserId userId, bool strongAuth); void createHome(); - db::Db& _db; + db::IDb& _db; Wt::Signal<> _preQuit; LmsApplicationManager& _appManager; const AuthenticationBackend _authBackend; diff --git a/src/tools/db-generator/LmsDbGenerator.cpp b/src/tools/db-generator/LmsDbGenerator.cpp index 29d56103..f9aaf881 100644 --- a/src/tools/db-generator/LmsDbGenerator.cpp +++ b/src/tools/db-generator/LmsDbGenerator.cpp @@ -34,7 +34,7 @@ #include "core/SystemPaths.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/MediaLibrary.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -226,8 +226,8 @@ int main(int argc, char* argv[]) throw std::runtime_error{ "File '" + genParams.trackPath.string() + "' does not exist!" }; core::Service config{ core::createConfig(vm["conf"].as()) }; - db::Db db{ config->getPath("working-dir", "/var/lms") / "lms.db" }; - db::Session session{ db }; + auto db{ db::createDb(config->getPath("working-dir", "/var/lms") / "lms.db") }; + db::Session session{ *db }; std::cout << "Starting generation..." << std::endl; GenerationContext genContext{ session }; diff --git a/src/tools/recommendation/LmsRecommendation.cpp b/src/tools/recommendation/LmsRecommendation.cpp index 42acf637..067b3062 100644 --- a/src/tools/recommendation/LmsRecommendation.cpp +++ b/src/tools/recommendation/LmsRecommendation.cpp @@ -29,7 +29,7 @@ #include "core/SystemPaths.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/Session.hpp" #include "database/Track.hpp" @@ -145,11 +145,11 @@ int main(int argc, char* argv[]) core::Service config{ core::createConfig(vm["conf"].as()) }; - Db db{ config->getPath("working-dir", "/var/lms") / "lms.db" }; - Session session{ db }; + auto db{ db::createDb(config->getPath("working-dir", "/var/lms") / "lms.db") }; + Session session{ *db }; std::cout << "Creating recommendation service..." << std::endl; - const auto recommendationService{ recommendation::createRecommendationService(db) }; + const auto recommendationService{ recommendation::createRecommendationService(*db) }; std::cout << "Recommendation service created!" << std::endl; std::cout << "Loading recommendation service..." << std::endl; @@ -160,13 +160,13 @@ int main(int argc, char* argv[]) std::cout << "Recommendation service loaded!" << std::endl; if (vm.count("tracks")) - dumpTracksRecommendation(db, *recommendationService, maxSimilarityCount); + dumpTracksRecommendation(*db, *recommendationService, maxSimilarityCount); if (vm.count("releases")) - dumpReleasesRecommendation(db, *recommendationService, maxSimilarityCount); + dumpReleasesRecommendation(*db, *recommendationService, maxSimilarityCount); if (vm.count("artists")) - dumpArtistsRecommendation(db, *recommendationService, maxSimilarityCount); + dumpArtistsRecommendation(*db, *recommendationService, maxSimilarityCount); } catch (std::exception& e) { diff --git a/src/tools/similarity-parameters/LmsSimilarityParameters.cpp b/src/tools/similarity-parameters/LmsSimilarityParameters.cpp index 65fe041b..ea0e2fa7 100644 --- a/src/tools/similarity-parameters/LmsSimilarityParameters.cpp +++ b/src/tools/similarity-parameters/LmsSimilarityParameters.cpp @@ -26,7 +26,7 @@ #include "core/StreamLogger.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" -#include "database/Db.hpp" +#include "database/IDb.hpp" #include "database/Release.hpp" #include "database/SessionPool.hpp" #include "database/Track.hpp"