diff options
Diffstat (limited to 'app/graphql/resolvers/board_lists_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/board_lists_resolver.rb | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/app/graphql/resolvers/board_lists_resolver.rb b/app/graphql/resolvers/board_lists_resolver.rb index f8d62ba86af..b1d43934f24 100644 --- a/app/graphql/resolvers/board_lists_resolver.rb +++ b/app/graphql/resolvers/board_lists_resolver.rb @@ -6,12 +6,16 @@ module Resolvers type Types::BoardListType, null: true + argument :id, GraphQL::ID_TYPE, + required: false, + description: 'Find a list by its global ID' + alias_method :board, :object - def resolve(lookahead: nil) + def resolve(lookahead: nil, id: nil) authorize!(board) - lists = board_lists + lists = board_lists(id) if load_preferences?(lookahead) List.preload_preferences_for_user(lists, context[:current_user]) @@ -22,8 +26,13 @@ module Resolvers private - def board_lists - service = Boards::Lists::ListService.new(board.resource_parent, context[:current_user]) + def board_lists(id) + service = Boards::Lists::ListService.new( + board.resource_parent, + context[:current_user], + list_id: extract_list_id(id) + ) + service.execute(board, create_default_lists: false) end @@ -34,5 +43,11 @@ module Resolvers def load_preferences?(lookahead) lookahead&.selection(:edges)&.selection(:node)&.selects?(:collapsed) end + + def extract_list_id(gid) + return unless gid.present? + + GitlabSchema.parse_gid(gid, expected_type: ::List).model_id + end end end |