스키마 확장
스키마 확장'Enum String' 타입

'Enum String' 타입

특정 정보는 미리 정의된 집합의 값만 가질 수 있는 경우가 있으며, 이상적으로는 Enum 타입으로 모델링하는 것이 적합합니다. 그러나 enum 타입은 값에 "-" 문자를 포함할 수 없다는 제한이 있어, 이를 피할 수 없는 상황이 생기기도 합니다.

예를 들어, 사이트에 등록되어 있고 쿼리가 허용된 모든 커스텀 포스트 타입을 나열하는 CustomPostEnum enum 타입이 있으면 편리합니다. 그러나 커스텀 포스트 타입 이름에는 "-" 문자가 포함될 수 있으며, 아래의 "some-custom-cpt" 예시가 이에 해당합니다:

{
  customPosts(
    filter: {
      customPostTypes: ["post", "product", "some-custom-cpt"]
    }
  ) {
    # ...
  }
}

이 제한으로 인해 해당 타입은 enum 타입으로 만들 수 없습니다. 대신, Gato GraphQL에서는 커스텀 「Enum String」 타입으로 구현합니다. 이는 Enum과 유사하게 미리 정의된 집합에서만 값을 받을 수 있는 String 타입입니다.

GraphQL 스키마에 구현된 EnumString 타입의 예시는 다음과 같습니다:

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

인트로스펙션: 「Enum String」 타입의 가능한 값 조회하기

인트로스펙션을 통해 각 EnumString 타입에서 허용되는 값의 목록을 가져올 수 있습니다:

query EnumStringTypePossibleValues {
  __schema {
    types {
      name
      extensions {
        # This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
        possibleValues
      }
    }
  }
}