From de1e748e25bb4f81d1244929cfa36475e95e8e5f Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 16 Jul 2020 13:55:25 +0800 Subject: [PATCH 1/8] reset issues_count --- db/migrate/20200716055018_reset_project_issues_counte.rb | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 db/migrate/20200716055018_reset_project_issues_counte.rb diff --git a/db/migrate/20200716055018_reset_project_issues_counte.rb b/db/migrate/20200716055018_reset_project_issues_counte.rb new file mode 100644 index 00000000..15af620c --- /dev/null +++ b/db/migrate/20200716055018_reset_project_issues_counte.rb @@ -0,0 +1,9 @@ +class ResetProjectIssuesCounte < ActiveRecord::Migration[5.2] + def change + projects = Project.select(:id, :issues_count).all + projects.each do |p| + puts p.id + Project.reset_counters( p.id, :issues_count, touch: false ) + end + end +end From a77310b79fec590b5c43cb4bb544de99f235a3ad Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 16 Jul 2020 14:25:00 +0800 Subject: [PATCH 2/8] reset_project_counters --- .../20200716055018_reset_project_issues_counte.rb | 9 --------- .../20200716060536_change_projects_default_count.rb | 13 +++++++++++++ 2 files changed, 13 insertions(+), 9 deletions(-) delete mode 100644 db/migrate/20200716055018_reset_project_issues_counte.rb create mode 100644 db/migrate/20200716060536_change_projects_default_count.rb diff --git a/db/migrate/20200716055018_reset_project_issues_counte.rb b/db/migrate/20200716055018_reset_project_issues_counte.rb deleted file mode 100644 index 15af620c..00000000 --- a/db/migrate/20200716055018_reset_project_issues_counte.rb +++ /dev/null @@ -1,9 +0,0 @@ -class ResetProjectIssuesCounte < ActiveRecord::Migration[5.2] - def change - projects = Project.select(:id, :issues_count).all - projects.each do |p| - puts p.id - Project.reset_counters( p.id, :issues_count, touch: false ) - end - end -end diff --git a/db/migrate/20200716060536_change_projects_default_count.rb b/db/migrate/20200716060536_change_projects_default_count.rb new file mode 100644 index 00000000..7a1e17a4 --- /dev/null +++ b/db/migrate/20200716060536_change_projects_default_count.rb @@ -0,0 +1,13 @@ +class ChangeProjectsDefaultCount < ActiveRecord::Migration[5.2] + def change + projects = Project.select(:id, :issues_count,:pull_requests_count,:versions_count,:praises_count,:watchers_count).all + projects.each do |p| + puts p.id + Project.reset_counters( p.id, :issues_count, touch: false ) + Project.reset_counters( p.id, :pull_requests_count, touch: false ) + Project.reset_counters( p.id, :versions_count, touch: false ) + # Project.reset_counters( p.id, :praises_count, touch: false ) + Project.reset_counters( p.id, :watchers_count, touch: false ) + end + end +end From 5cd9fe9e341ad0eddd10cd1af30d3b098ec1d92c Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 16 Jul 2020 14:25:30 +0800 Subject: [PATCH 3/8] change --- db/migrate/20200716060536_change_projects_default_count.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20200716060536_change_projects_default_count.rb b/db/migrate/20200716060536_change_projects_default_count.rb index 7a1e17a4..858cd8fd 100644 --- a/db/migrate/20200716060536_change_projects_default_count.rb +++ b/db/migrate/20200716060536_change_projects_default_count.rb @@ -3,7 +3,7 @@ class ChangeProjectsDefaultCount < ActiveRecord::Migration[5.2] projects = Project.select(:id, :issues_count,:pull_requests_count,:versions_count,:praises_count,:watchers_count).all projects.each do |p| puts p.id - Project.reset_counters( p.id, :issues_count, touch: false ) + # Project.reset_counters( p.id, :issues_count, touch: false ) Project.reset_counters( p.id, :pull_requests_count, touch: false ) Project.reset_counters( p.id, :versions_count, touch: false ) # Project.reset_counters( p.id, :praises_count, touch: false ) From 9372fcf6a465273944af8bb077da0374255d7e73 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 11:18:12 +0800 Subject: [PATCH 4/8] change versions and check repository --- app/controllers/issues_controller.rb | 3 +- app/controllers/pull_requests_controller.rb | 1 + app/jobs/check_mirror_job.rb | 36 +++++++++++++++++++ app/tasks/check_mirror_rake.rb | 12 +++++++ ...0717015216_change_versions_issues_count.rb | 15 ++++++++ 5 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/jobs/check_mirror_job.rb create mode 100644 app/tasks/check_mirror_rake.rb create mode 100644 db/migrate/20200717015216_change_versions_issues_count.rb diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 985f118d..8fdb0637 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -137,7 +137,8 @@ class IssuesController < ApplicationController end @issue.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "create") - normal_status(0, "创建成功") + # normal_status(0, "创建成功",) + render :json => { status: 0, message: "创建成功", id: @issue.id} else normal_status(-1, "创建失败") end diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index dec45137..bd4e0d8f 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -88,6 +88,7 @@ class PullRequestsController < ApplicationController if params[:title].to_s.include?("WIP:") pull_issue.custom_journal_detail("WIP", "", "这个合并请求被标记为尚未完成的工作。完成后请从标题中移除WIP:前缀。", current_user&.id) end + # render :json => { status: 0, message: "PullRequest创建成功", id: pull_issue.id} normal_status(0, "PullRequest创建成功") else normal_status(-1, "PullRequest创建失败") diff --git a/app/jobs/check_mirror_job.rb b/app/jobs/check_mirror_job.rb new file mode 100644 index 00000000..9854110b --- /dev/null +++ b/app/jobs/check_mirror_job.rb @@ -0,0 +1,36 @@ + +# 运行示例: bundle exec rails runner "CheckMirrorJob.new.call()" + +class CheckMirrorJob < ApplicationJob + queue_as :default + + def perform(project) + SyncLog.sync_log("==========begin_check_project_id_job:#{project.id}============") + begin + response = Gitea::Repository::Branches::ListService.new(project.owner, project.identifier).call + unless response.present? + SyncLog.sync_log("==========check_project_error_id:#{project.id}============") + ActiveRecord::Base.transaction do + delete_gitea = Gitea::Repository::DeleteService.new(project.owner, project.identifier).call + if delete_gitea.status == 204 || delete_gitea.status == 404 #删除成功或者仓库不存在,都重新创建 + repository_params= { + name: project.identifier, + auto_init: true, + private: project.repository.hidden, + } + gitea_repository = Gitea::Repository::CreateService.new(project.owner.gitea_token, repository_params).call + if gitea_repository + project.update_columns(gpid: gitea_repository["id"],forked_count: gitea_repository["forks_count"]) + else + SyncLog.sync_log("==========gitea_repository_created_failed:#{project.id}============") + end + else + SyncLog.sync_log("==========delete_gitea_failed:#{project.id}============") + end + end + end + rescue => e + SyncLog.sync_log("==========failed_check_project_id:#{project.id}============errors:#{e}") + end + end +end \ No newline at end of file diff --git a/app/tasks/check_mirror_rake.rb b/app/tasks/check_mirror_rake.rb new file mode 100644 index 00000000..397b565b --- /dev/null +++ b/app/tasks/check_mirror_rake.rb @@ -0,0 +1,12 @@ +class CheckMirrorRake + # 运行示例: bundle exec rails runner "CheckMirrorRake.new.call()" + + def call + SyncLog.sync_log("=====begin to check mirror======") + all_projects = Projects.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) + all_projects.each do |project| + SyncLog.sync_log("=====check_project_id:#{project.id}======") + CheckMirrorJob.perform_later(project) + end + end + end \ No newline at end of file diff --git a/db/migrate/20200717015216_change_versions_issues_count.rb b/db/migrate/20200717015216_change_versions_issues_count.rb new file mode 100644 index 00000000..a614a04d --- /dev/null +++ b/db/migrate/20200717015216_change_versions_issues_count.rb @@ -0,0 +1,15 @@ +class ChangeVersionsIssuesCount < ActiveRecord::Migration[5.2] + def change + versions = Version.includes(:issues).select(:id, :closed_issues_count, :percent) + versions.each do |v| + closed_issues = Issue.select(:id, :fixed_version_id, :status_id).where(fixed_version_id: v.id, status_id: 5).size + unless v.closed_issues_count.to_i == closed_issues + puts v.id + percent = v.issues_count.to_i <=0 ? 0.0 : (closed_issues.to_f / v.issues_count.to_i) + v.closed_issues_count = closed_issues + v.percent = percent + v.save + end + end + end +end From 49db7cf68d61a89ea75fe1778218ad61b7f3bbfb Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 11:27:43 +0800 Subject: [PATCH 5/8] change --- db/migrate/20200717015216_change_versions_issues_count.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20200717015216_change_versions_issues_count.rb b/db/migrate/20200717015216_change_versions_issues_count.rb index a614a04d..b0755bfd 100644 --- a/db/migrate/20200717015216_change_versions_issues_count.rb +++ b/db/migrate/20200717015216_change_versions_issues_count.rb @@ -1,6 +1,6 @@ class ChangeVersionsIssuesCount < ActiveRecord::Migration[5.2] def change - versions = Version.includes(:issues).select(:id, :closed_issues_count, :percent) + versions = Version.includes(:issues).select(:id, :closed_issues_count, :percent,:issues_count) versions.each do |v| closed_issues = Issue.select(:id, :fixed_version_id, :status_id).where(fixed_version_id: v.id, status_id: 5).size unless v.closed_issues_count.to_i == closed_issues From 66d851f5668d7aca960cc849f549dbae8fbffe2c Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 11:54:46 +0800 Subject: [PATCH 6/8] change --- app/tasks/check_mirror_rake.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/tasks/check_mirror_rake.rb b/app/tasks/check_mirror_rake.rb index 397b565b..aa933234 100644 --- a/app/tasks/check_mirror_rake.rb +++ b/app/tasks/check_mirror_rake.rb @@ -3,7 +3,7 @@ class CheckMirrorRake def call SyncLog.sync_log("=====begin to check mirror======") - all_projects = Projects.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) + all_projects = Project.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) all_projects.each do |project| SyncLog.sync_log("=====check_project_id:#{project.id}======") CheckMirrorJob.perform_later(project) From cdbe5396e223a77c5886a294b36f791e669909c9 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 14:24:14 +0800 Subject: [PATCH 7/8] change --- app/tasks/check_mirror_rake.rb | 11 +++++++++-- app/tasks/create_mirror_take.rb | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 app/tasks/create_mirror_take.rb diff --git a/app/tasks/check_mirror_rake.rb b/app/tasks/check_mirror_rake.rb index aa933234..75255118 100644 --- a/app/tasks/check_mirror_rake.rb +++ b/app/tasks/check_mirror_rake.rb @@ -1,12 +1,19 @@ class CheckMirrorRake - # 运行示例: bundle exec rails runner "CheckMirrorRake.new.call()" + # 运行示例: 检查哪些项目的repo不存在,bundle exec rails runner "CheckMirrorRake.new.call()" def call SyncLog.sync_log("=====begin to check mirror======") + empty_repo = [] all_projects = Project.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) all_projects.each do |project| SyncLog.sync_log("=====check_project_id:#{project.id}======") - CheckMirrorJob.perform_later(project) + # CheckMirrorJob.perform_later(project) + + response = Gitea::Repository::Branches::ListService.new(project.owner, project.identifier).call + unless response.present? + empty_repo.push(project.id) + end end + SyncLog.sync_log("=====completed_response:#{empty_repo}======") end end \ No newline at end of file diff --git a/app/tasks/create_mirror_take.rb b/app/tasks/create_mirror_take.rb new file mode 100644 index 00000000..e794c9f8 --- /dev/null +++ b/app/tasks/create_mirror_take.rb @@ -0,0 +1,14 @@ +class CreateMirrorRake + # 运行示例: 检查哪些项目的repo不存在,bundle exec rails runner "CreateMirrorRake.new.call()" + + def call + SyncLog.sync_log("=====begin to create mirror======") + empty_repo = [] + all_projects = Project.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) + all_projects.each do |project| + SyncLog.sync_log("=====check_project_id:#{project.id}======") + CheckMirrorJob.perform_later(project) + end + SyncLog.sync_log("=====completed_response======") + end + end \ No newline at end of file From 98e60ee9d37b4ac113274fe480f9e7d2d09a92ea Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 14:33:22 +0800 Subject: [PATCH 8/8] change --- app/tasks/check_mirror_rake.rb | 12 +++++++++--- app/tasks/create_mirror_take.rb | 14 -------------- 2 files changed, 9 insertions(+), 17 deletions(-) delete mode 100644 app/tasks/create_mirror_take.rb diff --git a/app/tasks/check_mirror_rake.rb b/app/tasks/check_mirror_rake.rb index 75255118..e408d061 100644 --- a/app/tasks/check_mirror_rake.rb +++ b/app/tasks/check_mirror_rake.rb @@ -4,16 +4,22 @@ class CheckMirrorRake def call SyncLog.sync_log("=====begin to check mirror======") empty_repo = [] + empty_user = [] all_projects = Project.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) all_projects.each do |project| SyncLog.sync_log("=====check_project_id:#{project.id}======") # CheckMirrorJob.perform_later(project) - - response = Gitea::Repository::Branches::ListService.new(project.owner, project.identifier).call + if project.owner.present? + response = Gitea::Repository::Branches::ListService.new(project.owner, project.identifier).call + else + response = "22" + empty_user.push(project.id) + end unless response.present? empty_repo.push(project.id) end end - SyncLog.sync_log("=====completed_response:#{empty_repo}======") + SyncLog.sync_log("=====empty_repo_project_ids:#{empty_repo}======") + SyncLog.sync_log("=====empty_user_project_ids:#{empty_user}======") end end \ No newline at end of file diff --git a/app/tasks/create_mirror_take.rb b/app/tasks/create_mirror_take.rb deleted file mode 100644 index e794c9f8..00000000 --- a/app/tasks/create_mirror_take.rb +++ /dev/null @@ -1,14 +0,0 @@ -class CreateMirrorRake - # 运行示例: 检查哪些项目的repo不存在,bundle exec rails runner "CreateMirrorRake.new.call()" - - def call - SyncLog.sync_log("=====begin to create mirror======") - empty_repo = [] - all_projects = Project.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) - all_projects.each do |project| - SyncLog.sync_log("=====check_project_id:#{project.id}======") - CheckMirrorJob.perform_later(project) - end - SyncLog.sync_log("=====completed_response======") - end - end \ No newline at end of file