Ignore:
Timestamp:
04/28/26 14:53:32 (2 months ago)
Author:
kikisrbinoska <srbinoskakristina07@…>
Branches:
main
Children:
b373fea
Parents:
dc383dd
Message:

Added transactions and pooling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ChapterX.Application/Auth/RegisterHandler.cs

    rdc383dd rd300631  
     1using ChapterX.Application.Abstractions;
    12using ChapterX.Domain.Repositories;
    23using MediatR;
     
    89        private readonly IUserRepository _userRepository;
    910        private readonly IWriterRepository _writerRepository;
     11        private readonly IApplicationDbContext _context;
    1012
    11         public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository)
     13        public RegisterHandler(IUserRepository userRepository, IWriterRepository writerRepository, IApplicationDbContext context)
    1214        {
    1315            _userRepository = userRepository;
    1416            _writerRepository = writerRepository;
     17            _context = context;
    1518        }
    1619
     
    2124                throw new InvalidOperationException("Email already in use.");
    2225
    23             var user = new Domain.Entities.User
     26            await using var transaction = await _context.BeginTransactionAsync(cancellationToken);
     27            try
    2428            {
    25                 Username = request.Username,
    26                 Email = request.Email,
    27                 Name = request.Name,
    28                 Surname = request.Surname,
    29                 Password = BCrypt.Net.BCrypt.HashPassword(request.Password),
    30                 CreatedAt = DateTime.UtcNow,
    31                 UpdatedAt = DateTime.UtcNow
    32             };
     29                var user = new Domain.Entities.User
     30                {
     31                    Username = request.Username,
     32                    Email = request.Email,
     33                    Name = request.Name,
     34                    Surname = request.Surname,
     35                    Password = BCrypt.Net.BCrypt.HashPassword(request.Password),
     36                    CreatedAt = DateTime.UtcNow,
     37                    UpdatedAt = DateTime.UtcNow
     38                };
    3339
    34             await _userRepository.AddAsync(user, cancellationToken);
     40                await _userRepository.AddAsync(user, cancellationToken);
    3541
    36             var writer = new Domain.Entities.Writer { Id = user.Id };
    37             await _writerRepository.AddAsync(writer, cancellationToken);
     42                var writer = new Domain.Entities.Writer { Id = user.Id };
     43                await _writerRepository.AddAsync(writer, cancellationToken);
    3844
    39             return new RegisterResponse(user.Id, user.Username, user.Email);
     45                await transaction.CommitAsync(cancellationToken);
     46                return new RegisterResponse(user.Id, user.Username, user.Email);
     47            }
     48            catch
     49            {
     50                await transaction.RollbackAsync(cancellationToken);
     51                throw;
     52            }
    4053        }
    4154    }
Note: See TracChangeset for help on using the changeset viewer.