using System; using System.Collections.Generic; using System.Linq; using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Update.History { public interface IUpdateHistoryRepository : IBasicRepository { UpdateHistory LastInstalled(); UpdateHistory PreviouslyInstalled(); List InstalledSince(DateTime dateTime); } public class UpdateHistoryRepository : BasicRepository, IUpdateHistoryRepository { public UpdateHistoryRepository(ILogDatabase logDatabase, IEventAggregator eventAggregator) : base(logDatabase, eventAggregator) { } public UpdateHistory LastInstalled() { var history = Query(x => x.EventType == UpdateHistoryEventType.Installed) .OrderByDescending(v => v.Date) .Take(1) .FirstOrDefault(); return history; } public UpdateHistory PreviouslyInstalled() { var history = Query(x => x.EventType == UpdateHistoryEventType.Installed) .OrderByDescending(v => v.Date) .Skip(1) .Take(1) .FirstOrDefault(); return history; } public List InstalledSince(DateTime dateTime) { var history = Query(v => v.EventType == UpdateHistoryEventType.Installed && v.Date >= dateTime) .OrderBy(v => v.Date) .ToList(); return history; } } }