summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-06 17:36:46 -0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-11 11:39:05 -0300
commite171c1d80debd88d1aa3a3c74d1937b68a7f0f18 (patch)
tree4664623084a974bc98f2d34a609c6569f16b8e23
parent1a2002d9084db71d5a0a2631985012b4544c4037 (diff)
downloadgitlab-ce-e171c1d80debd88d1aa3a3c74d1937b68a7f0f18.tar.gz
Update Issue Board API to handle with has_many association
-rw-r--r--lib/api/boards.rb31
1 files changed, 17 insertions, 14 deletions
diff --git a/lib/api/boards.rb b/lib/api/boards.rb
index 4d5d144a02e..9b71d335128 100644
--- a/lib/api/boards.rb
+++ b/lib/api/boards.rb
@@ -7,13 +7,14 @@ module API
# Get the project board
get ':id/boards' do
authorize!(:read_board, user_project)
- present [user_project.board], with: Entities::Board
+ present user_project.boards, with: Entities::Board
end
segment ':id/boards/:board_id' do
helpers do
def project_board
- board = user_project.board
+ board = user_project.boards.first
+
if params[:board_id].to_i == board.id
board
else
@@ -55,8 +56,10 @@ module API
authorize!(:admin_list, user_project)
- list = ::Boards::Lists::CreateService.new(user_project, current_user,
- { label_id: params[:label_id] }).execute
+ service = ::Boards::Lists::CreateService.new(user_project, current_user,
+ { label_id: params[:label_id] })
+
+ list = service.execute(project_board)
if list.valid?
present list, with: Entities::List
@@ -78,10 +81,10 @@ module API
authorize!(:admin_list, user_project)
- moved = ::Boards::Lists::MoveService.new(user_project, current_user,
- { position: params[:position].to_i }).execute(list)
+ service = ::Boards::Lists::MoveService.new(user_project, current_user,
+ { position: params[:position].to_i })
- if moved
+ if service.execute(list)
present list, with: Entities::List
else
render_api_error!({ error: "List could not be moved!" }, 400)
@@ -97,16 +100,16 @@ module API
# Example Request:
# DELETE /projects/:id/boards/:board_id/lists/:list_id
delete "/lists/:list_id" do
- list = board_lists.find_by(id: params[:list_id])
-
authorize!(:admin_list, user_project)
- if list
- destroyed_list = ::Boards::Lists::DestroyService.new(
- user_project, current_user).execute(list)
- present destroyed_list, with: Entities::List
+ list = board_lists.find(params[:list_id])
+
+ service = ::Boards::Lists::DestroyService.new(user_project, current_user)
+
+ if service.execute(list)
+ present list, with: Entities::List
else
- not_found!('List')
+ render_api_error!({ error: 'List could not be deleted!' }, 400)
end
end
end