diff options
Diffstat (limited to 'lib/api/v3/helpers.rb')
-rw-r--r-- | lib/api/v3/helpers.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/api/v3/helpers.rb b/lib/api/v3/helpers.rb index 0f234d4cdad..4e63aa01c1a 100644 --- a/lib/api/v3/helpers.rb +++ b/lib/api/v3/helpers.rb @@ -14,6 +14,36 @@ module API authorize! access_level, merge_request merge_request end + + # project helpers + + def filter_projects(projects) + if params[:membership] + projects = projects.merge(current_user.authorized_projects) + end + + if params[:owned] + projects = projects.merge(current_user.owned_projects) + end + + if params[:starred] + projects = projects.merge(current_user.starred_projects) + end + + if params[:search].present? + projects = projects.search(params[:search]) + end + + if params[:visibility].present? + projects = projects.where(visibility_level: Gitlab::VisibilityLevel.level_value(params[:visibility])) + end + + unless params[:archived].nil? + projects = projects.where(archived: to_boolean(params[:archived])) + end + + projects.reorder(params[:order_by] => params[:sort]) + end end end end |