mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-14 02:37:08 -07:00
Less shitty way to do series stats for single requests and fixed tests
This commit is contained in:
parent
c3b8b52644
commit
40f49d7385
3 changed files with 71 additions and 21 deletions
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using NzbDrone.Core.Datastore;
|
||||
|
||||
namespace NzbDrone.Core.SeriesStats
|
||||
|
@ -7,6 +8,7 @@ namespace NzbDrone.Core.SeriesStats
|
|||
public interface ISeriesStatisticsRepository
|
||||
{
|
||||
List<SeriesStatistics> SeriesStatistics();
|
||||
SeriesStatistics SeriesStatistics(int seriesId);
|
||||
}
|
||||
|
||||
public class SeriesStatisticsRepository : ISeriesStatisticsRepository
|
||||
|
@ -24,16 +26,44 @@ namespace NzbDrone.Core.SeriesStats
|
|||
|
||||
mapper.AddParameter("currentDate", DateTime.UtcNow);
|
||||
|
||||
const string queryText = @"SELECT
|
||||
SeriesId,
|
||||
SUM(CASE WHEN Monitored = 1 AND Airdate <= @currentDate THEN 1 ELSE 0 END) AS EpisodeCount,
|
||||
SUM(CASE WHEN Monitored = 1 AND Episodes.EpisodeFileId > 0 AND AirDate <= @currentDate THEN 1 ELSE 0 END) as EpisodeFileCount,
|
||||
MAX(Episodes.SeasonNumber) as SeasonCount,
|
||||
MIN(CASE WHEN AirDate < @currentDate THEN NULL ELSE AirDate END) as NextAiringString
|
||||
FROM Episodes
|
||||
GROUP BY SeriesId";
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine(GetSelectClause());
|
||||
sb.AppendLine(GetGroupByClause());
|
||||
var queryText = sb.ToString();
|
||||
|
||||
return mapper.Query<SeriesStatistics>(queryText);
|
||||
}
|
||||
|
||||
public SeriesStatistics SeriesStatistics(int seriesId)
|
||||
{
|
||||
var mapper = _database.GetDataMapper();
|
||||
|
||||
mapper.AddParameter("currentDate", DateTime.UtcNow);
|
||||
mapper.AddParameter("seriesId", seriesId);
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine(GetSelectClause());
|
||||
sb.AppendLine("WHERE SeriesId = @seriesId");
|
||||
sb.AppendLine(GetGroupByClause());
|
||||
var queryText = sb.ToString();
|
||||
|
||||
return mapper.Find<SeriesStatistics>(queryText);
|
||||
}
|
||||
|
||||
private string GetSelectClause()
|
||||
{
|
||||
return @"SELECT
|
||||
SeriesId,
|
||||
SUM(CASE WHEN Monitored = 1 AND Airdate <= @currentDate THEN 1 ELSE 0 END) AS EpisodeCount,
|
||||
SUM(CASE WHEN Monitored = 1 AND Episodes.EpisodeFileId > 0 AND AirDate <= @currentDate THEN 1 ELSE 0 END) AS EpisodeFileCount,
|
||||
MAX(Episodes.SeasonNumber) as SeasonCount,
|
||||
MIN(CASE WHEN AirDate < @currentDate THEN NULL ELSE AirDate END) AS NextAiringString
|
||||
FROM Episodes";
|
||||
}
|
||||
|
||||
private string GetGroupByClause()
|
||||
{
|
||||
return "GROUP BY SeriesId";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue