Как использовать Hasura / postgres uuid с apollo-ios и swift

У меня есть таблица, определенная в Hasura (Postgres) с использованием собственного uuidкак тип данных поля. Моя цель - создать мутацию обновления из Swift, но тип uuid не отображается неявно из Postgres через Hasura и Apollo в Swift. В документации Hasura указано, что тип uuid поддерживает использованиеString но когда я определяю переменные в мутации обновления как String!,

mutation RedeemMagicLinkCode($code: String!, $iosIdentifierForVendor: String!) {
  __typename
  update_entityname(where: {code: {_eq: $code}, iosIdentifierForVendor: {_is_null: true}}, _set: {iosIdentifierForVendor: $iosIdentifierForVendor}) {
    returning {
      id
    }
  }
}

Я получаю сообщение об ошибке на этапе сборки кода Apollo, которое Variable "$code" of type "String!" used in position expecting type "uuid".. Когда я изменю это наuuid!,


mutation RedeemMagicLinkCode($code: uuid!, $iosIdentifierForVendor: uuid!) {
  __typename
  update_en...

Шаг генерации кода завершается, создавая API.swift, но несколько экземпляров ошибки компиляции Use of undeclared type 'uuid' Raise и теперь возникают из-за сбоя во время компиляции API.swift, созданного Apollo.

/// API.swift
...
public let operationName = "RedeemMagicLinkCode"

  public var code: uuid
  public var iosIdentifierForVendor: uuid
...

Может ли кто-нибудь указать мне правильное направление, чтобы сообщить Swift, что такое uuid, или определить мой запрос, чтобы я мог передать String в качестве параметра через управляемую мутацию Apollo? Спасибо!

1 ответ

ОМ (Боже мой), возможно, мне придется покраснеть от того, насколько простым было это решение.

Я считал ошибку Use of undeclared type 'uuid' плюс документация о том, что Хасура примет String для этого специального скаляра...

/// API+typealias.swift
public typealias uuid = String

Я поместил указанный выше код псевдонима в файл сам по себе в папке, где находятся мои файлы GraphQL, и вуаля, он отлично сработал!

Я не в восторге от этого псевдонима общедоступного типа, который сейчас находится в глобальной области видимости, но я в восторге от работающей службы данных

Другие вопросы по тегам