Created an interface for the Db class

This commit is contained in:
emeric
2025-07-09 00:29:16 +02:00
parent ecdfa8d68d
commit 764c92698c
106 changed files with 315 additions and 284 deletions
@@ -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<IFeedbackService> createFeedbackService(boost::asio::io_context& ioContext, Db& db)
std::unique_ptr<IFeedbackService> createFeedbackService(boost::asio::io_context& ioContext, db::IDb& db)
{
return std::make_unique<FeedbackService>(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<db::FeedbackBackend> FeedbackService::getUserFeedbackBackend(UserId userId)
std::optional<db::FeedbackBackend> FeedbackService::getUserFeedbackBackend(db::UserId userId)
{
std::optional<db::FeedbackBackend> feedbackBackend;
@@ -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<typename ObjType, typename ObjIdType, typename RatedObjType>
std::optional<db::Rating> getRating(db::UserId userId, ObjIdType objectId);
db::Db& _db;
db::IDb& _db;
std::unordered_map<db::FeedbackBackend, std::unique_ptr<IFeedbackBackend>> _backends;
};
@@ -19,7 +19,7 @@
#pragma once
#include "database/Db.hpp"
#include "database/IDb.hpp"
#include "database/Session.hpp"
#include "database/User.hpp"
@@ -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 }
{
}
@@ -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
@@ -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 }
@@ -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;
@@ -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<core::IConfig>::get()->getString("listenbrainz-api-base-url", "https://api.listenbrainz.org") }
@@ -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<core::http::IClient> _client;
FeedbacksSynchronizer _feedbacksSynchronizer;
@@ -34,7 +34,7 @@
namespace lms::db
{
class Db;
class IDb;
}
namespace lms::feedback
@@ -125,6 +125,6 @@ namespace lms::feedback
virtual std::optional<db::Rating> getRating(db::UserId userId, db::TrackId trackId) = 0;
};
std::unique_ptr<IFeedbackService> createFeedbackService(boost::asio::io_context& ioContext, db::Db& db);
std::unique_ptr<IFeedbackService> createFeedbackService(boost::asio::io_context& ioContext, db::IDb& db);
} // namespace lms::feedback