diff options
author | Izaak Alpert <ialpert@blackberry.com> | 2013-09-22 00:50:18 -0400 |
---|---|---|
committer | Izaak Alpert <ialpert@blackberry.com> | 2013-09-23 19:36:25 -0400 |
commit | 4cfbfbb845680f2df67110ca15f2479cba8e2441 (patch) | |
tree | 2ef7183fca2fe8ede1c85a89310033cbfef2e29d /lib/api/projects.rb | |
parent | 0630be3828998af1261b87ae85b42c0ef9a439ed (diff) | |
download | gitlab-ce-4cfbfbb845680f2df67110ca15f2479cba8e2441.tar.gz |
Added search for projects by name to api
GITLAB-1283 (GITLAB-869)
Change-Id: I611e7e93f6292de08e1edc8d3ea77cf9087b6ded
Conflicts:
config/initializers/1_settings.rb
Diffstat (limited to 'lib/api/projects.rb')
-rw-r--r-- | lib/api/projects.rb | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c6ff524cb06..d17b791dccc 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -73,16 +73,16 @@ module API post do required_attributes! [:name] attrs = attributes_for_keys [:name, - :path, - :description, - :default_branch, - :issues_enabled, - :wall_enabled, - :merge_requests_enabled, - :wiki_enabled, - :snippets_enabled, - :namespace_id, - :public] + :path, + :description, + :default_branch, + :issues_enabled, + :wall_enabled, + :merge_requests_enabled, + :wiki_enabled, + :snippets_enabled, + :namespace_id, + :public] @project = ::Projects::CreateContext.new(current_user, attrs).execute if @project.saved? present @project, with: Entities::Project @@ -113,14 +113,14 @@ module API authenticated_as_admin! user = User.find(params[:user_id]) attrs = attributes_for_keys [:name, - :description, - :default_branch, - :issues_enabled, - :wall_enabled, - :merge_requests_enabled, - :wiki_enabled, - :snippets_enabled, - :public] + :description, + :default_branch, + :issues_enabled, + :wall_enabled, + :merge_requests_enabled, + :wiki_enabled, + :snippets_enabled, + :public] @project = ::Projects::CreateContext.new(user, attrs).execute if @project.saved? present @project, with: Entities::Project @@ -165,7 +165,6 @@ module API end end - # Get a project team members # # Parameters: @@ -262,6 +261,22 @@ module API {message: "Access revoked", id: params[:user_id].to_i} end end + + # search for projects current_user has access to + # + # Parameters: + # query (required) - A string contained in the project name + # per_page (optional) - number of projects to return per page, defaults to 20 + # offset (optional) - the offset in pages to retrieve + # Example Request: + # GET /projects/search/:query + get "/search/:query" do + limit = (params[:per_page] || 20).to_i + offset = (params[:page] || 0).to_i * limit + ids = current_user.authorized_projects.map(&:id) + projects = Project.where("(id in (?) OR public = true) AND (name LIKE (?))", ids, "%#{params[:query]}%").limit(limit).offset(offset) + present projects, with: Entities::Project + end end end end |