23 lines
1.4 KiB
C#
23 lines
1.4 KiB
C#
using PostFundManagement.Application.Abstractions.Services;
|
|
using PostFundManagement.Application.Services.Shared;
|
|
using PostFundManagement.Domain;
|
|
using PostFundManagement.Domain.Models;
|
|
|
|
namespace PostFundManagement.Application.Services.Communications;
|
|
|
|
public sealed class CommunicationsCacheService(CommunicationsService service, HybridCache cache) : ICommunicationsService
|
|
{
|
|
public async ValueTask<Result<Invite>> GetApplicantInviteAsync(Guid userId, CancellationToken cancellationToken = default) =>
|
|
await Result.Try((Func<ValueTask<Result<Invite>>>)(async () =>
|
|
await cache.GetOrCreateAsync(HashService.ToMd5Hash($"getapplicantinvite-{userId}").Value,
|
|
async cancel => await service.GetApplicantInviteAsync(userId, cancellationToken))));
|
|
|
|
public async ValueTask<Result<Invite[]>> GetInvitesAsync(Pagination pagination, CancellationToken cancellationToken = default) =>
|
|
await Result.Try((Func<ValueTask<Result<Invite[]>>>)(async () =>
|
|
await cache.GetOrCreateAsync(HashService.ToMd5Hash($"getinvites-{pagination.Page}-{pagination.PageSize}").Value,
|
|
async cancel => await service.GetInvitesAsync(pagination, cancellationToken))));
|
|
|
|
public async ValueTask<Result<Invite>> SendInviteAsync(InviteRequest request, Guid userId, CancellationToken cancellationToken = default) =>
|
|
await service.SendInviteAsync(request, userId, cancellationToken);
|
|
}
|