mirror of
https://github.com/Radarr/Radarr
synced 2025-03-02 18:06:08 +00:00
non-working cached repository.
This commit is contained in:
parent
23e9c725f3
commit
5b2410da3f
6 changed files with 92 additions and 5 deletions
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.EnsureThat;
|
using NzbDrone.Common.EnsureThat;
|
||||||
|
|
||||||
namespace NzbDrone.Common.Cache
|
namespace NzbDrone.Common.Cache
|
||||||
|
@ -7,15 +8,18 @@ public interface ICacheManger
|
||||||
{
|
{
|
||||||
ICached<T> GetCache<T>(Type host, string name);
|
ICached<T> GetCache<T>(Type host, string name);
|
||||||
ICached<T> GetCache<T>(Type host);
|
ICached<T> GetCache<T>(Type host);
|
||||||
|
//ICollection<ICached<T>> Caches<T> { get;}
|
||||||
|
void Clear();
|
||||||
|
ICollection<ICached> Caches { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CacheManger : ICacheManger
|
public class CacheManger : ICacheManger
|
||||||
{
|
{
|
||||||
private readonly ICached<object> _cache;
|
private readonly ICached<ICached> _cache;
|
||||||
|
|
||||||
public CacheManger()
|
public CacheManger()
|
||||||
{
|
{
|
||||||
_cache = new Cached<object>();
|
_cache = new Cached<ICached>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +29,14 @@ public ICached<T> GetCache<T>(Type host)
|
||||||
return GetCache<T>(host, host.FullName);
|
return GetCache<T>(host, host.FullName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
_cache.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICollection<ICached> Caches { get { return _cache.Values; } }
|
||||||
|
|
||||||
public ICached<T> GetCache<T>(Type host, string name)
|
public ICached<T> GetCache<T>(Type host, string name)
|
||||||
{
|
{
|
||||||
Ensure.That(() => host).IsNotNull();
|
Ensure.That(() => host).IsNotNull();
|
||||||
|
|
|
@ -64,5 +64,20 @@ public void Remove(string key)
|
||||||
T value;
|
T value;
|
||||||
_store.TryRemove(key, out value);
|
_store.TryRemove(key, out value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ICollection<T> Values
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _store.Values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public ICollection<string> Keys
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _store.Keys;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,15 +1,23 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace NzbDrone.Common.Cache
|
namespace NzbDrone.Common.Cache
|
||||||
{
|
{
|
||||||
public interface ICached<T>
|
public interface ICached
|
||||||
{
|
{
|
||||||
void Set(string key, T value);
|
|
||||||
T Get(string key, Func<T> function);
|
|
||||||
bool ContainsKey(string key);
|
bool ContainsKey(string key);
|
||||||
void Clear();
|
void Clear();
|
||||||
void Remove(string key);
|
void Remove(string key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ICached<T> : ICached
|
||||||
|
{
|
||||||
|
void Set(string key, T value);
|
||||||
|
T Get(string key, Func<T> function);
|
||||||
T Get(string key);
|
T Get(string key);
|
||||||
T Find(string key);
|
T Find(string key);
|
||||||
|
|
||||||
|
ICollection<T> Values { get; }
|
||||||
|
ICollection<string> Keys { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -32,6 +32,7 @@ namespace NzbDrone.Core.Datastore
|
||||||
TModel Single();
|
TModel Single();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class BasicRepository<TModel> : IBasicRepository<TModel> where TModel : ModelBase, new()
|
public class BasicRepository<TModel> : IBasicRepository<TModel> where TModel : ModelBase, new()
|
||||||
{
|
{
|
||||||
private readonly IDatabase _database;
|
private readonly IDatabase _database;
|
||||||
|
@ -202,6 +203,16 @@ private void PublishModelEvent(TModel model, RepositoryAction action)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void OnModelChanged(IEnumerable<TModel> models)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void OnModelDeleted(IEnumerable<TModel> models)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual bool PublishModelEvents
|
protected virtual bool PublishModelEvents
|
||||||
{
|
{
|
||||||
get { return false; }
|
get { return false; }
|
||||||
|
|
40
NzbDrone.Core/Datastore/CachedBasicRepository.cs
Normal file
40
NzbDrone.Core/Datastore/CachedBasicRepository.cs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -193,6 +193,7 @@
|
||||||
<Compile Include="DataAugmentation\Scene\SceneMappingProxy.cs" />
|
<Compile Include="DataAugmentation\Scene\SceneMappingProxy.cs" />
|
||||||
<Compile Include="DataAugmentation\Scene\SceneMappingRepository.cs" />
|
<Compile Include="DataAugmentation\Scene\SceneMappingRepository.cs" />
|
||||||
<Compile Include="DataAugmentation\Scene\UpdateSceneMappingCommand.cs" />
|
<Compile Include="DataAugmentation\Scene\UpdateSceneMappingCommand.cs" />
|
||||||
|
<Compile Include="Datastore\CachedBasicRepository.cs" />
|
||||||
<Compile Include="Datastore\Converters\BooleanIntConverter.cs" />
|
<Compile Include="Datastore\Converters\BooleanIntConverter.cs" />
|
||||||
<Compile Include="Datastore\Converters\QualityIntConverter.cs" />
|
<Compile Include="Datastore\Converters\QualityIntConverter.cs" />
|
||||||
<Compile Include="Datastore\Converters\Int32Converter.cs" />
|
<Compile Include="Datastore\Converters\Int32Converter.cs" />
|
||||||
|
|
Loading…
Reference in a new issue