From fcf7b942780bac62bcc95b08c85e9a4f6efea0c1 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 11 Aug 2023 13:17:38 +1000 Subject: [PATCH] Add our own SuppliedProduct with custom property --- engines/dfc_provider/app/services/dfc_io.rb | 3 --- engines/dfc_provider/app/services/dfc_loader.rb | 2 -- .../app/services/supplied_product_builder.rb | 9 +++------ engines/dfc_provider/lib/dfc_provider.rb | 7 +++++++ .../lib/dfc_provider/supplied_product.rb | 17 +++++++++++++++++ 5 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 engines/dfc_provider/lib/dfc_provider/supplied_product.rb diff --git a/engines/dfc_provider/app/services/dfc_io.rb b/engines/dfc_provider/app/services/dfc_io.rb index 2457eb4a46..99bf63df66 100644 --- a/engines/dfc_provider/app/services/dfc_io.rb +++ b/engines/dfc_provider/app/services/dfc_io.rb @@ -1,8 +1,5 @@ # frozen_string_literal: true -# Load our monkey-patches: -require "data_food_consortium/connector/connector" - # Our interface to the DFC Connector library. module DfcIo # Serialise DFC Connector subjects as JSON-LD string. diff --git a/engines/dfc_provider/app/services/dfc_loader.rb b/engines/dfc_provider/app/services/dfc_loader.rb index d9ef128c96..1fae62f9f4 100644 --- a/engines/dfc_provider/app/services/dfc_loader.rb +++ b/engines/dfc_provider/app/services/dfc_loader.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require "data_food_consortium/connector/connector" - class DfcLoader def self.connector @connector ||= load_vocabularies diff --git a/engines/dfc_provider/app/services/supplied_product_builder.rb b/engines/dfc_provider/app/services/supplied_product_builder.rb index 1f9ff42df8..53d64f5d3c 100644 --- a/engines/dfc_provider/app/services/supplied_product_builder.rb +++ b/engines/dfc_provider/app/services/supplied_product_builder.rb @@ -7,17 +7,14 @@ class SuppliedProductBuilder < DfcBuilder id: variant.id, ) - DataFoodConsortium::Connector::SuppliedProduct.new( + DfcProvider::SuppliedProduct.new( id, name: variant.name_to_display, description: variant.description, productType: product_type, quantity: QuantitativeValueBuilder.quantity(variant), - ).tap do |supplied_product| - supplied_product.registerSemanticProperty("ofn:spree_product_id") do - variant.product.id - end - end + spree_product_id: variant.product.id, + ) end def self.import(supplied_product) diff --git a/engines/dfc_provider/lib/dfc_provider.rb b/engines/dfc_provider/lib/dfc_provider.rb index b0cf98121a..d6be00d677 100644 --- a/engines/dfc_provider/lib/dfc_provider.rb +++ b/engines/dfc_provider/lib/dfc_provider.rb @@ -1,6 +1,13 @@ # frozen_string_literal: true +# Load our monkey-patches of the DFC Connector: +require "data_food_consortium/connector/connector" + +# Our Rails engine require "dfc_provider/engine" +# Custom data types +require "dfc_provider/supplied_product" + module DfcProvider end diff --git a/engines/dfc_provider/lib/dfc_provider/supplied_product.rb b/engines/dfc_provider/lib/dfc_provider/supplied_product.rb new file mode 100644 index 0000000000..06b762ba87 --- /dev/null +++ b/engines/dfc_provider/lib/dfc_provider/supplied_product.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module DfcProvider + class SuppliedProduct < DataFoodConsortium::Connector::SuppliedProduct + attr_accessor :spree_product_id + + def initialize(semantic_id, spree_product_id: nil, **properties) + super(semantic_id, **properties) + + self.spree_product_id = spree_product_id + + registerSemanticProperty("ofn:spree_product_id") do + self.spree_product_id + end + end + end +end