using HrynCo.NotificationService.DAL.Abstract.Repositories; 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 GetEmailTemplateDefinitionHandler( IContextualSerilogLogger logger, IEmailTemplateDefinitionRepository definitions) : RequestHandler>(logger) { protected override async Task> DoOnHandle(GetEmailTemplateDefinitionQuery request, CancellationToken cancellationToken) { var definition = await definitions.GetDefinitionAsync(request.ServiceId, request.Key, cancellationToken); return definition is null ? Failure("Template definition not found.", ServiceErrorCode.NotFound) : Success(TemplateDefinitionMapping.Map(definition)); } }