Kieran
4de977c1dd
All checks were successful
continuous-integration/drone/push Build is passing
Co-authored-by: Kieran <kieran@harkin.me> Reviewed-on: #65
38 lines
980 B
C#
38 lines
980 B
C#
using VoidCat.Database;
|
|
using VoidCat.Services.Abstractions;
|
|
|
|
namespace VoidCat.Services.VirusScanner;
|
|
|
|
/// <inheritdoc cref="IVirusScanStore"/>
|
|
public class CacheVirusScanStore : BasicCacheStore<VirusScanResult>, IVirusScanStore
|
|
{
|
|
public CacheVirusScanStore(ICache cache) : base(cache)
|
|
{
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override async ValueTask Add(Guid id, VirusScanResult obj)
|
|
{
|
|
await base.Add(id, obj);
|
|
await Cache.AddToList(MapFilesKey(id), obj.Id.ToString());
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public async ValueTask<VirusScanResult?> GetByFile(Guid id)
|
|
{
|
|
var scans = await Cache.GetList(MapFilesKey(id));
|
|
if (scans.Length > 0)
|
|
{
|
|
return await Get(Guid.Parse(scans.Last()));
|
|
}
|
|
|
|
return default;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override string MapKey(Guid id)
|
|
=> $"virus-scan:{id}";
|
|
|
|
private string MapFilesKey(Guid id)
|
|
=> $"virus-scan:file:{id}";
|
|
} |