52 lines
1.4 KiB
Ruby
52 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Mutations
|
|
module Boards
|
|
module Lists
|
|
class Update < BaseMutation
|
|
graphql_name 'UpdateBoardList'
|
|
|
|
argument :list_id, Types::GlobalIDType[List],
|
|
required: true,
|
|
loads: Types::BoardListType,
|
|
description: 'Global ID of the list.'
|
|
|
|
argument :position, GraphQL::INT_TYPE,
|
|
required: false,
|
|
description: 'Position of list within the board.'
|
|
|
|
argument :collapsed, GraphQL::BOOLEAN_TYPE,
|
|
required: false,
|
|
description: 'Indicates if the list is collapsed for this user.'
|
|
|
|
field :list,
|
|
Types::BoardListType,
|
|
null: true,
|
|
description: 'Mutated list.'
|
|
|
|
def resolve(list: nil, **args)
|
|
raise_resource_not_available_error! unless can_read_list?(list)
|
|
update_result = update_list(list, args)
|
|
|
|
{
|
|
list: update_result[:list],
|
|
errors: list.errors.full_messages
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def update_list(list, args)
|
|
service = ::Boards::Lists::UpdateService.new(list.board, current_user, args)
|
|
service.execute(list)
|
|
end
|
|
|
|
def can_read_list?(list)
|
|
return false unless list.present?
|
|
|
|
Ability.allowed?(current_user, :read_issue_board_list, list.board)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|