PromoEngineController.java 1.36 KiB
package com.nisum.epe.demo.resources;


import com.nisum.epe.demo.model.Promo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;


@RestController
public class PromoEngineController {


    @Autowired
    PromoRepository promoRepository;

    @GetMapping("/promo")
    public Flux<List<Promo>> getPromo() {
        return promoRepository.findAll();
    }

    @GetMapping("/promo/{promoId}")
    public Flux<List<Promo>> getPromoById(@PathVariable("promoId") String promoId) {
        final Flux<List<Promo>> listFlux = promoRepository.findAll();
        return Flux.just(listFlux.blockFirst().
        stream().
        filter(promo -> promo.getId().equalsIgnoreCase(promoId)).
        collect(Collectors.toList()));
    }
}

@Component
class PromoRepository {

    public Flux<List<Promo>> findAll(){
        List<Promo> promos = Arrays.asList(new Promo("1", "BXGY"),
                new Promo("2", "BXGX"),
                new Promo("3", "%OFF"));
        return Flux.just(promos);
    }
}