23 lines
707 B
C#
23 lines
707 B
C#
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|