Представляем неофициальный SDK Hasura iOS

Представляем неофициальный SDK Hasura iOS

9 мая 2022 г.

Что это?


[Hasura SDK] (https://github.com/relatedcode/HasuraSDK) — это набор инструментов для простой работы с серверами Hasura.


Требования


  • iOS 13.0+

  • Xcode 12.0+

  • Свифт 5.0+

Установка


CocoaPods


Чтобы использовать Hasura SDK с CocoaPods, укажите в вашем Podfile:


``ш


модуль «HasuraSDK»


Интерфейс GraphQL


Используя Hasura SDK, вы можете легко подключаться к одному или нескольким серверам Hasura. Эти подключения к серверу можно использовать как для запросов, мутаций, так и для подписок.


Подключиться к серверу


```быстрый


импортировать HasuraSDK


let link = "https://имя-вашего-сервера.hasura.app/v1/graphql"


пусть секрет = "EENWfDvVem9y9urmvyoLRK1YDYENISVnTskZOpcfv6"


пусть сервер = HServer (ссылка: ссылка, секрет: секрет)


Вышеупомянутый экземпляр сервера можно использовать для запросов и мутаций мгновенно. Чтобы иметь активную подписку, нам нужно сначала инициировать соединение WebSocket.


Соединение через веб-сокет


Для использования соединения WebSocket вам необходимо вызвать метод connect () перед инициацией подписки.


```быстрый


server.connect () { ошибка в


если (ошибка == ноль) {


// сделай что-нибудь


Соединение WebSocket может быть закрыто с помощью метода disconnect().


```быстрый


сервер.отключить()


Мутация


Когда у вас есть подключение к живому серверу, вы можете инициировать мутацию, например:


```быстрый


server.mutation (запрос, переменные) { результат, ошибка в


если (ошибка == ноль) {


// сделай что-нибудь


Тип параметра query должен быть String, содержащим допустимую мутацию для вашего сервера.


```быстрый


пусть запрос = """


мутация CreateObject($objectId: String, $text: String, $number: Int) {


createObject(данные: {objectId: $objectId, текст: $text, число: $number}) {


objectId, текст, число


Тип параметра variables должен быть [String: Any], содержащий все необходимые переменные для мутации.


```быстрый


let переменные: [String: Any] = ["objectId": "id111", "text": "abcdabcdabcd", "number": 123]


Запрос


Запуск запроса также довольно прост:


```быстрый


server.query(запрос, переменные) {результат, ошибка в


если (ошибка == ноль) {


// сделай что-нибудь


Где параметр query выглядит примерно так:


```быстрый


пусть запрос = """


запрос ObjectQuery($number: Int) {


listObjects (фильтр: {число: {gt: $ число}}) {


Предметы {


objectId, текст, число


И параметр variables что-то вроде:


```быстрый


пусть переменные: [Строка: Любая] = ["число": 123]


Подписка


Настройка подписки очень похожа на предыдущие реализации:


```быстрый


пусть subscribeId = server.subscription (запрос, переменные) { результат, ошибка в


если (ошибка == ноль) {


// сделай что-нибудь


Где параметр query будет выглядеть так:


```быстрый


пусть запрос = """


подписка ObjectSubscription($number: Int) {


subscribeObjects (фильтр: {число: {gt: $ число}}) {


Предметы {


objectId, текст, число


И параметр variables что-то вроде:


```быстрый


пусть переменные: [Строка: Любая] = ["число": 123]


Когда подписка вам больше не нужна, вы можете отказаться от нее, используя:


```быстрый


server.subscription(cancel: subscribeId) { ошибка в


если (ошибка == ноль) {


// сделай что-нибудь


Разбор результата


Тип результатов запроса, мутации и подписки — это словарь [String: Any]. Этот словарь имеет точно такой же контент, который сервер Hasura отправляет обратно в клиентское приложение.


Вы всегда должны знать, каким будет ваш результат (запрос, мутация или подписка), и самостоятельно заботиться о содержании словаря.


Существует несколько различных способов анализа словаря результатов и управления им.


Библиотека запросов


Если вы предпочитаете хранить все ваши мутации, запросы и подписки в общей библиотеке, вы должны добавить один (или несколько) файлов *.graphql в свой проект Xcode. Содержимое этих файлов должно быть примерно таким:


```график


мутация CreateObject($object: CreateObjectsInput!) {


createObjects (ввод: $ объект) {


objectId, text, number, double, boolean, createdAt, updatedAt


мутация UpdateObject($object: UpdateObjectsInput!) {


updateObjects (вход: $ объект) {


objectId, text, number, double, boolean, createdAt, updatedAt


запрос ObjectQuery($updatedAt: String) {


listObjects (фильтр: {updatedAt: {gt: $updatedAt}}) {


Предметы {


objectId, text, number, double, boolean, createdAt, updatedAt


подписка ObjectSubscription {


onUpdateObjects {


objectId, text, number, double, boolean, createdAt, updatedAt


Эти файлы *.graphql будут автоматически управляться Hasura SDK, поэтому всякий раз, когда вам нужен запрос, мутация или подписка в вашей кодовой базе, вы можете сделать это следующим образом:


```быстрый


пусть запрос = HSQuery["СоздатьОбъект"]


```быстрый


пусть запрос = HSQuery["ObjectQuery"]


```быстрый


пусть запрос = HSQuery["ObjectSubscription"]


Ограничения


Инструментарий Hasura SDK находится в начальной версии. Он функционален и может справиться с большинством рабочих нагрузок.


© Связанный код 2022 - Все права защищены



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE