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"