using System.Collections.Generic; using NzbDrone.Common.Cache; using NzbDrone.Common.Messaging; namespace NzbDrone.Core.Datastore { public abstract class CachedBasicRepository : BasicRepository where TModel : ModelBase, new() { private readonly ICacheManger _cacheManger; protected CachedBasicRepository(IDatabase database, IMessageAggregator messageAggregator) : base(database, messageAggregator) { _cacheManger = new CacheManger(); } protected ICached GetCache(string name) { return _cacheManger.GetCache(GetType(), name); } protected override void OnModelChanged(IEnumerable models) { PurgeCache(); } protected override void OnModelDeleted(IEnumerable models) { PurgeCache(); } private void PurgeCache() { foreach (var model in _cacheManger.Caches) { model.Clear(); } } } }