ЦСль:

Знакомство с Hasura.io (v2) ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ инструмСнтариСм. Знакомство с Hasura actions ΠΈ экосистСмой Π²ΠΎΠΊΡ€ΡƒΠ³ PGsql.

Π—Π°Π΄Π°Ρ‡Π°

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°ΠΏΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. Π― Ρ…ΠΎΡ‡Ρƒ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡΡƒΡ‰ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°
    • содСрТит ссылку Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ
    • ссылку Π½Π° Π°Π²Ρ‚ΠΎΡ€Π°
    • Π΄Π°Ρ‚Ρƒ добавлСния
    • статус ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
    • список Ρ‚Π΅Π³ΠΎΠ² связанных с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ (0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅)
    • ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ относится ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° (всСгда ΠΎΠ΄Π½Π°)
  • Ρ‚Π΅Π³
    • содСрТит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅Π³Π°
  • коллСкция
    • содСрТит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
    • содСрТит список Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²
  • Π°Π²Ρ‚ΠΎΡ€Ρ‹
    • содСрТит Π΅ΠΌΠ΅ΠΉΠ»
    • содСрТит Ρ€ΠΎΠ»ΡŒ доступа (Π°Π²Ρ‚ΠΎΡ€\Π°Π΄ΠΌΠΈΠ½)

АПИ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ 3 Π²ΠΈΠ΄Π° Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

  • Public: доступ Π±Π΅Π· Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, доступСн просмотр ΠΈ поиск всСх ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ
  • Author: Π°Π²Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ статус ΠΈ Ρ‚Π΅Π³ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² ΠΏΠΎΠ΄ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΅ΠΌΡƒ коллСкциях
  • Admin: ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

Actions Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° nodejs, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ fastify, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π²Π·ΡΡ‚ΡŒ. НСобходимыС кастомныС АПИ:

  • Авторизация: эндпоинт для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π° с Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ)
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ: ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° добавлСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠ΅ΠΉ (Π² Π²ΠΈΠ΄Π΅ вставки ссылки Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ) Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· actions. МоТно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π½Π° https://imgur.com/upload ΠΈ ΠΏΠΎΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ссылку ΡƒΠΆΠ΅ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ структуры Π±Π΄: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ запросы для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΏΠΎ Ρ‚Π΅Π³Ρƒ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π΅Π³Π°Ρ…, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… коллСкциях. Поиск Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ срСдствами PG ΠΈ Hasura. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Ρƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΅Π³ΠΎ собствСнныС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ участвуСт, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

Π­Ρ‚Π°ΠΏΡ‹:

  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° github
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ hasura
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ task, дальнСйшая Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π² этой Π²Π΅Ρ‚ΠΊΠ΅. Π‘ Π½Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ PR Π½Π° мастСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ Ρ€Π΅Π²ΡŒΡŽ.
  • Π’ Π²Π΅Ρ‚ΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ docker-compose.yaml для запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° локально с сидами.
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ: ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ стСйдТ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ hasura cloud + Neon (instruction) - ΠΎΠ±Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° бСсплатны Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ….

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ

  • минимальноС использованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
  • ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ использованиС TS (использованиС strict mode)
  • минимальноС количСство ΠΊΠΎΠ΄Π° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ
  • максимальноС использованиС возмоТностСй hasura ΠΈ postgresql (созданиС Π²ΡŒΡŽΡ… со слоТными запросами, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ constraints Π½Π° ΠΏΡ€Π°Π²Π° доступа).
  • ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ пСрформанс ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ DDL.
  • наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ содСрТит ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° pl-sql, поэтому привСтствуСтся любая дСмонстрация спСцифики pl-sql

АртСфакт

Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ PR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя скСлСт hasura app. Π’Π½ΡƒΡ‚Ρ€ΠΈ PR Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ + ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов для дСмонстрации Π² Ρ€ΠΈΠ΄ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.