You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
53 lines
1.5 KiB
class ProjectsController < ApplicationController
|
|
before_action :require_login, except: %i[index branches group_type_list]
|
|
before_action :find_project, only: %i[branches]
|
|
|
|
def index
|
|
scope = Projects::ListQuery.call(params)
|
|
@projects = paginate(scope)
|
|
end
|
|
|
|
def create
|
|
ActiveRecord::Base.transaction do
|
|
Projects::CreateForm.new(project_params).validate!
|
|
@project = Projects::CreateService.new(current_user, project_params).call
|
|
end
|
|
rescue Exception => e
|
|
uid_logger_error(e.message)
|
|
tip_exception(e.message)
|
|
end
|
|
|
|
def migrate
|
|
ActiveRecord::Base.transaction do
|
|
Projects::MigrateForm.new(mirror_params).validate!
|
|
@project = Projects::MigrateService.new(current_user, mirror_params).call
|
|
end
|
|
rescue Exception => e
|
|
uid_logger_error(e.message)
|
|
tip_exception(e.message)
|
|
end
|
|
|
|
def branches
|
|
@branches = Gitea::Repository::BranchesService.new(current_user, @project.identifier).call
|
|
end
|
|
|
|
def group_type_list
|
|
@project_group_list = Project.visible.group(:project_type).select('project_type, count(*) AS projects_count')
|
|
end
|
|
|
|
private
|
|
def find_project
|
|
@project = Project.find_by_identifier! params[:id]
|
|
end
|
|
|
|
def project_params
|
|
params.permit(:user_id, :name, :description, :repository_name,
|
|
:project_category_id, :project_language_id, :license_id, :ignore_id)
|
|
end
|
|
|
|
def mirror_params
|
|
params.permit(:user_id, :name, :description, :repository_name,
|
|
:project_category_id, :project_language_id, :clone_addr, :private)
|
|
end
|
|
end
|