Как получить коллекцию и информацию о продукте (включая изображения, цену) в одном запросе Витрины

Как я могу получить коллекцию с подробной информацией о продукте в одном запросе. Что я сделал, так это сначала извлек всю коллекцию, затем из нее я получил идентификатор, и один за другим я включил идентификатор в другой запрос, а затем получил сведения о продукте.

Но я хочу все в одном запросе. Проверьте мой код

step1) сделал запрос для получения коллекции step2) назовем его step3) сделал запрос для получения подробной информации о продукте из шага ответа коллекции)

 Storefront.QueryRootQuery query = Storefront.query(rootQuery -> rootQuery
            .shop(shopQuery -> shopQuery
                    .collections(arg -> arg.first(10), collectionConnectionQuery -> collectionConnectionQuery
                            .edges(collectionEdgeQuery -> collectionEdgeQuery
                                    .node(collectionQuery -> collectionQuery
                                            .title()
                                            .products(arg -> arg.first(10), productConnectionQuery -> productConnectionQuery
                                                    .edges(productEdgeQuery -> productEdgeQuery
                                                            .node(productQuery -> productQuery
                                                                    .title()
                                                                    .productType()
                                                                    .description()
                                                            )
                                                    )
                                            )
                                    )
                            )
                    )
            )
    );


        @Override
        public void onResponse(@NonNull GraphResponse<Storefront.QueryRoot> response) {

            List<Storefront.Collection> collections = new ArrayList<>();

            for (Storefront.CollectionEdge collectionEdge : response.data().getShop().getCollections().getEdges())
            {

                collections.add(collectionEdge.getNode());


                for (Storefront.ProductEdge productEdge : collectionEdge.getNode().getProducts().getEdges())
                {
                    products.add(productEdge.getNode());
                }


                for (int i = 0; i < products.size(); i++)
                {
                     Log.i("PRODUCTS", String.valueOf(products.get(i).getId().toString()));
                }

            }

            getActivity().runOnUiThread(new Runnable()
            {

                @Override
                public void run()
                {

                    product_recyclreview.setVisibility(View.VISIBLE);
                    shimmer.setVisibility(View.GONE);

                    productAdapter = new ProductAdapter(getActivity(), products);
                    product_recyclreview.setAdapter(productAdapter);

                    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener()
                    {

                        @Override
                        public void onRefresh()
                        {

                            Refresh();
                            mSwipeRefreshLayout.setRefreshing(false);

                        }

                    });

                }

            });

        }


        @Override
        public void onFailure(@NonNull GraphError error) {


        }
    });

Storefront.QueryRootQuery querySEC = null;

        querySEC = Storefront.query(rootQuery -> rootQuery
                .node(new ID(products.get(0).getId().toString()), nodeQuery -> nodeQuery
                        .onProduct(productQuery -> productQuery
                                .title()
                                .description()
                                .images(arg -> arg.first(10), imageConnectionQuery -> imageConnectionQuery
                                        .edges(imageEdgeQuery -> imageEdgeQuery
                                                .node(imageQuery -> imageQuery
                                                        .src()
                                                )
                                        )
                                )
                                .variants(arg -> arg.first(10), variantConnectionQuery -> variantConnectionQuery
                                        .edges(variantEdgeQuery -> variantEdgeQuery
                                                .node(productVariantQuery -> productVariantQuery
                                                        .price()
                                                        .title()
                                                        .available()
                                                )
                                        )
                                )
                        )
                )
        );



    graphClientsec.queryGraph(querySEC).enqueue(new GraphCall.Callback<Storefront.QueryRoot>()
    {

        @Override
        public void onResponse(@NonNull GraphResponse<Storefront.QueryRoot> response)
        {

            Storefront.Product product = (Storefront.Product) response.data().getNode();

            List<Storefront.Image> productImages = new ArrayList<>();

            for (final Storefront.ImageEdge imageEdge : product.getImages().getEdges())
            {
                productImages.add(imageEdge.getNode());
            }

            List<Storefront.ProductVariant> productVariants = new ArrayList<>();

            for (final Storefront.ProductVariantEdge productVariantEdge : product.getVariants().getEdges()) {
                productVariants.add(productVariantEdge.getNode());
            }

            getActivity().runOnUiThread(new Runnable()
            {

                @Override
                public void run()
                {

                    Drawable mDefaultFailed = getResources().getDrawable(R.drawable.notfound);

                    for (int i = 0; i < productImages.size(); i++)
                    {
                        // String price= String.valueOf(productVariants.get(finalI).getPrice());

                        if (productImages.get(i).getSrc().isEmpty())
                        {
                            Glide.with(getActivity())
                                    .load(productImages.get(i).getSrc())
                                    .into((ImageView) getActivity().findViewById(R.id.img_prdimg)).
                                    onLoadFailed(null, mDefaultFailed);

                        }
                        else
                        {

                            Glide.with(getActivity())
                                    .load(productImages.get(i).getSrc()).listener(new RequestListener<String, GlideDrawable>() {

                                @Override
                                public boolean onException(Exception e, String model, Target<GlideDrawable> target,
                                                           boolean isFirstResource) {
                                    return false;
                                }


                                @Override
                                public boolean onResourceReady(GlideDrawable
                                                                       resource, String model, Target<GlideDrawable> target,
                                                               boolean isFromMemoryCache, boolean isFirstResource) {

                                    return false;

                                }
                            })
                                    .into((ImageView) getActivity().findViewById(R.id.img_prdimg));
                        }
                    }
                }

            });

        }

        @Override
        public void onFailure(@NonNull GraphError error) {

        }

    });

0 ответов

Другие вопросы по тегам