This commit is contained in:
lumijiez
2025-06-09 00:45:42 +03:00
parent ab9b80b74f
commit a695e1cce6
19 changed files with 464 additions and 173 deletions

View File

@@ -7,6 +7,7 @@ public interface IUnitOfWork
public IProductRepository ProductRepository { get; }
public ICategoryRepository CategoryRepository { get; }
public IProductVariantRepository ProductVariantRepository { get; }
public IUserRepository UserRepository { get; }
Task SaveAsync(CancellationToken cancellationToken = default);
Task BeginTransactionAsync(CancellationToken cancellationToken = default);

View File

@@ -0,0 +1,31 @@
using Imprink.Domain.Common.Models;
using MediatR;
namespace Imprink.Application.Users;
public record SyncUserCommand(Auth0User User) : IRequest<bool>;
public class SyncUserHandler(IUnitOfWork uw): IRequestHandler<SyncUserCommand, bool>
{
public async Task<bool> Handle(SyncUserCommand request, CancellationToken cancellationToken)
{
await uw.BeginTransactionAsync(cancellationToken);
try
{
if (!await uw.UserRepository.UpdateOrCreateUserAsync(request.User, cancellationToken))
{
await uw.RollbackTransactionAsync(cancellationToken);
}
await uw.SaveAsync(cancellationToken);
await uw.CommitTransactionAsync(cancellationToken);
return true;
}
catch
{
await uw.RollbackTransactionAsync(cancellationToken);
throw;
}
}
}