Разработчики JavaScript выбирают SamQL-Jackson из-за безопасности типов

Обновлено: 7 июля, 2024

В последнее время я углубился в PostgreSQL для разработчиков JavaScript, и стало очевидно, что многие разработчики JavaScript предпочитают избегать написания кода на других языках. Они внедряют CSS в JavaScript, HTML в JSX, а теперь и SQL в JavaScript! Эта тенденция проявляется в том, как разработчики используют абстракции, такие как Supabase, который работает поверх PostgREST. Я предлагаю назвать этот синтаксис SamQL-Jackson.

Почему разработчики JavaScript избегают «чистого SQL»?

Разработчики JavaScript часто избегают «чистого SQL» по нескольким причинам:

  • У меня нет времени учить SQL.
  • Я не хочу учить SQL.
  • SQL не является типобезопасным.

1. «У меня нет времени учить SQL.»
Это субъективно и понятно. Если у вас нет времени на изучение новых вещей, это вполне допустимо.

2. «Я не хочу учить SQL.»
Этот пункт также субъективен. Изучение чего-то неинтересного может быть сложным, но SQL широко используется, что делает его ценным навыком.

3. «SQL не является типобезопасным.»
Рассматривая этот вопрос, Jiri Cincura объясняет, что SQL-команды являются типобезопасными на сервере, но не обязательно в вашем коде. Без определения типов нет предварительного просмотра типов в редакторе кода, что усложняет работу с ответами базы данных. Ручное создание этих типов может быть трудоемким и подверженным изменениям.

Разработчики JavaScript часто предпочитают SamQL-Jackson вместо «чистого SQL», потому что многие поставщики баз данных для JavaScript предлагают встроенную типобезопасность в своих клиентах и SDK. Однако синтаксис каждого поставщика отличается, что требует от разработчиков изучения нового синтаксиса при смене поставщика.

Например, простой SQL-запрос, выбирающий first_name, country и email из таблицы users, будет выглядеть по-разному в Supabase и Xata:

  • Supabase
  • View the code on Gist.
  • Xata
  • View the code on Gist.

Оба запроса отличаются, и смена поставщика означает изучение нового синтаксиса и переписывание запросов. Написание SQL обеспечивает совместимость с любым решением PostgreSQL, что ставит под сомнение аргументы о времени и интересе к изучению SQL.

Решения для типобезопасности при использовании «чистого SQL»

Для тех, кто выбирает «чистый SQL», но нуждается в типах, есть два решения: kysely-codegen и pg-to-ts. Оба инструмента генерируют типы TypeScript из вашей схема базы данных.

Как использовать kysely-codegen

kysely-codegen генерирует определения типов Kysely из вашей базы данных.

Установка Kysely

View the code on Gist.

Скрипт package.json для Kysely

Добавьте скрипт в ваш package.json для создания файла kysely-db.d.ts в корне вашего проекта.

View the code on Gist.

.env файл для Kysely

Добавьте переменную окружения DATABASE_URL в ваш .env файл.

View the code on Gist.

Генерация Kysely

Запустите скрипт для генерации

Опубликовано: 7 июля, 2024

ЕЩЕ СТАТЬИ ПО ДАННОЙ ТЕМЕ

PostgreSQL 17: Улучшения на платформе IBM Cloud

PostgreSQL 17 анонсирован на IBM Cloud, улучшая производительность, доступность и поддержку AI. Новая версия предлагает оптимизированное управление памятью, более быстрые запросы и улучшенную репликацию, обеспечивая поддержку современных решений.

Читать далее »

Поддержка Postgre SQL

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