๋ธ”๋กœ๊ทธ

๐Ÿ ์ด์ œ Gato GraphQL์—์„œ ๋ฉ”ํƒ€ ๊ฐ’์„ ๋ฎคํ…Œ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

Leonardo Losoviz
์ž‘์„ฑ์ž: Leonardo Losoviz ยท

์˜ค๋Š˜ Gato GraphQL v11.3์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ๋ฉ”ํƒ€ ๋ฎคํ…Œ์ด์…˜!

์ปค์Šคํ…€ ๊ฒŒ์‹œ๋ฌผ, ํƒœ๊ทธ, ์นดํ…Œ๊ณ ๋ฆฌ, ๋Œ“๊ธ€, ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋ฉ”ํƒ€ ๊ฐ’์„ ์ถ”๊ฐ€, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์— ๋ฉ”ํƒ€๋ฅผ ๋ฎคํ…Œ์ด์…˜ํ•˜๋Š” ์ฟผ๋ฆฌ ์˜ˆ์‹œ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”ํƒ€ ์ถ”๊ฐ€

์ปค์Šคํ…€ ๊ฒŒ์‹œ๋ฌผ, ํƒœ๊ทธ, ์นดํ…Œ๊ณ ๋ฆฌ, ๋Œ“๊ธ€, ์‚ฌ์šฉ์ž์— ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ฟผ๋ฆฌ๋Š” 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") 
    }
  }
}

์ด ์ฟผ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ฉ”ํƒ€ ํ‚ค์— ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฒŒ์‹œ๋ฌผ์— ์ผ๊ด„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

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") 
    }
  }
}

๋ฉ”ํƒ€ ์—…๋ฐ์ดํŠธ

์นดํ…Œ๊ณ ๋ฆฌ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

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

์ด ์ฟผ๋ฆฌ๋Š” ์ค‘์ฒฉ ๋ฎคํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์˜ ๋ฉ”ํƒ€ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

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") 
      }
    }
  }
}

๋ฉ”ํƒ€ ์‚ญ์ œ

๊ฒŒ์‹œ๋ฌผ์—์„œ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค:

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

์—ฌ๋Ÿฌ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋™์ผํ•œ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ์ผ๊ด„์ ์œผ๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค:

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") 
    }
  }
}

์—ฌ๋Ÿฌ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•˜๊ธฐ

๋‹ค์–‘ํ•œ set{Entity}Meta ๋ฎคํ…Œ์ด์…˜์— JSON์„ ์ „๋‹ฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

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"])
    }
  }
}

์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ ์‹œ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ ์„ค์ •ํ•˜๊ธฐ

์ปค์Šคํ…€ ๊ฒŒ์‹œ๋ฌผ, ํƒœ๊ทธ, ์นดํ…Œ๊ณ ๋ฆฌ, ๋˜๋Š” ๋Œ“๊ธ€์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ meta ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๋ฉ”ํƒ€ ํ•ญ๋ชฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ฟผ๋ฆฌ๋Š” ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ฉ”ํƒ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

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"]) 
    }
  }
}

์ด ์ฟผ๋ฆฌ๋Š” ์ค‘์ฒฉ ๋ฎคํ…Œ์ด์…˜ 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") 
      }
    }
  }
}

๋‰ด์Šค๋ ˆํ„ฐ ๊ตฌ๋…ํ•˜๊ธฐ

Gato GraphQL์˜ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋ฅผ ๋†“์น˜์ง€ ๋งˆ์„ธ์š”.