All Downloads are FREE. Search and download functionalities are using the official Maven repository.

caliban.client.Selection.scala Maven / Gradle / Ivy

package caliban.client

sealed trait Selection

object Selection {
  case class InlineFragment(onType: String, selectionSet: List[Selection]) extends Selection

  case class Field(
    alias: Option[String],
    name: String,
    arguments: List[Argument[_]],
    directives: List[Directive],
    selectionSet: List[Selection],
    code: Int
  ) extends Selection

  case class Directive(name: String, arguments: List[Argument[_]] = Nil) {
    def toGraphQL(
      useVariables: Boolean,
      dropNullInputValues: Boolean,
      variables: Map[String, (__Value, String)]
    ): (String, Map[String, (__Value, String)]) = {
      val (newArgs, newVariables) = arguments.foldLeft((List.empty[String], variables)) {
        case ((args, variables), arg) =>
          val (arg2, variables2) = arg.toGraphQL(useVariables, dropNullInputValues, variables)
          (arg2 :: args, variables2)
      }
      (s"@$name(${newArgs.reverse.mkString(",")})", newVariables)
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy