# frozen_string_literal: true module Types module InvitationInterface include BaseInterface field :email, GraphQL::STRING_TYPE, null: false, description: 'Email of the member to invite.' field :access_level, Types::AccessLevelType, null: true, description: 'GitLab::Access level.' field :created_by, Types::UserType, null: true, description: 'User that authorized membership.' field :created_at, Types::TimeType, null: true, description: 'Date and time the membership was created.' field :updated_at, Types::TimeType, null: true, description: 'Date and time the membership was last updated.' field :expires_at, Types::TimeType, null: true, description: 'Date and time the membership expires.' field :user, Types::UserType, null: true, description: 'User that is associated with the member object.' definition_methods do def resolve_type(object, context) case object when GroupMember Types::GroupInvitationType when ProjectMember Types::ProjectInvitationType else raise ::Gitlab::Graphql::Errors::BaseError, "Unknown member type #{object.class.name}" end end end end end