Apollo GraphQL schema + codegen 将 Hasura/PostgreSQL 标量数组转换为标量

Apollo GraphQL schema + codegen converting Hasura/PostgreSQL scalar array to scalar

我正在使用 Hasura 为 PostgreSQL table 提供 GraphQL 接口。如果我有一个 table 和一个 integer[] 列,命令 apollo schema:download 生成一个 schema.json 具有:

      {
        "name": "distances",
        "description": null,
        "type": {
          "kind": "SCALAR",
          "name": "_int4",
          "ofType": null
        },
        "defaultValue": null
      }

这很不幸,因为它没有传达这个字段是一个数组的信息。自然地,当我使用 apollo codegen:generate 时,如果使用 --passthroughCustomScalars 标志,类型要么变形为 String,要么只是 _int4

有没有办法配置我的 graphql 服务器 (Hasura) 或 apollo CLI 来保留数组类型信息?

原来_前缀已经可以是一个数组类型的指标了。我不确定其他情况是否会导致类型名称 _int4 但在我的用例中我可以安全地假设 int4 来自 Integer_int4 来自Integer[].

这样我就可以使用 --passthroughCustomScalars 并为我的 Apollo SDK 提供类型别名,以将 apollo codegen:generate_int4 输出识别为整数数组并定义适当的 JSON encode/decode 方法。代码生成工具有点粗糙,但可以管理。