using System.Collections.Generic; using System.Linq; using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Extras.Files { public interface IExtraFileRepository : IBasicRepository where TExtraFile : ExtraFile, new() { void DeleteForSeries(int seriesId); void DeleteForSeason(int seriesId, int seasonNumber); void DeleteForEpisodeFile(int episodeFileId); List GetFilesBySeries(int seriesId); List GetFilesBySeason(int seriesId, int seasonNumber); List GetFilesByEpisodeFile(int episodeFileId); TExtraFile FindByPath(string path); } public class ExtraFileRepository : BasicRepository, IExtraFileRepository where TExtraFile : ExtraFile, new() { public ExtraFileRepository(IMainDatabase database, IEventAggregator eventAggregator) : base(database, eventAggregator) { } public void DeleteForSeries(int seriesId) { Delete(c => c.SeriesId == seriesId); } public void DeleteForSeason(int seriesId, int seasonNumber) { Delete(c => c.SeriesId == seriesId && c.SeasonNumber == seasonNumber); } public void DeleteForEpisodeFile(int episodeFileId) { Delete(c => c.EpisodeFileId == episodeFileId); } public List GetFilesBySeries(int seriesId) { return Query.Where(c => c.SeriesId == seriesId); } public List GetFilesBySeason(int seriesId, int seasonNumber) { return Query.Where(c => c.SeriesId == seriesId && c.SeasonNumber == seasonNumber); } public List GetFilesByEpisodeFile(int episodeFileId) { return Query.Where(c => c.EpisodeFileId == episodeFileId); } public TExtraFile FindByPath(string path) { return Query.Where(c => c.RelativePath == path).SingleOrDefault(); } } }