Browse Source

Change

pull/278/head
sylor_huang@126.com 5 years ago
parent
commit
7beca24a05
3 changed files with 53 additions and 4 deletions
  1. +5
    -4
      app/controllers/sync_forge_controller.rb
  2. +41
    -0
      app/jobs/sync_forge_project_job.rb
  3. +7
    -0
      app/tasks/sync_forge_projects_rake.rb

+ 5
- 4
app/controllers/sync_forge_controller.rb 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!


+ 41
- 0
app/jobs/sync_forge_project_job.rb 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

+ 7
- 0
app/tasks/sync_forge_projects_rake.rb View File

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

Loading…
Cancel
Save