diff --git a/app/models/profile_suggestion.rb b/app/models/profile_suggestion.rb index dfd504c..ebeedca 100644 --- a/app/models/profile_suggestion.rb +++ b/app/models/profile_suggestion.rb @@ -157,4 +157,22 @@ class ProfileSuggestion < ActiveRecord::Base self.save end + def self.generate_all_profile_suggestions + Delayed::Job.enqueue(ProfileSuggestion::GenerateAllJob.new) unless ProfileSuggestion::GenerateAllJob.exists? + end + + def self.generate_profile_suggestions(person_id) + Delayed::Job.enqueue ProfileSuggestionsJob.new(person_id) unless ProfileSuggestionsJob.exists?(person_id) + end + + class GenerateAllJob + def self.exists? + Delayed::Job.by_handler("--- !ruby/object:ProfileSuggestion::GenerateAllJob {}\n").count > 0 + end + + def perform + Person.find_each {|person| ProfileSuggestion.generate_profile_suggestions(person.id) } + end + end + end diff --git a/config/schedule.rb b/config/schedule.rb index c2c7f45..dec2564 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -26,3 +26,7 @@ set :output, "log/cron.log" every 1.minute do runner "SearchTerm.calculate_scores" end + +every 90.days do + runner "ProfileSuggestion.generate_all_profile_suggestions" +end diff --git a/lib/profile_suggestions_job.rb b/lib/profile_suggestions_job.rb index 07bd874..fc49507 100644 --- a/lib/profile_suggestions_job.rb +++ b/lib/profile_suggestions_job.rb @@ -1,5 +1,13 @@ class ProfileSuggestionsJob < Struct.new(:person_id) + def self.exists?(person_id) + !find(person_id).empty? + end + + def self.find(person_id) + Delayed::Job.by_handler("--- !ruby/struct:ProfileSuggestionsJob\nperson_id: #{person_id}\n") + end + def perform begin person = Person.find(person_id) -- libgit2 0.21.2