SearchEquipmentsService.java

package com.github.jenkaby.bikerental.equipment.application.service;

import com.github.jenkaby.bikerental.equipment.application.usecase.SearchEquipmentsUseCase;
import com.github.jenkaby.bikerental.equipment.domain.model.Equipment;
import com.github.jenkaby.bikerental.equipment.domain.repository.EquipmentRepository;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Page;
import com.github.jenkaby.bikerental.shared.domain.model.vo.PageRequest;
import org.springframework.stereotype.Service;

@Service
class SearchEquipmentsService implements SearchEquipmentsUseCase {

    private final EquipmentRepository repository;

    SearchEquipmentsService(EquipmentRepository repository) {
        this.repository = repository;
    }

    @Override
    public Page<Equipment> execute(SearchEquipmentsQuery query) {
        PageRequest pageRequest = query.pageRequest();

        return repository.findAll(query.statusSlug(), query.typeSlug(), pageRequest);
    }
}