DOIOU/DOIOU.Server/DataRegistry.cs

23 lines
707 B
C#
Raw Permalink Normal View History

2022-05-22 14:09:21 +02:00
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
namespace DOIOU.Server
{
public class DataRegistry
{
private readonly MemoryCache _cache = new(new MemoryCacheOptions() { ExpirationScanFrequency = TimeSpan.FromMinutes(30) });
public string? Query(string doiou)
{
if (!_cache.TryGetValue(doiou, out string? url))
{
using DataContext db = new();
var record = db.Records.AsNoTracking().SingleOrDefault(r => r.Id == doiou);
_cache.Set(doiou, record?.Url, TimeSpan.FromMinutes(30));
return record?.Url;
}
return url;
}
}
}