mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-21 14:03:29 -07:00
SeriesProvider gets QualityProfile in single call to DB.
SeriesProvider.GetAllSeriesWithEpisodeCount gets seasonCount(with or without specials), total episode count & episodeWithFile count (excluding ignored episodes). Added tests for SeriesWithEpisodeCount.
This commit is contained in:
parent
5a99d374d9
commit
431d850d32
6 changed files with 197 additions and 91 deletions
|
@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
|
|||
using NLog;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Repository;
|
||||
using NzbDrone.Core.Repository.Quality;
|
||||
using PetaPoco;
|
||||
using TvdbLib.Data;
|
||||
|
||||
|
@ -17,17 +18,15 @@ namespace NzbDrone.Core.Providers
|
|||
private readonly ConfigProvider _configProvider;
|
||||
private readonly TvDbProvider _tvDbProvider;
|
||||
private readonly IDatabase _database;
|
||||
private readonly QualityProvider _qualityProvider;
|
||||
private readonly SceneMappingProvider _sceneNameMappingProvider;
|
||||
private static readonly Regex TimeRegex = new Regex(@"^(?<time>\d+:?\d*)\W*(?<meridiem>am|pm)?", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
public SeriesProvider(IDatabase database, ConfigProvider configProviderProvider, QualityProvider qualityProvider,
|
||||
public SeriesProvider(IDatabase database, ConfigProvider configProviderProvider,
|
||||
TvDbProvider tvDbProviderProvider, SceneMappingProvider sceneNameMappingProvider)
|
||||
{
|
||||
_database = database;
|
||||
_configProvider = configProviderProvider;
|
||||
_tvDbProvider = tvDbProviderProvider;
|
||||
_qualityProvider = qualityProvider;
|
||||
_sceneNameMappingProvider = sceneNameMappingProvider;
|
||||
}
|
||||
|
||||
|
@ -37,15 +36,36 @@ namespace NzbDrone.Core.Providers
|
|||
|
||||
public virtual IList<Series> GetAllSeries()
|
||||
{
|
||||
var series = _database.Fetch<Series>();
|
||||
series.ForEach(c => c.QualityProfile = _qualityProvider.Get(c.QualityProfileId));
|
||||
var series = _database.Fetch<Series, QualityProfile>(@"SELECT * FROM Series
|
||||
INNER JOIN QualityProfiles ON Series.QualityProfileId = QualityProfiles.QualityProfileId");
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
public virtual IList<Series> GetAllSeriesWithEpisodeCount(bool ignoreSpecials)
|
||||
{
|
||||
var seasonNumber = 0;
|
||||
|
||||
if (!ignoreSpecials)
|
||||
seasonNumber = -1;
|
||||
|
||||
var series = _database.Fetch<Series, QualityProfile>(@"SELECT Series.*, COUNT (NULLIF(Ignored, 1)) AS EpisodeCount,
|
||||
SUM(CASE WHEN Ignored = 0 AND EpisodeFileId > 0 THEN 1 ELSE 0 END) as EpisodeFileCount,
|
||||
COUNT (DISTINCT(NULLIF(SeasonNumber, @0))) as SeasonCount,
|
||||
QualityProfiles.*
|
||||
FROM Series
|
||||
INNER JOIN QualityProfiles ON Series.QualityProfileId = QualityProfiles.QualityProfileId
|
||||
JOIN Episodes ON Series.SeriesId = Episodes.SeriesId
|
||||
GROUP BY seriesId", seasonNumber);
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
public virtual Series GetSeries(int seriesId)
|
||||
{
|
||||
var series = _database.Single<Series>("WHERE seriesId= @0", seriesId);
|
||||
series.QualityProfile = _qualityProvider.Get(series.QualityProfileId);
|
||||
var series = _database.Fetch<Series, QualityProfile>(@"SELECT * FROM Series
|
||||
INNER JOIN QualityProfiles ON Series.QualityProfileId = QualityProfiles.QualityProfileId
|
||||
WHERE seriesId= @0", seriesId).Single();
|
||||
|
||||
return series;
|
||||
}
|
||||
|
@ -117,15 +137,11 @@ namespace NzbDrone.Core.Providers
|
|||
return GetSeries(seriesId.Value);
|
||||
}
|
||||
|
||||
var series = _database.FirstOrDefault<Series>("WHERE CleanTitle = @0", normalizeTitle);
|
||||
var series = _database.Fetch<Series, QualityProfile>(@"SELECT * FROM Series
|
||||
INNER JOIN QualityProfiles ON Series.QualityProfileId = QualityProfiles.QualityProfileId
|
||||
WHERE CleanTitle = @0", normalizeTitle).FirstOrDefault();
|
||||
|
||||
if (series != null)
|
||||
{
|
||||
series.QualityProfile = _qualityProvider.Get(series.QualityProfileId);
|
||||
return series;
|
||||
}
|
||||
|
||||
return null;
|
||||
return series;
|
||||
}
|
||||
|
||||
public virtual void UpdateSeries(Series series)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue