diff options
Diffstat (limited to 'app/graphql/resolvers/board_list_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/board_list_resolver.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/app/graphql/resolvers/board_list_resolver.rb b/app/graphql/resolvers/board_list_resolver.rb new file mode 100644 index 00000000000..d853846b674 --- /dev/null +++ b/app/graphql/resolvers/board_list_resolver.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module Resolvers + class BoardListResolver < BaseResolver.single + include Gitlab::Graphql::Authorize::AuthorizeResource + include BoardItemFilterable + + type Types::BoardListType, null: true + description 'Find an issue board list.' + + authorize :read_issue_board_list + + argument :id, Types::GlobalIDType[List], + required: true, + description: 'Global ID of the list.' + + argument :issue_filters, Types::Boards::BoardIssueInputType, + required: false, + description: 'Filters applied when getting issue metadata in the board list.' + + def resolve(id: nil, issue_filters: {}) + context.scoped_set!(:issue_filters, item_filters(issue_filters)) + + Gitlab::Graphql::Lazy.with_value(find_list(id: id)) do |list| + list if authorized_resource?(list) + end + end + + private + + def find_list(id:) + GitlabSchema.object_from_id(id, expected_type: ::List) + end + end +end |