39 lines
930 B
Ruby
39 lines
930 B
Ruby
# frozen_string_literal: true
|
|
|
|
# ProtectedBranchesFinder
|
|
#
|
|
# Used to filter protected branches by set of params
|
|
#
|
|
# Arguments:
|
|
# project - which project to scope to
|
|
# params:
|
|
# search: string
|
|
class ProtectedBranchesFinder
|
|
LIMIT = 100
|
|
|
|
attr_accessor :project_or_group, :params
|
|
|
|
def initialize(project_or_group, params = {})
|
|
@project_or_group = project_or_group
|
|
@params = params
|
|
end
|
|
|
|
def execute
|
|
protected_branches = if project_or_group.is_a?(Group)
|
|
project_or_group.protected_branches
|
|
else
|
|
project_or_group.all_protected_branches
|
|
end
|
|
|
|
protected_branches = protected_branches.limit(LIMIT)
|
|
by_name(protected_branches)
|
|
end
|
|
|
|
private
|
|
|
|
def by_name(protected_branches)
|
|
return protected_branches unless params[:search].present?
|
|
|
|
protected_branches.by_name(params[:search])
|
|
end
|
|
end
|