This commit is contained in:
sylor_huang@126.com 2020-08-12 11:42:22 +08:00
parent d1368c7612
commit 7beca24a05
3 changed files with 53 additions and 4 deletions

View File

@ -2,12 +2,13 @@ class SyncForgeController < ApplicationController
# before_action :check_token
def sync_projects
project_params = params[:project]
repository_params = params[:repository]
project_socre = params[:project_socre]
SyncForgeProjectJob.perform_later(params)
render json: {status: 200}
end
# def create
# ActiveRecord::Base.transaction do
# params.permit!

View File

@ -0,0 +1,41 @@
class SyncForgeProjectJob < ApplicationJob
queue_as :default
def perform(params)
Rails.logger.info("=======begin to sync forge projects, and params: #{params}")
get_rand_user = rand_user
project_params = params[:project]
repository_params = params[:repository]
project_socre_params = params[:project_socre]
begin
unless Project.select(:identifier,:user_id).exists?(identifier: project_params[:identifier], user_id: get_rand_user.id)
project_params = project_params.merge({user_id: get_rand_user.id })
project = Project.new(project_params)
if project.save
repository = Repository.new(repository_params.merge({ project_id: project.id, user_id: get_rand_user.id, login: get_rand_user.login }))
if repository.save # 同步镜像
repository.sync_mirror!
SyncMirroredRepositoryJob.perform_later(repository.id, get_rand_user.id)
end
project_score = ProjectScore.new(project_socre_params.merge({project_id: project.id}))
project_score.save
end
end
Rails.logger.info("=======end to sync forge projects")
rescue => e
Rails.logger.info("=======sync forge projects has errors: #{e}")
end
end
private
def rand_user
user_ids = User.select(:id, :type).where(type: "User").pluck(:id)
range_user_id = user_ids[rand(user_ids.length-1)]
rand_sync_user = User.select(:id, :login).find_by_id(range_user_id) #生成随机用户
unless rand_sync_user.present?
rand_user
end
rand_sync_user
end
end

View File

@ -0,0 +1,7 @@
class SyncForgeProjectsRake
# 运行示例: 检查哪些项目的repo不存在bundle exec rails runner "SyncForgeProjectsRake.new.call()"
def call
end
end