es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

de DDD Los filtros de pase a través de múltiples capas

En mi arquitectura Onion, tengo mi PresentationLayer que contiene una clase llamada LogRabbitMQFilters con diferentes propiedades para filtrar la búsqueda.

Paso LogRabbitMQFilters en ApplicationLayer por medio del mapper:

public RabbitMQController(IELKService iELKService, IMapper mapper)
{
    _iELKService = iELKService;
    _mapper = mapper;
}

public async Task<IActionResult> Index(int? id, LogRabbitMQFilters filters)
{
    var filtersMapped = _mapper.Map<LogRabbitMQFilters>(filters);

    var response = await _iELKService.GetLog(filtersMapped);

    /*algun código....*/
}

En ApplicationLayer mapeo mis logRabbitMQFilters a RabbitMQFilters que se declaran en la capa Persistance y llamo a mi repositorio así:

public ELKService(IELKRepository iELKRepository, IMapper mapper)
{
    _iELKRepository = iELKRepository;
    _mapper = mapper;
}

public async Task<LogResult> GetLog(LogRabbitMQFilters  logRabbitMQFilters)
{
    var filterMapped = _mapper.Map<RabbitMQFilters>(logRabbitMQFilters);

    return await _iELKRepository.GetLogs(filterMapped); 
}

¿Es la mejor opción hacerlo de esta manera? ¿Hay otra forma de pasar mi clase de filtros al repositorio? Pensé en el patrón de especificación, pero no sé si es una buena solución.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes utilizar el Patrón de Especificación para pasar la clase de filtros a tu repositorio. Este patrón te permite crear un conjunto de criterios que pueden ser utilizados para filtrar una colección de objetos. Es una buena solución porque te permite crear un conjunto de criterios reutilizable que puede ser utilizado en diferentes contextos. Además, te permite agregar nuevos criterios al conjunto fácilmente sin tener que modificar el código existente.

Comments are closed.