using System.Collections.Generic; using System.Linq; using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.MediaFiles { public interface IMediaFileRepository : IBasicRepository { List GetFilesBySeries(int seriesId); List GetFilesBySeason(int seriesId, int seasonNumber); List GetFilesWithoutMediaInfo(); List GetFilesWithRelativePath(int seriesId, string relativePath); void DeleteForSeries(List seriesIds); } public class MediaFileRepository : BasicRepository, IMediaFileRepository { public MediaFileRepository(IMainDatabase database, IEventAggregator eventAggregator) : base(database, eventAggregator) { } public List GetFilesBySeries(int seriesId) { return Query(c => c.SeriesId == seriesId).ToList(); } public List GetFilesBySeason(int seriesId, int seasonNumber) { return Query(c => c.SeriesId == seriesId && c.SeasonNumber == seasonNumber).ToList(); } public List GetFilesWithoutMediaInfo() { return Query(c => c.MediaInfo == null).ToList(); } public List GetFilesWithRelativePath(int seriesId, string relativePath) { return Query(c => c.SeriesId == seriesId && c.RelativePath == relativePath) .ToList(); } public void DeleteForSeries(List seriesIds) { Delete(x => seriesIds.Contains(x.SeriesId)); } } }