diff options
Diffstat (limited to 'app/graphql/types/group_type.rb')
-rw-r--r-- | app/graphql/types/group_type.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/app/graphql/types/group_type.rb b/app/graphql/types/group_type.rb index 20b4c66ba95..fd7d9a9ba3d 100644 --- a/app/graphql/types/group_type.rb +++ b/app/graphql/types/group_type.rb @@ -65,6 +65,45 @@ module Types null: true, description: 'A single board of the group', resolver: Resolvers::BoardsResolver.single + + field :label, + Types::LabelType, + null: true, + description: 'A label available on this group' do + argument :title, GraphQL::STRING_TYPE, + required: true, + description: 'Title of the label' + end + + def label(title:) + BatchLoader::GraphQL.for(title).batch(key: group) do |titles, loader, args| + LabelsFinder + .new(current_user, group: args[:key], title: titles) + .execute + .each { |label| loader.call(label.title, label) } + end + end + + field :labels, + Types::LabelType.connection_type, + null: true, + description: 'Labels available on this group' do + argument :search_term, GraphQL::STRING_TYPE, + required: false, + description: 'A search term to find labels with' + end + + def labels(search_term: nil) + LabelsFinder + .new(current_user, group: group, search: search_term) + .execute + end + + private + + def group + object.respond_to?(:sync) ? object.sync : object + end end end |