using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; namespace Data.Abstractions { public interface IDataValueCache<TEntityType, TReturnType> where TEntityType : class { void SetCacheItem(Func<DbSet<TEntityType>, CancellationToken, Task<TReturnType>> itemGetter, string keyName, TimeSpan? expirationTime = null, bool autoRefresh = false); void SetCacheItem(Func<DbSet<TEntityType>, IEnumerable<object>, CancellationToken, Task<TReturnType>> itemGetter, string keyName, IEnumerable<object> ids = null, TimeSpan? expirationTime = null, bool autoRefresh = false); Task<TReturnType> GetCacheItem(string keyName, CancellationToken token = default); Task<TReturnType> GetCacheItem(string keyName, IEnumerable<object> ids = null, CancellationToken token = default); } }