Change
This commit is contained in:
parent
d1368c7612
commit
7beca24a05
|
@ -2,12 +2,13 @@ class SyncForgeController < ApplicationController
|
||||||
# before_action :check_token
|
# before_action :check_token
|
||||||
|
|
||||||
def sync_projects
|
def sync_projects
|
||||||
project_params = params[:project]
|
SyncForgeProjectJob.perform_later(params)
|
||||||
repository_params = params[:repository]
|
render json: {status: 200}
|
||||||
project_socre = params[:project_socre]
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# def create
|
# def create
|
||||||
# ActiveRecord::Base.transaction do
|
# ActiveRecord::Base.transaction do
|
||||||
# params.permit!
|
# params.permit!
|
||||||
|
|
|
@ -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
|
|
@ -0,0 +1,7 @@
|
||||||
|
class SyncForgeProjectsRake
|
||||||
|
# 运行示例: 检查哪些项目的repo不存在,bundle exec rails runner "SyncForgeProjectsRake.new.call()"
|
||||||
|
|
||||||
|
def call
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue