Query Functions
Query FunctionsManipulation Conditionnelle de Champs

Manipulation Conditionnelle de Champs

Included in the “Power Extensions” bundle

Ajout des méta-directives @if et @unless au schéma GraphQL, pour exécuter conditionnellement une directive imbriquée sur le champ.

@if

@if exécute ses directives imbriquées uniquement si une condition a la valeur true.

Dans cette requête, les utilisateurs "Leo" et "Peter" voient leurs noms convertis en majuscules, car ils figurent dans le tableau des "utilisateurs spéciaux", tandis que "Martin" ne l'est pas :

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @if(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...produisant :

{
  "data": {
    "users": [
      {
        "name": "LEO"
      },
      {
        "name": "Martin"
      },
      {
        "name": "PETER"
      }
    ]
  }
}

@unless

Similaire à @if, mais exécute les directives imbriquées lorsque la condition est false.

Dans cette requĂŞte, c'est l'utilisateur "Martin" qui voit son nom converti en majuscules, tandis que les autres ne le voient pas :

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @unless(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...produisant :

{
  "data": {
    "users": [
      {
        "name": "Leo"
      },
      {
        "name": "MARTIN"
      },
      {
        "name": "Peter"
      }
    ]
  }
}