ПроГресс с ДеноГрес
Очень краткий обзор Deno
Deno — быстро развивающаяся среда выполнения JavaScript, TypeScript и WebAssembly, созданная на Rust поверх движка Chrome V8, с безопасными настройками по умолчанию, встроенными инструментами и импортом URL-адресов для управления зависимостями. Он был представлен создателем Node Райаном Далом на JSconf EU в 2018 году во время его выступления под знаменитым названием « 10 вещей, о которых я сожалею о Node ». ”
Почему ОРМ?
Для тех, кто не знаком, ORM означает Object-Relational Mapper. "Что это значит?" Вы можете спросить. Проще говоря, ORM позволяет разработчикам работать с реляционными базами данных через объекты, а не через строки запросов. Переключение между объектно-ориентированным программированием и декларативным синтаксисом SQL может стать утомительным и нарушить рабочий процесс во время разработки. ORM позволяют разработчику взаимодействовать со своей базой данных как с классами и экземплярами. К нашему преимуществу, существует множество инструментов ORM — к сожалению, варианты с открытым исходным кодом, разработанные с первоклассной поддержкой TypeScript, ограничены, и еще меньше разработано для среды выполнения Deno.
ДеноГрес, решение
DenoGres предоставляет ORM TypeScript для разработчиков, работающих с PostgreSQL в среде выполнения Deno. Инструмент работает, анализируя базу данных пользователя, включая ее метки, типы и ограничения, и перенося каждую таблицу в класс, который расширяет абстрактный класс «Модель». Это дает этим классам таблиц доступ к набору статических свойств и методов, которые безопасно обрабатывают запросы к базе данных, в то время как пользователь взаимодействует с базой данных через знакомый механизм ООП.
Чтобы начать работу с DenoGres в вашем проекте Deno, следуйте этим подсказкам командной строки:
Импортируйте DenoGres в свой проект:
deno install --allow-read --allow-write --allow-net --allow-env
--allow-run --name denogres https://deno.land/x/denogres/mod.ts
denogres --init
Изучите свою базу данных и создайте модели:
denogres --db-pull
denogres --gui
Возможности ДеноГрес 4.0
DenoGres 4.0 предлагает множество обновлений и без того мощной ORM. Возможно, наиболее интересно то, что он добавляет функцию транзакций и отката, чтобы пользователи могли выполнять несколько запросов в пакетном режиме, сохраняя целостность транзакций и соответствие требованиям ACID.
Атомарность, первый принцип в аббревиатуре ACID, по сути является правилом, согласно которому при пакетной обработке нескольких запросов к базе данных должны быть зафиксированы либо все изменения, либо никакие. Это защищает важные таблицы в базе данных от нежелательных изменений в случае сбоев, проблем с подключением или неудачных запросов.
Чтобы использовать транзакции в DenoGres, пользователь может привязать .transaction() к концу других методов запроса, чтобы создать или продолжить транзакцию. Транзакции могут использоваться в нескольких моделях для пакетных запросов. Это позволяет обеспечить синхронизацию важных таблиц, когда манипулирование одной таблицей зависит от другой. Чтобы завершить транзакцию, привяжите .endTransaction() к последнему запросу. Если какой-либо запрос в транзакции завершится ошибкой, все предыдущие запросы будут отменены, и эти таблицы вернутся в исходное состояние.
Вот пример:
await Person.insert('name = Alex').transaction();
await Animal.delete().where('name = Spot').transaction();
await Person.insert('nae = Rachel').endTransaction();
// throws an error since 'nae' isn't a column, rolls back all previous queries and returns the error for the query that failed
DenoGres 4.0 также значительно расширяет охват кода, обеспечивая удобство работы как для пользователей, так и для разработчиков. Каждому потенциальному варианту использования уделялось пристальное внимание, а это означает, что пользователи могут использовать DenoGres для более сложных запросов, не беспокоясь о том, что данные будут потеряны.
Будущее ДеноГрес
Поскольку DenoGres — это продукт с открытым исходным кодом, разработанный в рамках OSLabs, этот инструмент постоянно совершенствуется, и в будущем появится ряд функций:
- Функциональность SavePoint позволит пользователям иметь более крупные транзакции, которые можно разделить на части, и разрешить частичный откат транзакций до точки сохранения. Это полезно для реализации комплексного восстановления после ошибок.
- Метод установки, который можно добавлять к моделям при установлении ассоциации с другой моделью, что позволяет быстро добавлять связанные строки.
- Функция manyToMany создаст новую соединительную таблицу, позволяя пользователям ORM инициировать более сложные отношения между таблицами.
Участники DenoGres 4.0:
- Рэйчел Чеман | Линкедин | Гитхаб
- Джейкоб Мартин | Линкедин | Гитхаб
- Миа Гуссен | Линкедин | Гитхаб
- Александр Лин | Линкедин | Гитхаб

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































