Blog

🏁 Vous pouvez désormais muter les valeurs meta dans Gato GraphQL

Leonardo Losoviz
Par Leonardo Losoviz ·

v11.3 de Gato GraphQL a été publiée aujourd'hui, avec la prise en charge d'une fonctionnalité importante : Les mutations de meta !

Vous pouvez désormais ajouter, mettre à jour et supprimer des valeurs meta, pour les custom posts, les tags, les catégories, les commentaires et les utilisateurs.

Voici des exemples de requêtes qui mutent des meta.

Ajout de meta

Vous pouvez ajouter des entrées meta aux custom posts, aux tags, aux catégories, aux commentaires et aux utilisateurs.

Cette requête ajoute une entrée meta à l'article avec l'ID 4 :

mutation {
  addCustomPostMeta(input: {
    id: 4
    key: "some_key"
    value: "Some value"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPost {
      id
      metaValue(key: "some_key") 
    }
  }
}

Cette requête ajoute la même clé meta avec différentes valeurs à différents articles, en masse :

mutation {
  addCustomPostMetas(inputs: [
    {
      id: 4
      key: "some_key"
      value: "Some value"
    },
    {
      id: 5
      key: "some_key"
      value: "Some other value"
    },
    {
      id: 6
      key: "some_key"
      value: "Yet another value"
    }
  ]) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPost {
      id
      metaValue(key: "some_key") 
    }
  }
}

Mise à jour de meta

Mettre à jour une entrée meta de catégorie :

mutation {
  updateCategoryMeta(input: {
    id: 20
    key: "_source"
    value: "Updated source value"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    category {
      __typename
      id
      metaValue(key: "_source") 
    }
  }
}

Cette requête utilise des nested mutations pour mettre à jour une valeur meta dans un article :

mutation {
  post(by: {id: 1}) {
    updateMeta(input: {
      key: "some_key"
      value: "Updated description"
    }) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      post {
        id
        metaValue(key: "single_meta_key") 
      }
    }
  }
}

Suppression de meta

Supprimer une entrée meta d'un article :

mutation {
  deletePostMeta(input: {
    id: 5
    key: "some_key"
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    post {
      id
      metaValue(key: "some_key") 
    }
  }
}

Supprimer la même entrée meta de plusieurs articles, en masse :

mutation {
  deletePostMetas(inputs: [
    {
      id: 5
      key: "some_key"
    },
    {
      id: 6
      key: "some_key"
    }
  ]) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    post {
      id
      metaValue(key: "some_key") 
    }
  }
}

Définir plusieurs entrées meta à la fois

Vous pouvez définir plusieurs entrées meta à la fois en passant un JSON aux différentes mutations set{Entity}Meta :

mutation {
  setCustomPostMeta(input: {
    id: 4
    entries: {
      single_meta_key: [
        "This is a single entry",
      ],
      object_meta_key: [
        {
          key: "This is a key",
          value: "This is a value",
        },
      ],
      array_meta_key: [
        "This is a string",
        "This is another string",
      ],
      object_array_meta_key: [
        [
          {
            key: "This is a key 1",
            value: "This is a value 1",
          },
          {
            key: "This is a key 2",
            value: "This is a value 2",
          },
        ]
      ],
    }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    customPost {
      id
      meta(keys: ["single_meta_key", "object_meta_key", "array_meta_key", "object_array_meta_key"])
    }
  }
}

Définir des entrées meta lors de la création/mise à jour d'une entité

Vous pouvez définir des entrées meta directement lors de la création ou de la mise à jour d'un custom post, d'un tag, d'une catégorie ou d'un commentaire, via le paramètre meta.

Cette requête définit des meta lors de l'ajout d'un commentaire :

mutation {
  addCommentToCustomPost(input: {
    customPostID: 1130
    commentAs: { html: "New comment" }
    meta: {
      some_meta_key: [
        "This is a single entry",
      ],
      another_meta_key: [
        "This is an array entry 1",
        "This is an array entry 2",
      ],
    }
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    comment {
      id
      meta(keys: ["some_meta_key", "another_meta_key"]) 
    }
  }
}

Cette requête injecte le meta dans la nested mutation Post.update :

mutation {
  post(by: {id: 1}) {
    update(input: {
      meta: {
        single_meta_key: [
          "This is an updated value",
        ]
      }
    }) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      post {
        id
        metaValue(key: "single_meta_key") 
      }
    }
  }
}

Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.