public async Task <Result <AutorModel> > UpdateAutorAsync(Guid autorId, AutorModel autorModel)
        {
            Guard.Against.NullOrEmpty(autorId, "AutorId");

            var autor = await _repositorio.GetByIdAsync(autorId);

            if (autor is null)
            {
                _logger.LogWarning("Não foi encontrado autor com id igual a '{0}'", autorId);
                return(Result <AutorModel> .NotFound());
            }

            autor.Nome            = !string.IsNullOrEmpty(autorModel.Nome) && autor.Nome != autorModel.Nome ? autorModel.Nome : autor.Nome;
            autor.Sobrenome       = !string.IsNullOrEmpty(autorModel.Sobrenome) && autor.Sobrenome != autorModel.Sobrenome ? autorModel.Sobrenome : autor.Sobrenome;
            autor.Email           = !string.IsNullOrEmpty(autorModel.Nome) && autor.Email != autorModel.Email ? autorModel.Email : autor.Email;
            autor.Bio             = autor.Bio != autorModel.Bio ? autorModel.Bio : autor.Bio;
            autor.Avatar          = autor.Avatar != autorModel.Avatar ? autorModel.Avatar : autor.Avatar;
            autor.DataAtualizacao = DateTime.Now;

            var validator        = new AutorValidator();
            var resultValidation = validator.Validate(autor);

            if (!resultValidation.IsValid)
            {
                _logger.LogWarning("Atualização do autor não passou na validação. Erros: {0}", resultValidation.Errors.ToJson());
                return(Result <AutorModel> .Invalid(resultValidation.AsErrors()));
            }

            await _repositorio.UpdateAsync(autor);

            _logger.LogInformation("Autor foi atualizado com sucesso");
            return(Result <AutorModel> .Success(
                       _mapper.Map <AutorModel>(autor)));
        }
        public async Task <Result <AutorModel> > AddAutorAsync(AutorModel autor)
        {
            var novoAutor = _mapper.Map <Autor>(autor);
            var validator = new AutorValidator();

            var resultValidation = validator.Validate(novoAutor);

            if (!resultValidation.IsValid)
            {
                _logger.LogWarning("Novo autor não passou na validação. Erros: {0}", resultValidation.Errors.ToJson());
                return(Result <AutorModel> .Invalid(resultValidation.AsErrors()));
            }

            var autorAdicionado = await _repositorio.AddAsync(novoAutor);

            Guard.Against.Null(autorAdicionado, "Novo Autor");

            _logger.LogInformation("Novo autor foi inserido com sucesso");
            return(Result <AutorModel> .Success(
                       _mapper.Map <AutorModel>(autorAdicionado)));
        }