From 27d7b3026bb611c9e8345e9fcfd730c93a293475 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 9 Mar 2016 12:28:09 +1100 Subject: [PATCH] Move OpenFoodNetwork::ProductsCacheIntegrityChecker.active_exchanges to Exchange model --- app/controllers/admin/cache_settings_controller.rb | 3 +-- app/models/exchange.rb | 6 ++++++ .../products_cache_integrity_checker.rb | 9 --------- lib/tasks/cache.rake | 11 ++--------- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/app/controllers/admin/cache_settings_controller.rb b/app/controllers/admin/cache_settings_controller.rb index ada153a6d5..138bbc7b18 100644 --- a/app/controllers/admin/cache_settings_controller.rb +++ b/app/controllers/admin/cache_settings_controller.rb @@ -3,8 +3,7 @@ require 'open_food_network/products_cache_integrity_checker' class Admin::CacheSettingsController < Spree::Admin::BaseController def show - active_exchanges = OpenFoodNetwork::ProductsCacheIntegrityChecker.active_exchanges - @results = active_exchanges.map do |exchange| + @results = Exchange.cachable.map do |exchange| checker = OpenFoodNetwork::ProductsCacheIntegrityChecker.new(exchange.receiver, exchange.order_cycle) {distributor: exchange.receiver, order_cycle: exchange.order_cycle, status: checker.ok?, diff: checker.diff} diff --git a/app/models/exchange.rb b/app/models/exchange.rb index 94aada7e0e..ad290f6c26 100644 --- a/app/models/exchange.rb +++ b/app/models/exchange.rb @@ -34,6 +34,12 @@ class Exchange < ActiveRecord::Base joins('INNER JOIN enterprises AS receiver ON (receiver.id = exchanges.receiver_id)'). order("CASE WHEN exchanges.incoming='t' THEN sender.name ELSE receiver.name END") + # Exchanges on order cycles that are dated and are upcoming or open are cached + scope :cachable, outgoing. + joins(:order_cycle). + merge(OrderCycle.dated). + merge(OrderCycle.not_closed) + scope :managed_by, lambda { |user| if user.has_spree_role?('admin') scoped diff --git a/lib/open_food_network/products_cache_integrity_checker.rb b/lib/open_food_network/products_cache_integrity_checker.rb index cf8363ee5c..8098124feb 100644 --- a/lib/open_food_network/products_cache_integrity_checker.rb +++ b/lib/open_food_network/products_cache_integrity_checker.rb @@ -16,15 +16,6 @@ module OpenFoodNetwork end - def self.active_exchanges - Exchange. - outgoing. - joins(:order_cycle). - merge(OrderCycle.dated). - merge(OrderCycle.not_closed) - end - - private def cached_json diff --git a/lib/tasks/cache.rake b/lib/tasks/cache.rake index 4f4acb5a97..64a5d3909a 100644 --- a/lib/tasks/cache.rake +++ b/lib/tasks/cache.rake @@ -4,7 +4,7 @@ namespace :openfoodnetwork do namespace :cache do desc 'check the integrity of the products cache' task :check_products_integrity => :environment do - active_exchanges.each do |exchange| + Exchange.cachable.each do |exchange| Delayed::Job.enqueue ProductsCacheIntegrityCheckerJob.new(exchange.receiver_id, exchange.order_cycle_id), priority: 20 end end @@ -12,16 +12,9 @@ namespace :openfoodnetwork do desc 'warm the products cache' task :warm_products => :environment do - active_exchanges.each do |exchange| + Exchange.cachable.each do |exchange| Delayed::Job.enqueue RefreshProductsCacheJob.new(exchange.receiver_id, exchange.order_cycle_id), priority: 10 end end - - - private - - def active_exchanges - OpenFoodNetwork::ProductsCacheIntegrityChecker.active_exchanges - end end end