I have the following case class with option fields:
case class BusinessUserRow(id: String, firstName: Option[String], lastName: Option[String], email: Option[String])
I am trying to create an inputType Object for Business User Object
val BusinessUserInputType =
deriveInputObjectType[BusinessUserRow](
InputObjectTypeName("input"),
InputObjectTypeDescription("A Business user")
)
and I want to pass this BusinessInputObject as an argument to a addBusinessUser mutation
val businessUserInputArg = Argument("input", BusinessUserInputType)
val Mutation = ObjectType("Mutation", fields[RepoContext, Unit](
Field("addBusinessUser", BusinessUserType,
arguments = businessUserInputArg :: Nil,
resolve = c ⇒ c.ctx.BusinessUserRepo.create(c.arg(businessUserInputArg)))))
But I get the following compilation error:
Type dao.Tables.BusinessUserRow @@ sangria.marshalling.FromInput.InputObjectResult cannot be used as an input. Please consider defining an implicit instance of `FromInput` for it.
[error] val businessUserInputArg = Argument("input", BusinessUserInputType)
But All fields in BusinessRow are scalar values. I don't understand what is causing the issue.Is there something I am not seeing?
In order to deserialize the input in the BusinessUserRow
case class, you need to provide an instance of FromInput[BusinessUserRow]
type class. You can find more docs on it here:
http://sangria-graphql.org/learn/#frominput-type-class
So if you are, for instance, using spray-json, then you need to define JsonFormat
for BusinessUserRow