Использование одного и того же объекта для ObjectType и InputObjectType - PullRequest
0 голосов
/ 14 мая 2018

У меня есть объект модели, определенный следующим образом:

case class OrganizationId(value: Long) extends AnyVal with TypedId

case class OrganizationFields(name: String, iban: Option[String], bic: Option[String])

case class Organization(
  id: OrganizationId, addressId: AddressId, updatedAt: LocalDateTime, insertedAt: LocalDateTime, fields: OrganizationFields
)

И вот что я пытаюсь сделать в своем определении схемы сангрии:

implicit val OrganizationFields = deriveObjectType[GraphqlContext, OrganizationFields]()
  implicit val OrganizationType: ObjectType[GraphqlContext, Organization] = deriveObjectType[GraphqlContext, Organization]()
implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields]()

Мне нужно определитьOrganizationFields как ObjectType, чтобы иметь возможность использовать Organization в моих запросах graphql, так и как ObjectInputType, чтобы иметь возможность использовать его в моей мутации graphql в качестве входных данных.Проблема в том, что я получаю следующее исключение во время выполнения:
Type name 'OrganizationFields' is used for several conflicting GraphQL type kinds: ObjectType, InputObjectType. Conflict found in an argument 'organization' defined in field 'createOrganization' of 'Mutation' type
Есть ли способ заставить его работать?

1 Ответ

0 голосов
/ 14 мая 2018

В вашем примере оба типа GraphQL будут иметь одинаковые имена. Это недопустимо, поскольку все типы в схеме GraphQL совместно используют одно и то же глобальное пространство имен.

Вы можете переименовать один из этих типов, чтобы решить эту проблему. Например:

implicit val OrganizationInputType = deriveInputObjectType[OrganizationFields](
  InputObjectTypeName("OrganizationFieldsInput"))
...