GoodsDataLoaderResolver.java 1.1 KB

123456789101112131415161718192021222324252627
  1. package com.remy.graphql.resolvers.dataloader;
  2. import com.remy.common.module.GoodsDTO;
  3. import com.remy.common.module.OrderDTO;
  4. import com.remy.common.module.UserDTO;
  5. import graphql.kickstart.execution.context.GraphQLContext;
  6. import graphql.kickstart.tools.GraphQLResolver;
  7. import graphql.schema.DataFetchingEnvironment;
  8. import org.dataloader.DataLoader;
  9. import org.dataloader.DataLoaderRegistry;
  10. import org.springframework.stereotype.Component;
  11. import java.util.List;
  12. import java.util.concurrent.CompletableFuture;
  13. @Component
  14. public class GoodsDataLoaderResolver implements GraphQLResolver<GoodsDTO> {
  15. public CompletableFuture<List<OrderDTO>> orders(GoodsDTO goodsDTO, DataFetchingEnvironment env){
  16. DataLoaderRegistry registry = ((GraphQLContext) env.getContext()).getDataLoaderRegistry();
  17. DataLoader<String, List<OrderDTO>> orderGoodsDataLoader = registry.getDataLoader("orderGoodsDataLoader");
  18. if (orderGoodsDataLoader != null) {
  19. return orderGoodsDataLoader.load(goodsDTO.getSerialNo());
  20. }
  21. throw new IllegalStateException("No order data loader found");
  22. }
  23. }