mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-09 03:20:21 +00:00
Avoid loading enterprise injection data when it's not be needed due to caching
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
require 'open_food_network/enterprise_injection_data'
|
||||
|
||||
module InjectionHelper
|
||||
def inject_enterprises
|
||||
inject_json_ams "enterprises", Enterprise.activated.all, Api::EnterpriseSerializer, enterprise_injection_data
|
||||
inject_json_ams "enterprises", Enterprise.activated.includes(:address).all, Api::EnterpriseSerializer, enterprise_injection_data
|
||||
end
|
||||
|
||||
def inject_group_enterprises
|
||||
@@ -66,14 +68,8 @@ module InjectionHelper
|
||||
private
|
||||
|
||||
def enterprise_injection_data
|
||||
@active_distributors ||= Enterprise.distributors_with_active_order_cycles
|
||||
@earliest_closing_times ||= OrderCycle.earliest_closing_times
|
||||
@shipping_method_services ||= Spree::ShippingMethod.services
|
||||
@relatives ||= EnterpriseRelationship.relatives
|
||||
@supplied_taxons ||= Spree::Taxon.supplied_taxons
|
||||
@distributed_taxons ||= Spree::Taxon.distributed_taxons
|
||||
|
||||
{active_distributors: @active_distributors, earliest_closing_times: @earliest_closing_times, shipping_method_services: @shipping_method_services, relatives: @relatives, supplied_taxons: @supplied_taxons, distributed_taxons: @distributed_taxons}
|
||||
@enterprise_injection_data ||= OpenFoodNetwork::EnterpriseInjectionData.new
|
||||
{data: @enterprise_injection_data}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -21,11 +21,11 @@ class Api::UncachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
attributes :orders_close_at, :active
|
||||
|
||||
def orders_close_at
|
||||
options[:earliest_closing_times][object.id]
|
||||
options[:data].earliest_closing_times[object.id]
|
||||
end
|
||||
|
||||
def active
|
||||
options[:active_distributors].andand.include? object
|
||||
options[:data].active_distributors.andand.include? object
|
||||
end
|
||||
end
|
||||
|
||||
@@ -45,20 +45,20 @@ class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
|
||||
|
||||
def taxons
|
||||
options[:distributed_taxons][object.id]
|
||||
options[:data].distributed_taxons[object.id]
|
||||
end
|
||||
|
||||
def supplied_taxons
|
||||
options[:supplied_taxons][object.id]
|
||||
options[:data].supplied_taxons[object.id]
|
||||
end
|
||||
|
||||
def pickup
|
||||
services = options[:shipping_method_services][object.id]
|
||||
services = options[:data].shipping_method_services[object.id]
|
||||
services ? services[:pickup] : false
|
||||
end
|
||||
|
||||
def delivery
|
||||
services = options[:shipping_method_services][object.id]
|
||||
services = options[:data].shipping_method_services[object.id]
|
||||
services ? services[:delivery] : false
|
||||
end
|
||||
|
||||
@@ -83,12 +83,12 @@ class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
|
||||
end
|
||||
|
||||
def producers
|
||||
relatives = options[:relatives][object.id]
|
||||
relatives = options[:data].relatives[object.id]
|
||||
relatives ? relatives[:producers] : []
|
||||
end
|
||||
|
||||
def hubs
|
||||
relatives = options[:relatives][object.id]
|
||||
relatives = options[:data].relatives[object.id]
|
||||
relatives ? relatives[:distributors] : []
|
||||
end
|
||||
|
||||
|
||||
27
lib/open_food_network/enterprise_injection_data.rb
Normal file
27
lib/open_food_network/enterprise_injection_data.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
module OpenFoodNetwork
|
||||
class EnterpriseInjectionData
|
||||
def active_distributors
|
||||
@active_distributors ||= Enterprise.distributors_with_active_order_cycles
|
||||
end
|
||||
|
||||
def earliest_closing_times
|
||||
@earliest_closing_times ||= OrderCycle.earliest_closing_times
|
||||
end
|
||||
|
||||
def shipping_method_services
|
||||
@shipping_method_services ||= Spree::ShippingMethod.services
|
||||
end
|
||||
|
||||
def relatives
|
||||
@relatives ||= EnterpriseRelationship.relatives
|
||||
end
|
||||
|
||||
def supplied_taxons
|
||||
@supplied_taxons ||= Spree::Taxon.supplied_taxons
|
||||
end
|
||||
|
||||
def distributed_taxons
|
||||
@distributed_taxons ||= Spree::Taxon.distributed_taxons
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user