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
@@ -23,11 +23,11 @@
namespace lms::db
{
class Db;
class IDb;
}
namespace lms::recommendation
{
class IEngine;
std::unique_ptr<IEngine> createClustersEngine(db::Db& db);
std::unique_ptr<IEngine> createClustersEngine(db::IDb& db);
} // namespace lms::recommendation
@@ -25,10 +25,10 @@
namespace lms::db
{
class Db;
class IDb;
}
namespace lms::recommendation
{
std::unique_ptr<IEngine> createFeaturesEngine(db::Db& db);
std::unique_ptr<IEngine> createFeaturesEngine(db::IDb& db);
}
@@ -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<db::TrackArtistLinkType> linkTypes, std::size_t maxCount) const = 0;
};
std::unique_ptr<IEngine> createEngine(db::Db& db);
std::unique_ptr<IEngine> createEngine(db::IDb& db);
} // namespace lms::recommendation
@@ -22,7 +22,7 @@
#include <algorithm>
#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<IPlaylistGeneratorService> createPlaylistGeneratorService(Db& db, IRecommendationService& recommendationService)
std::unique_ptr<IPlaylistGeneratorService> createPlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService)
{
return std::make_unique<PlaylistGeneratorService>(db, recommendationService);
}
PlaylistGeneratorService::PlaylistGeneratorService(Db& db, IRecommendationService& recommendationService)
PlaylistGeneratorService::PlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService)
: _db{ db }
, _recommendationService{ recommendationService }
{
@@ -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<std::unique_ptr<PlaylistGeneratorConstraint::IConstraint>> _constraints;
};
@@ -21,7 +21,7 @@
#include <vector>
#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<IRecommendationService> createRecommendationService(db::Db& db)
std::unique_ptr<IRecommendationService> createRecommendationService(db::IDb& db)
{
return std::make_unique<RecommendationService>(db);
}
RecommendationService::RecommendationService(db::Db& db)
RecommendationService::RecommendationService(db::IDb& db)
: _db{ db }
{
load();
@@ -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<IEngine> engine, bool forceReload, const ProgressCallback& progressCallback);
db::Db& _db;
db::IDb& _db;
std::optional<EngineType> _engineType;
std::unique_ptr<IEngine> _engine;
};
@@ -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<IEngine> createClustersEngine(Db& db)
std::unique_ptr<IEngine> createClustersEngine(db::IDb& db)
{
return std::make_unique<ClusterEngine>(db);
}
@@ -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<db::TrackArtistLinkType> linkTypes, std::size_t maxCount) const override;
db::Db& _db;
db::IDb& _db;
};
} // namespace lms::recommendation
@@ -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<IEngine> createFeaturesEngine(Db& db)
std::unique_ptr<IEngine> createFeaturesEngine(db::IDb& db)
{
return std::make_unique<FeaturesEngine>(db);
}
@@ -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<IdType>& objectPositions,
std::size_t maxCount) const;
db::Db& _db;
db::IDb& _db;
bool _loadCancelled{};
std::unique_ptr<som::Network> _network;
double _networkRefVectorsDistanceMedian{};
@@ -21,7 +21,7 @@
#include <algorithm>
#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 }
{
}
@@ -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
@@ -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 }
{
}
@@ -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
@@ -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<IPlaylistGeneratorService> createPlaylistGeneratorService(db::Db& db, IRecommendationService& recommendationService);
std::unique_ptr<IPlaylistGeneratorService> createPlaylistGeneratorService(db::IDb& db, IRecommendationService& recommendationService);
} // namespace lms::recommendation
@@ -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<db::TrackArtistLinkType> linkTypes, std::size_t maxCount) const = 0;
};
std::unique_ptr<IRecommendationService> createRecommendationService(db::Db& db);
std::unique_ptr<IRecommendationService> createRecommendationService(db::IDb& db);
} // namespace lms::recommendation