void.cat/VoidCat/Services/VirusScanner/PostgresVirusScanStore.cs

50 lines
1.2 KiB
C#
Raw Normal View History

using Microsoft.EntityFrameworkCore;
using VoidCat.Database;
2022-06-13 10:29:16 +00:00
using VoidCat.Services.Abstractions;
namespace VoidCat.Services.VirusScanner;
/// <inheritdoc />
public class PostgresVirusScanStore : IVirusScanStore
{
private readonly VoidContext _db;
2022-06-13 10:29:16 +00:00
public PostgresVirusScanStore(VoidContext db)
2022-06-13 10:29:16 +00:00
{
_db = db;
2022-06-13 10:29:16 +00:00
}
/// <inheritdoc />
public async ValueTask<VirusScanResult?> Get(Guid id)
{
return await _db.VirusScanResults
.AsNoTracking()
.FirstOrDefaultAsync(a => a.Id == id);
2022-06-13 10:29:16 +00:00
}
/// <inheritdoc />
public async ValueTask<VirusScanResult?> GetByFile(Guid id)
{
return await _db.VirusScanResults
.AsNoTracking()
.Where(a => a.FileId == id)
.OrderByDescending(a => a.ScanTime)
.FirstOrDefaultAsync();
2022-06-13 10:29:16 +00:00
}
/// <inheritdoc />
public async ValueTask Add(Guid id, VirusScanResult obj)
{
_db.VirusScanResults.Add(obj);
await _db.SaveChangesAsync();
2022-06-13 10:29:16 +00:00
}
/// <inheritdoc />
public async ValueTask Delete(Guid id)
{
await _db.VirusScanResults
.Where(a => a.Id == id)
.ExecuteDeleteAsync();
2022-06-13 10:29:16 +00:00
}
}