Mejores prácticas para calcular un atributo en el diseño de Jhipster

Dec 17 2020

Imaginemos que crea una aplicación de carreras de Jhipster donde tenemos una clase de carrera (id, raceName, date, List -Participant-, averageTime) que está formada por objetos Participant (que tienen una id y un tiempo de carrera en segundos para cada carrera). Le gustaría calcular el tiempo promedio de la clase de carrera a medida que se publican los tiempos (a medida que cruzan la línea de meta) y cada vez que se consulta una carrera. Para eso, ¿dónde pondría el método para calcular ese promedio?

Veo 3 opciones:

  1. En la vista de su clase angular, cuando muestra su componente Race, puede traer datos y calcularlos cada vez que se muestran.
  2. En algún lugar de la implementación del servicio Race.
  3. En el modelo de dominio con @Transient cuando se instancia el objeto Race

Por favor, si ve otras opciones o una mejor práctica, hágamelo saber. Gracias

entidad Carrera {raceName String, time Instant, averageTime Double}

participante de la entidad {racingTime Integer}

relación OneToMany {Race {participant (id)} to Participant {race (id)}}

// CONFIGURAR OPCIONES DE PAGINACIÓN: paginar todo con paginación // paginar ChatMessage con desplazamiento infinito // paginar todo con desplazamiento infinito

// ESTABLECER OPCIONES DE SERVICIO: servicio todo con serviceImpl // servicio todo con serviceClass

// DTO: dto todo con mapstruct

// FILTRADO: filtro *

Respuestas

3 HopeyOne Dec 17 2020 at 06:55

Mi preferencia es hacer esto en la capa de servicio como parte de la conversión del modelo de dominio a DTO. Podría implementar un @Transientcaptador en el Racemodelo de dominio que calcula el promedio y (creo) maptruct podría mapear esto en el DTO. O simplemente puede establecer el campo DTO adicional en sus métodos de servicio. También está esto donde puede poner el cálculo en su mapeador.