|
|
|
@ -30,7 +30,8 @@ namespace NzbDrone.Core.Tv
|
|
|
|
|
void SetMonitoredFlat(Episode episode, bool monitored);
|
|
|
|
|
void SetMonitoredBySeason(int seriesId, int seasonNumber, bool monitored);
|
|
|
|
|
void SetMonitored(IEnumerable<int> ids, bool monitored);
|
|
|
|
|
void SetFileId(int episodeId, int fileId);
|
|
|
|
|
void SetFileId(Episode episode, int fileId);
|
|
|
|
|
void ClearFileId(Episode episode, bool unmonitor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class EpisodeRepository : BasicRepository<Episode>, IEpisodeRepository
|
|
|
|
@ -163,6 +164,8 @@ namespace NzbDrone.Core.Tv
|
|
|
|
|
{
|
|
|
|
|
episode.Monitored = monitored;
|
|
|
|
|
SetFields(episode, p => p.Monitored);
|
|
|
|
|
|
|
|
|
|
ModelUpdated(episode, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetMonitoredBySeason(int seriesId, int seasonNumber, bool monitored)
|
|
|
|
@ -173,30 +176,39 @@ namespace NzbDrone.Core.Tv
|
|
|
|
|
mapper.AddParameter("seasonNumber", seasonNumber);
|
|
|
|
|
mapper.AddParameter("monitored", monitored);
|
|
|
|
|
|
|
|
|
|
const string sql = "UPDATE Episodes " +
|
|
|
|
|
"SET Monitored = @monitored " +
|
|
|
|
|
"WHERE SeriesId = @seriesId " +
|
|
|
|
|
"AND SeasonNumber = @seasonNumber";
|
|
|
|
|
var sqlUpdate = $"UPDATE Episodes SET Monitored = @monitored WHERE SeriesId = @seriesId AND SeasonNumber = @seasonNumber AND Monitored != @monitored";
|
|
|
|
|
|
|
|
|
|
mapper.ExecuteNonQuery(sql);
|
|
|
|
|
mapper.ExecuteNonQuery(sqlUpdate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetMonitored(IEnumerable<int> ids, bool monitored)
|
|
|
|
|
{
|
|
|
|
|
var mapper = _database.GetDataMapper();
|
|
|
|
|
|
|
|
|
|
var mapper = DataMapper;
|
|
|
|
|
|
|
|
|
|
mapper.AddParameter("monitored", monitored);
|
|
|
|
|
|
|
|
|
|
var sql = "UPDATE Episodes " +
|
|
|
|
|
"SET Monitored = @monitored " +
|
|
|
|
|
$"WHERE Id IN ({string.Join(", ", ids)})";
|
|
|
|
|
var sqlUpdate = $"UPDATE Episodes SET Monitored = @monitored WHERE Id IN ({string.Join(", ", ids)}) AND Monitored != @monitored";
|
|
|
|
|
|
|
|
|
|
mapper.ExecuteNonQuery(sqlUpdate);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetFileId(Episode episode, int fileId)
|
|
|
|
|
{
|
|
|
|
|
episode.EpisodeFileId = fileId;
|
|
|
|
|
|
|
|
|
|
SetFields(episode, ep => ep.EpisodeFileId);
|
|
|
|
|
|
|
|
|
|
mapper.ExecuteNonQuery(sql);
|
|
|
|
|
ModelUpdated(episode, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetFileId(int episodeId, int fileId)
|
|
|
|
|
public void ClearFileId(Episode episode, bool unmonitor)
|
|
|
|
|
{
|
|
|
|
|
SetFields(new Episode { Id = episodeId, EpisodeFileId = fileId }, episode => episode.EpisodeFileId);
|
|
|
|
|
episode.EpisodeFileId = 0;
|
|
|
|
|
episode.Monitored &= !unmonitor;
|
|
|
|
|
|
|
|
|
|
SetFields(episode, ep => ep.EpisodeFileId, ep => ep.Monitored);
|
|
|
|
|
|
|
|
|
|
ModelUpdated(episode, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SortBuilder<Episode> GetMissingEpisodesQuery(PagingSpec<Episode> pagingSpec, DateTime currentTime, int startingSeasonNumber)
|
|
|
|
|