diff options
Diffstat (limited to 'app/finders/group_descendants_finder.rb')
-rw-r--r-- | app/finders/group_descendants_finder.rb | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/app/finders/group_descendants_finder.rb b/app/finders/group_descendants_finder.rb index 18ccea330af..7974710e67b 100644 --- a/app/finders/group_descendants_finder.rb +++ b/app/finders/group_descendants_finder.rb @@ -87,9 +87,13 @@ class GroupDescendantsFinder visible_to_user = visible_to_user.or(authorized_to_user) end - hierarchy_for_parent - .descendants - .where(visible_to_user) + group_to_query = if Feature.enabled?(:linear_group_descendants_finder, current_user, default_enabled: :yaml) + parent_group + else + hierarchy_for_parent + end + + group_to_query.descendants.where(visible_to_user) # rubocop: enable CodeReuse/Finder end # rubocop: enable CodeReuse/ActiveRecord @@ -155,7 +159,13 @@ class GroupDescendantsFinder # rubocop: disable CodeReuse/ActiveRecord def projects_matching_filter # rubocop: disable CodeReuse/Finder - projects_nested_in_group = Project.where(namespace_id: hierarchy_for_parent.base_and_descendants.select(:id)) + objects_in_hierarchy = if Feature.enabled?(:linear_group_descendants_finder, current_user, default_enabled: :yaml) + parent_group.self_and_descendants.as_ids + else + hierarchy_for_parent.base_and_descendants.select(:id) + end + + projects_nested_in_group = Project.where(namespace_id: objects_in_hierarchy) params_with_search = params.merge(search: params[:filter]) ProjectsFinder.new(params: params_with_search, |