using Microsoft.Extensions.Caching.Memory; using Mirea.Api.Security.Common.Interfaces; using System.Threading.Tasks; using System.Threading; using System; namespace Mirea.Api.Endpoint.Common.Services.Security; public class MemoryCacheService(IMemoryCache cache) : ICacheService { public Task SetAsync(string key, T value, TimeSpan? absoluteExpirationRelativeToNow = null, TimeSpan? slidingExpiration = null, CancellationToken cancellationToken = default) { var options = new MemoryCacheEntryOptions { AbsoluteExpirationRelativeToNow = absoluteExpirationRelativeToNow, SlidingExpiration = slidingExpiration }; cache.Set(key, value, options); return Task.CompletedTask; } public Task GetAsync(string key, CancellationToken cancellationToken = default) { cache.TryGetValue(key, out T? value); return Task.FromResult(value); } public Task RemoveAsync(string key, CancellationToken cancellationToken = default) { cache.Remove(key); return Task.CompletedTask; } }