kreta/Kreta.BusinessLogic/Caching/TanuloAdatlapCache.cs
2024-03-13 00:33:46 +01:00

45 lines
1.6 KiB
C#

using System;
using Kreta.Core;
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Tanulo;
using Kreta.Framework.Caching;
namespace Kreta.BusinessLogic.Caching
{
public class TanuloAdatlapCache : GenericCache<object>
{
private static readonly string TanuloAdatlapCacheKeyPrefix = $"{Constants.Cache.CacheKeyPrefix}TanuloAdatlapCache_";
public TanuloAdatlapCache(Framework.Caching.CacheManager cacheManager) : base(cacheManager, nameof(TanuloAdatlapCache))
{
}
public TanuloAdatResponse GetOrAddTanuloAdatlap(int userId, string instituteCode, Func<TanuloAdatResponse> value)
{
return GetOrAddValue(TanuloAdatlapCacheKeyPrefix, userId, instituteCode, value);
}
public void RemoveTanuloAdatlap(int userId, string instituteCode)
{
RemoveValue(TanuloAdatlapCacheKeyPrefix, userId, instituteCode);
}
protected string GetCacheKey(string keyPrefix, int userId, string instituteCode)
{
return $"{keyPrefix}{instituteCode}.{userId}";
}
protected T GetOrAddValue<T>(string cacheKeyPrefix, int userId, string instituteCode, Func<T> valueFactory) where T : class
{
string key = GetCacheKey(cacheKeyPrefix, userId, instituteCode);
object value = GetOrAdd(key, _ => valueFactory());
return (T)value;
}
protected void RemoveValue(string cacheKeyPrefix, int userId, string instituteCode)
{
string key = GetCacheKey(cacheKeyPrefix, userId, instituteCode);
Remove(key);
}
}
}