void.cat/VoidCat/Services/BasicCacheStore.cs

45 lines
966 B
C#
Raw Normal View History

2022-03-07 13:38:53 +00:00
using VoidCat.Services.Abstractions;
namespace VoidCat.Services;
public abstract class BasicCacheStore<TStore> : IBasicStore<TStore>
{
protected readonly ICache _cache;
protected BasicCacheStore(ICache cache)
{
_cache = cache;
}
public virtual ValueTask<TStore?> Get(Guid id)
{
return _cache.Get<TStore>(MapKey(id));
}
2022-06-06 21:51:25 +00:00
public virtual async ValueTask<IReadOnlyList<TStore>> Get(Guid[] ids)
{
var ret = new List<TStore>();
foreach (var id in ids)
{
var r = await _cache.Get<TStore>(MapKey(id));
if (r != null)
{
ret.Add(r);
}
}
return ret;
}
2022-03-07 13:38:53 +00:00
public virtual ValueTask Set(Guid id, TStore obj)
{
return _cache.Set(MapKey(id), obj);
}
public virtual ValueTask Delete(Guid id)
{
return _cache.Delete(MapKey(id));
}
public abstract string MapKey(Guid id);
}