26 lines
848 B
Ruby
26 lines
848 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Types
|
||
|
class ProjectMemberType < BaseObject
|
||
|
graphql_name 'ProjectMember'
|
||
|
description 'Represents a Project Member'
|
||
|
|
||
|
expose_permissions Types::PermissionTypes::Project
|
||
|
|
||
|
implements MemberInterface
|
||
|
|
||
|
authorize :read_project
|
||
|
|
||
|
field :id, GraphQL::ID_TYPE, null: false,
|
||
|
description: 'ID of the member'
|
||
|
|
||
|
field :user, Types::UserType, null: false,
|
||
|
description: 'User that is associated with the member object',
|
||
|
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, obj.user_id).find }
|
||
|
|
||
|
field :project, Types::ProjectType, null: true,
|
||
|
description: 'Project that User is a member of',
|
||
|
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Project, obj.source_id).find }
|
||
|
end
|
||
|
end
|