diff --git a/app/jobs/cache_async_clear_job.rb b/app/jobs/cache_async_clear_job.rb index 651dfaf41..1d810781a 100644 --- a/app/jobs/cache_async_clear_job.rb +++ b/app/jobs/cache_async_clear_job.rb @@ -7,6 +7,8 @@ class CacheAsyncClearJob < ApplicationJob Cache::V2::ProjectCommonService.new(id).clear when "owner_common_service" Cache::V2::OwnnerCommonService.new(id).clear + when "project_rank_service" + Cache::V2::ProjectRankService.new(id).clear end end end \ No newline at end of file diff --git a/app/models/project.rb b/app/models/project.rb index e671f0a6e..cfe9adb12 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -129,8 +129,8 @@ class Project < ApplicationRecord has_many :has_pinned_users, through: :pinned_projects, source: :user has_many :webhooks, class_name: "Gitea::Webhook", primary_key: :gpid, foreign_key: :repo_id after_create :incre_user_statistic, :incre_platform_statistic - after_save :check_project_members, :reset_cache_data - before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned + after_save :check_project_members + before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned, :reset_cache_data before_destroy :decre_project_common, :decre_forked_from_project_count after_destroy :decre_user_statistic, :decre_platform_statistic scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :description, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)} @@ -154,7 +154,7 @@ class Project < ApplicationRecord end def reset_cache_data - CacheAsyncResetJob.perform_later("project_common_service", self.id) + CacheAsyncResetJob.set(wait: 5.seconds).perform_later("project_common_service", self.id) if changes[:user_id].present? CacheAsyncSetJob.perform_later("user_statistic_service", {project_count: -1}, changes[:user_id].first) CacheAsyncSetJob.perform_later("user_statistic_service", {project_count: 1}, changes[:user_id].last) @@ -167,6 +167,11 @@ class Project < ApplicationRecord CacheAsyncSetJob.perform_later("platform_statistic_service", {project_language_count_key: first_language&.name, project_language_count: -1}) CacheAsyncSetJob.perform_later("platform_statistic_service", {project_language_count_key: last_language&.name, project_language_count: 1}) end + if changes[:is_public].present? + if changes[:is_public][0] && !changes[:is_public][1] + CacheAsyncClearJob.perform_later('project_rank_service', self.id) + end + end end def decre_project_common