From 3d435ae7819e1b13d50e40447f95222fbe5abf72 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 13 Feb 2025 13:38:14 +1100 Subject: [PATCH] Include product group objects in our catalog response And when we import a catalog, we don't try to import those product groups as Spree::Variant. We just see them as reference to Spree::Product. --- .../controllers/dfc_provider/catalog_items_controller.rb | 1 + engines/dfc_provider/app/services/dfc_catalog.rb | 6 +++++- swagger/dfc.yaml | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/controllers/dfc_provider/catalog_items_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/catalog_items_controller.rb index c8b2ba59ff..e9e6fc2232 100644 --- a/engines/dfc_provider/app/controllers/dfc_provider/catalog_items_controller.rb +++ b/engines/dfc_provider/app/controllers/dfc_provider/catalog_items_controller.rb @@ -19,6 +19,7 @@ module DfcProvider *person.affiliatedOrganizations, *person.affiliatedOrganizations.flat_map(&:catalogItems), *person.affiliatedOrganizations.flat_map(&:catalogItems).map(&:product), + *person.affiliatedOrganizations.flat_map(&:catalogItems).map(&:product).flat_map(&:isVariantOf), *person.affiliatedOrganizations.flat_map(&:catalogItems).flat_map(&:offers), ) end diff --git a/engines/dfc_provider/app/services/dfc_catalog.rb b/engines/dfc_provider/app/services/dfc_catalog.rb index 08649494c7..431454bd54 100644 --- a/engines/dfc_provider/app/services/dfc_catalog.rb +++ b/engines/dfc_provider/app/services/dfc_catalog.rb @@ -13,9 +13,13 @@ class DfcCatalog @graph = graph end + # List all products in this catalog. + # These are SuppliedProduct objects which may be grouped as variants. + # But we don't return the parent products having variants. def products @products ||= @graph.select do |subject| - subject.is_a? DataFoodConsortium::Connector::SuppliedProduct + subject.is_a?(DataFoodConsortium::Connector::SuppliedProduct) && + subject.variants.blank? end end diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index b40e8ab013..66a924ceed 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -180,6 +180,9 @@ paths: dfc-b:isVariantOf: http://test.host/api/dfc/enterprises/10000/product_groups/90000 ofn:spree_product_id: 90000 ofn:spree_product_uri: http://test.host/api/dfc/enterprises/10000?spree_product_id=90000 + - "@id": http://test.host/api/dfc/enterprises/10000/product_groups/90000 + "@type": dfc-b:SuppliedProduct + dfc-b:hasVariant: http://test.host/api/dfc/enterprises/10000/supplied_products/10001 - "@id": http://test.host/api/dfc/enterprises/10000/offers/10001 "@type": dfc-b:Offer dfc-b:hasPrice: