using HrynCo.NotificationService.DAL.Abstract.Repositories; using HrynCo.NotificationService.DAL.Abstract.Templates; using HrynCo.NotificationService.Services.Core; using HrynCo.NotificationService.Services.Logging; using static HrynCo.NotificationService.Services.Core.ServiceResultHelper; namespace HrynCo.NotificationService.Services.TemplateDefinitions; internal sealed class DeletePushTemplateDefinitionHandler( IContextualSerilogLogger logger, IPushTemplateDefinitionRepository repository) : RequestHandler>(logger) { protected override async Task> DoOnHandle(DeletePushTemplateDefinitionCommand request, CancellationToken cancellationToken) { try { var removed = await repository.DeleteAsync(request.ServiceId, request.Key, request.Revision, cancellationToken); return removed ? Success(Unit.Value) : Failure("Template definition not found.", ServiceErrorCode.NotFound); } catch (EmailTemplateWriteException error) { return Failure(error.Message, error.IsConflict ? ServiceErrorCode.Conflict : ServiceErrorCode.InvalidRequest); } } }