Added service level caching to IdentityService, Communication and Evidence

This commit is contained in:
2026-09-03 16:37:25 +02:00
parent da4499ce41
commit 9f76b203e3
35 changed files with 344 additions and 64 deletions
@@ -1,4 +1,5 @@
using PostFundManagement.Application.Services.Shared;
using PostFundManagement.Application.Abstractions.Services;
using PostFundManagement.Application.Services.Shared;
using PostFundManagement.Domain;
using PostFundManagement.Domain.Abstractions;
using PostFundManagement.Domain.Errors;
@@ -9,7 +10,7 @@ using PostFundManagement.Infrastructure.Database;
namespace PostFundManagement.Application.Services.Evidence;
public sealed class EvidenceService(IDbContextFactory<ApplicationDbContext> contextFactory, HashService hashService,
[FromKeyedServices(Constants.EvidenceBucketName)] IS3Service s3Service) : IService
[FromKeyedServices(Constants.EvidenceBucketName)] IS3Service s3Service) : IEvidenceService
{
public async ValueTask<Result> CreateEvidenceAsync(Guid userId, IFormCollection form, IFormFile file, CancellationToken cancellationToken = default) =>
await Result.Try((Func<ValueTask<Result>>)(async () =>
@@ -217,8 +218,22 @@ public sealed class EvidenceService(IDbContextFactory<ApplicationDbContext> cont
return Result.Ok(evidences.Select(e => e.Map()).ToArray());
}));
public async Task<Result> UpdateEvidenceAsync(UpdateEvidenceRequest request, Guid userId, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public async ValueTask<Result> UpdateEvidenceAsync(UpdateEvidenceRequest request, Guid userId, CancellationToken cancellationToken = default) =>
await Result.Try((Func<ValueTask<Result>>)(async () =>
{
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
if (!await context.Evidences.AnyAsync(e => e.Id == request.EvidenceId, cancellationToken))
return Result.Fail(NotFoundError.New);
var changedTotal = await context.Evidences.Where(e => e.Id == request.EvidenceId)
.ExecuteUpdateAsync(f => f
.SetProperty(f => f.Version, request.Version)
.SetProperty(f => f.Type, request.EvidenceType)
.SetProperty(f => f.Status, request.Status)
.SetProperty(f => f.UpdatedBy, userId)
.SetProperty(f => f.UpdatedAt, DateTime.UtcNow), cancellationToken);
return Result.FailIf(changedTotal <= 0, UpdateError.New);
}));
}