using VoidCat.Model;
using VoidCat.Services.Abstractions;
namespace VoidCat.Services.VirusScanner;
///
public class CacheVirusScanStore : BasicCacheStore, IVirusScanStore
{
public CacheVirusScanStore(ICache cache) : base(cache)
{
}
///
public override async ValueTask Add(Guid id, VirusScanResult obj)
{
await base.Add(id, obj);
await Cache.AddToList(MapFilesKey(id), obj.Id.ToString());
}
///
public async ValueTask GetByFile(Guid id)
{
var scans = await Cache.GetList(MapFilesKey(id));
if (scans.Length > 0)
{
return await Get(Guid.Parse(scans.First()));
}
return default;
}
///
protected override string MapKey(Guid id)
=> $"virus-scan:{id}";
private string MapFilesKey(Guid id)
=> $"virus-scan:file:{id}";
}