Handler.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Channel.List.Create;
  5. public sealed class Handler(IAppDbContext db) : ICommandHandler<Command, int>
  6. {
  7. public async Task<int> Handle(Command request, CancellationToken ct)
  8. {
  9. var exists = await db.Channel.AnyAsync(c => c.SID == request.SID, ct);
  10. if (exists)
  11. {
  12. throw new Exception("이미 등록된 채널 SID입니다.");
  13. }
  14. var channel = Domain.Entities.Members.Channel.Create(
  15. request.MemberID,
  16. request.SID,
  17. request.Name,
  18. request.YouTubeUrl
  19. );
  20. channel.Update(
  21. request.Name,
  22. request.Handle,
  23. request.YouTubeUrl,
  24. request.PlatformFeeRate,
  25. request.IsVerified,
  26. request.IsActive
  27. );
  28. await db.Channel.AddAsync(channel, ct);
  29. await db.SaveChangesAsync(ct);
  30. return channel.ID;
  31. }
  32. }