forked from jasder/forgeplus
97 lines
2.6 KiB
Ruby
97 lines
2.6 KiB
Ruby
class Admins::MirrorRepositoriesController < Admins::BaseController
|
|
before_action :check_shixun_mirrors!, only: [:index]
|
|
|
|
def index
|
|
mirrors = MirrorRepository.all
|
|
mirrors = mirrors.reorder(status: :desc, main_type: :desc, type_name: :asc)
|
|
|
|
@mirrors = paginate mirrors.includes(:mirror_scripts)
|
|
@error_mirror_names = MirrorRepository.where(status: 5).pluck(:name)
|
|
end
|
|
|
|
def new
|
|
@mirror = MirrorRepository.new
|
|
end
|
|
|
|
def create
|
|
@mirror = MirrorRepository.new
|
|
Admins::SaveMirrorRepositoryService.call(@mirror, current_user, form_params)
|
|
|
|
flash[:success] = '保存成功'
|
|
redirect_to edit_admins_mirror_repository_path(@mirror)
|
|
rescue ActiveRecord::RecordInvalid
|
|
flash.now[:danger] = '保存失败'
|
|
render 'new'
|
|
rescue Admins::SaveMirrorRepositoryService::Error => ex
|
|
flash.now[:danger] = ex.message
|
|
render 'new'
|
|
end
|
|
|
|
def edit
|
|
@mirror = current_mirror
|
|
end
|
|
|
|
def update
|
|
@mirror = current_mirror
|
|
|
|
Admins::SaveMirrorRepositoryService.call(current_mirror, current_user, form_params)
|
|
|
|
flash[:success] = '保存成功'
|
|
redirect_to edit_admins_mirror_repository_path(current_mirror)
|
|
rescue ActiveRecord::RecordInvalid
|
|
flash.now[:danger] = '保存失败'
|
|
render 'edit'
|
|
rescue Admins::SaveMirrorRepositoryService::Error => ex
|
|
flash.now[:danger] = ex.message
|
|
render 'edit'
|
|
end
|
|
|
|
def destroy
|
|
return render_js_error('该状态下不允许删除') unless current_mirror.deletable?
|
|
|
|
current_mirror.destroy!
|
|
|
|
render_delete_success
|
|
end
|
|
|
|
def for_select
|
|
mirrors = MirrorRepository.all
|
|
|
|
keyword = params[:keyword].to_s.strip
|
|
mirrors = mirrors.where('name LIKE ?', "%#{keyword}%") if keyword.present?
|
|
|
|
@mirrors = paginate mirrors
|
|
|
|
render_ok(count: @mirrors.total_count, mirrors: @mirrors.as_json(only: %i[id name]))
|
|
end
|
|
|
|
def merge
|
|
origin_mirror = MirrorRepository.find(params[:mirror_id])
|
|
mirror = MirrorRepository.find(params[:new_mirror_id])
|
|
|
|
ActiveRecord::Base.transaction do
|
|
origin_mirror.update!(name: mirror.name, mirrorID: mirror.mirrorID)
|
|
mirror.destroy!
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def current_mirror
|
|
@_current_mirror ||= MirrorRepository.find(params[:id])
|
|
end
|
|
|
|
def form_params
|
|
columns = %i[type_name main_type time_limit resource_limit cpu_limit memory_limit description status]
|
|
params.require(:mirror_repository).permit(*columns)
|
|
end
|
|
|
|
def check_shixun_mirrors!
|
|
return unless request.format.html?
|
|
|
|
Admins::CheckShixunMirrorsService.call
|
|
rescue Admins::CheckShixunMirrorsService::Error => e
|
|
internal_server_error(e.message)
|
|
end
|
|
end
|