diff --git a/app/controllers/admins/project_evaluation_controller.rb b/app/controllers/admins/project_evaluation_controller.rb index 0745ddc6..94a1e510 100644 --- a/app/controllers/admins/project_evaluation_controller.rb +++ b/app/controllers/admins/project_evaluation_controller.rb @@ -1,33 +1,6 @@ class Admins::ProjectEvaluationController < Admins::BaseController def update - Project.where(is_public: 1, id: Repository.pluck(:project_id)).find_each do |project| - ProjectEvaluation.update_raw_scores(project) - end - ProjectEvaluation.update_normalized_scores - - def evaluate_and_update(interval) - ProjectEvaluationTop.top_projects_selection(interval) - ProjectEvaluation.update_scores_by_interval(interval) - end - - current_date = Date.today - - if current_date.wday == 1 - evaluate_and_update(:weekly) - end - - if current_date.day == 1 - evaluate_and_update(:monthly) - end - - if current_date.day == 1 && [1, 4, 7, 10].include?(current_date.month) - evaluate_and_update(:quarterly) - end - - if current_date.yday == 1 - evaluate_and_update(:yearly) - end - + ProjectEvaluation.update_all render_ok() end end diff --git a/app/jobs/evaluate_project_job.rb b/app/jobs/evaluate_project_job.rb new file mode 100644 index 00000000..eb359ddc --- /dev/null +++ b/app/jobs/evaluate_project_job.rb @@ -0,0 +1,7 @@ +class EvaluateProjectJob < ApplicationJob + queue_as :message + + def perform(*args) + ProjectEvaluation.update_all + end +end diff --git a/app/models/project_evaluation_top.rb b/app/models/project_evaluation_top.rb index 783ac27f..0fe337d8 100644 --- a/app/models/project_evaluation_top.rb +++ b/app/models/project_evaluation_top.rb @@ -54,4 +54,9 @@ class ProjectEvaluationTop < ApplicationRecord ) end end + + def self.evaluate_and_update(interval) + ProjectEvaluationTop.top_projects_selection(interval) + ProjectEvaluation.update_scores_by_interval(interval) + end end diff --git a/config/sidekiq_cron.yml b/config/sidekiq_cron.yml index 448e9c94..81529705 100644 --- a/config/sidekiq_cron.yml +++ b/config/sidekiq_cron.yml @@ -7,3 +7,8 @@ delay_expired_issue: cron: "0 0 * * *" class: "DelayExpiredIssueJob" queue: message + +evaluate_project: + cron: "0 0 * * *" + class: "EvaluateProjectJob" + queue: message \ No newline at end of file diff --git a/spec/jobs/evaluate_project_job_spec.rb b/spec/jobs/evaluate_project_job_spec.rb new file mode 100644 index 00000000..cd444ae6 --- /dev/null +++ b/spec/jobs/evaluate_project_job_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe EvaluateProjectJob, type: :job do + pending "add some examples to (or delete) #{__FILE__}" +end