non-working cached repository.

This commit is contained in:
Keivan Beigi 2013-05-30 16:32:50 -07:00
commit 5b2410da3f
6 changed files with 92 additions and 5 deletions

View file

@ -32,6 +32,7 @@ namespace NzbDrone.Core.Datastore
TModel Single();
}
public class BasicRepository<TModel> : IBasicRepository<TModel> where TModel : ModelBase, new()
{
private readonly IDatabase _database;
@ -202,6 +203,16 @@ namespace NzbDrone.Core.Datastore
}
}
protected virtual void OnModelChanged(IEnumerable<TModel> models)
{
}
protected virtual void OnModelDeleted(IEnumerable<TModel> models)
{
}
protected virtual bool PublishModelEvents
{
get { return false; }

View file

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