1
resposta

[Sugestão] Sugestão de melhoria de código

Implementação do Atualizar Pagamento

  public PagamentoDto atualizarPagamento(Long id, PagamentoDto dto) {
        Pagamento pagamento = modelMapper.map(dto, Pagamento.class);
        pagamento.setId(id);
        pagamento = repository.save(pagamento);
        return modelMapper.map(pagamento, PagamentoDto.class);
    }

Da maneira que o código está implementado pode ocorre falhas caso o cliente da API informe um id que não existe, o que vai acontecer é a criação de um novo Pagamento é não a atualização.

Principais motivos:

  • Pode ser um id/entidade que não está sendo gerenciado pela JPA.
  • Ao chamar a camada de repositório para salvar, ela criar um novo recurso já que estar no estado Transient.

Sugestão de melhoria

 public PagamentoDto atualizarPagamento(Long id, PagamentoDto dto) {
        Pagamento pagamento = getOrElseThrow(id);

        pagamento.setValor(dto.getValor());
        pagamento.setNome(dto.getNome());
        pagamento.setNumero(dto.getNumero());
        pagamento.setExpiracao(dto.getExpiracao());
        pagamento.setCodigo(dto.getCodigo());
        pagamento.setStatus(dto.getStatus());
        pagamento.setPedidoId(dto.getPedidoId());
        pagamento.setFormaDePagamentoId(dto.getFormaDePagamentoId());

        repository.save(pagamento);

        return modelMapper.map(pagamento, PagamentoDto.class);
    }
 private Pagamento getOrElseThrow(Long id) {
        return repository.findById(id)
                .orElseThrow(() -> new EntityNotFoundException("Pagamento não encontrado"));
    }
1 resposta

Oi, Victor! Tudo bem?

Bacana que você desenvolveu esse código, ótima sugestão e observação, obrigada por compartilhar! :)

Abraços e bons estudos =)