using LiteCqrs; using TeleWave.Application.Common.Interfaces; using TeleWave.Application.Common.Models; namespace TeleWave.Application.Programming.Templates.Junctions; public sealed class RemoveJunctionElementCommandHandler(IAppDbContext dbContext) : ICommandHandler { public async Task Handle( RemoveJunctionElementCommand command, CancellationToken cancellationToken ) { var junction = await JunctionLoader.LoadAsync( dbContext, command.JunctionId, cancellationToken ); if (junction is null || !junction.RemoveElement(command.ElementId)) return Result.Failure(TemplateErrors.JunctionElementNotFound); return await JunctionLoader.MarkTemplateChangedAsync( dbContext, junction, cancellationToken ); } }