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
@@ -152,12 +152,12 @@ namespace lms::scanner
} // namespace
std::unique_ptr<IScannerService> createScannerService(Db& db)
std::unique_ptr<IScannerService> createScannerService(db::IDb& db)
{
return std::make_unique<ScannerService>(db);
}
ScannerService::ScannerService(Db& db)
ScannerService::ScannerService(db::IDb& db)
: _db{ db }
, _jobScheduler{ core::createJobScheduler("Scanner", getScannerThreadCount()) }
{
@@ -32,7 +32,7 @@
#include <Wt/WSignal.h>
#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<core::IJobScheduler> _jobScheduler;
std::vector<std::unique_ptr<IFileScanner>> _fileScanners;
@@ -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 }
{
@@ -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<IFileScanOperation> createScanOperation(FileToScan&& fileToScan) const override;
db::Db& _db;
db::IDb& _db;
const ScannerSettings& _settings;
};
} // namespace lms::scanner
@@ -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 }
{
@@ -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;
@@ -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
@@ -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<IFileScanOperation> createScanOperation(FileToScan&& fileToScan) const override;
db::Db& _db;
db::IDb& _db;
const ScannerSettings& _settings;
std::unique_ptr<metadata::IAudioFileParser> _metadataParser;
};
@@ -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 }
@@ -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;
};
@@ -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 }
{
@@ -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<IFileScanOperation> createScanOperation(FileToScan&& fileToScan) const override;
db::Db& _db;
db::IDb& _db;
ScannerSettings& _settings;
};
} // namespace lms::scanner
@@ -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 }
{
@@ -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<IFileScanOperation> createScanOperation(FileToScan&& fileToScan) const override;
db::Db& _db;
db::IDb& _db;
ScannerSettings& _settings;
};
} // namespace lms::scanner
@@ -23,7 +23,7 @@
#include <optional>
#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 }
{
@@ -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<IFileScanOperation> createScanOperation(FileToScan&& fileToScan) const override;
db::Db& _db;
db::IDb& _db;
ScannerSettings& _settings;
};
} // namespace lms::scanner
@@ -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"
@@ -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<db::ArtistId> artistIdRange)
ComputeArtistArtworkAssociationsJob(db::IDb& db, const SearchArtistArtworkParams& searchParams, db::IdRange<db::ArtistId> 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<db::ArtistId> _artistIdRange;
std::vector<ArtistArtworkAssociation> _associations;
@@ -22,8 +22,8 @@
#include <deque>
#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"
@@ -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<db::PlayListFileId> playListFileIdRange)
ComputePlayListFileAssociationsJob(db::IDb& db, const ScannerSettings& settings, db::IdRange<db::PlayListFileId> 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<db::PlayListFileId> _playListFileIdRange;
std::vector<PlayListFileAssociation> _associations;
@@ -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<db::ReleaseId> artistIdRange)
ComputeReleaseArtworkAssociationsJob(db::IDb& db, const SearchReleaseArtworkParams& searchParams, db::IdRange<db::ReleaseId> 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<db::ReleaseId> _artistIdRange;
std::vector<ReleaseArtworkAssociation> _associations;
@@ -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<db::TrackId> trackIdRange)
ComputeTrackArtworkAssociationsJob(db::IDb& db, db::IdRange<db::TrackId> trackIdRange)
: _db{ db }
, _trackIdRange{ trackIdRange }
{
@@ -209,7 +209,7 @@ namespace lms::scanner
});
}
db::Db& _db;
db::IDb& _db;
db::IdRange<db::TrackId> _trackIdRange;
std::vector<TrackArtworksAssociation> _trackAssociations;
std::size_t _processedTrackCount{};
@@ -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<IFileScanner*> 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;
@@ -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"
@@ -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"
@@ -19,7 +19,7 @@
#include "ScanStepCompact.hpp"
#include "database/Db.hpp"
#include "database/IDb.hpp"
#include "database/Session.hpp"
#include "ScanContext.hpp"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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<IScannerService> createScannerService(db::Db& db);
std::unique_ptr<IScannerService> createScannerService(db::IDb& db);
} // namespace lms::scanner