Changeset d300631 for ChapterX.Application/Story/Commands/AddHandler.cs
- Timestamp:
- 04/28/26 14:53:32 (2 months ago)
- Branches:
- main
- Children:
- b373fea
- Parents:
- dc383dd
- File:
-
- 1 edited
-
ChapterX.Application/Story/Commands/AddHandler.cs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ChapterX.Application/Story/Commands/AddHandler.cs
rdc383dd rd300631 1 using ChapterX.Application.Abstractions; 1 2 using ChapterX.Domain.Repositories; 2 3 using MediatR; … … 10 11 private readonly IGenreRepository _genreRepository; 11 12 private readonly IHasGenreRepository _hasGenreRepository; 13 private readonly IApplicationDbContext _context; 12 14 private readonly ILogger<AddHandler> _logger; 13 15 14 public AddHandler(IStoryRepository storyRepository, IGenreRepository genreRepository, IHasGenreRepository hasGenreRepository, I Logger<AddHandler> logger)16 public AddHandler(IStoryRepository storyRepository, IGenreRepository genreRepository, IHasGenreRepository hasGenreRepository, IApplicationDbContext context, ILogger<AddHandler> logger) 15 17 { 16 18 _storyRepository = storyRepository; 17 19 _genreRepository = genreRepository; 18 20 _hasGenreRepository = hasGenreRepository; 21 _context = context; 19 22 _logger = logger; 20 23 } … … 22 25 public async Task<AddResponse> Handle(AddRequest request, CancellationToken cancellationToken) 23 26 { 24 var story = new Domain.Entities.Story 27 await using var transaction = await _context.BeginTransactionAsync(cancellationToken); 28 try 25 29 { 26 MatureContent = request.MatureContent, 27 ShortDescription = request.ShortDescription, 28 Image = request.Image, 29 Content = request.Content, 30 UserId = request.UserId, 31 CreatedAt = DateTime.UtcNow, 32 UpdatedAt = DateTime.UtcNow 33 }; 30 var story = new Domain.Entities.Story 31 { 32 MatureContent = request.MatureContent, 33 ShortDescription = request.ShortDescription, 34 Image = request.Image, 35 Content = request.Content, 36 UserId = request.UserId, 37 CreatedAt = DateTime.UtcNow, 38 UpdatedAt = DateTime.UtcNow 39 }; 34 40 35 await _storyRepository.AddAsync(story, cancellationToken);41 await _storyRepository.AddAsync(story, cancellationToken); 36 42 37 foreach (var genreName in request.Genres ?? []) 43 foreach (var genreName in request.Genres ?? []) 44 { 45 var genre = await _genreRepository.GetByNameAsync(genreName, cancellationToken); 46 if (genre == null) continue; 47 await _hasGenreRepository.AddAsync(new Domain.Entities.HasGenre { StoryId = story.Id, GenreId = genre.Id }, cancellationToken); 48 } 49 50 await transaction.CommitAsync(cancellationToken); 51 return new AddResponse(story.Id); 52 } 53 catch 38 54 { 39 var genre = await _genreRepository.GetByNameAsync(genreName, cancellationToken); 40 if (genre == null) continue; 41 await _hasGenreRepository.AddAsync(new Domain.Entities.HasGenre { StoryId = story.Id, GenreId = genre.Id }, cancellationToken); 55 await transaction.RollbackAsync(cancellationToken); 56 throw; 42 57 } 43 44 return new AddResponse(story.Id);45 58 } 46 59 }
Note:
See TracChangeset
for help on using the changeset viewer.
