Progreso con DenoGres

Jan 26 2023
Lo que necesitas saber sobre DenoGres 4.0
Breve descripción general de Deno Deno es un tiempo de ejecución de JavaScript, TypeScript y WebAssembly de rápida aparición integrado en Rust sobre el motor V8 de Chrome, con valores predeterminados seguros, herramientas integradas e importaciones de URL para la gestión de dependencias. Fue presentado por el creador de Node, Ryan Dahl, en la JSconf EU en 2018 durante su famosa charla titulada “10 cosas de las que me arrepiento de Node.

Breve resumen de Deno

Deno es un tiempo de ejecución de JavaScript, TypeScript y WebAssembly de rápida aparición integrado en Rust sobre el motor V8 de Chrome, con valores predeterminados seguros, herramientas integradas e importaciones de URL para la gestión de dependencias. Fue presentado por el creador de Node, Ryan Dahl, en la JSconf EU en 2018 durante su famosa charla titulada " 10 cosas de las que me arrepiento de Node ". ”

¿Por qué ORM?

Para aquellos que no están familiarizados, ORM significa Object-Relational Mapper. "¿Qué significa eso?" podrías preguntar. En pocas palabras, un ORM permite a los desarrolladores trabajar con bases de datos relacionales a través de objetos, en lugar de cadenas de consulta. Cambiar entre la programación orientada a objetos y la sintaxis declarativa de SQL puede volverse tedioso e interrumpir el flujo de trabajo durante el desarrollo. Los ORM permiten que un desarrollador interactúe con su base de datos como clases e instancias. Para nuestro beneficio, hay un montón de herramientas ORM disponibles; desafortunadamente, las opciones de código abierto que están diseñadas con soporte TypeScript de primera clase son limitadas y aún menos están diseñadas para el tiempo de ejecución de Deno.

DenoGres, Una Solución

DenoGres proporciona un ORM TypeScript para desarrolladores que trabajan con PostgreSQL en el tiempo de ejecución de Deno. La herramienta funciona mediante la introspección de la base de datos de un usuario, incluidas sus etiquetas, tipos y restricciones, y transpone cada tabla a una clase que amplía una clase de "Modelo" abstracto. Esto le da a estas clases de tablas acceso a un conjunto de propiedades y métodos estáticos que manejan de forma segura las consultas de la base de datos bajo el capó, mientras que un usuario experimenta las interacciones de la base de datos a través del mecanismo familiar de OOP.

Para comenzar a trabajar con DenoGres en su proyecto Deno, siga estas indicaciones de la línea de comandos:

Importe DenoGres a su proyecto:

deno install --allow-read --allow-write --allow-net --allow-env 
--allow-run --name denogres https://deno.land/x/denogres/mod.ts

denogres --init

Introspeccione su base de datos y cree modelos:

denogres --db-pull

denogres --gui

Características de DenoGres 4.0

DenoGres 4.0 trae a la mesa una amplia variedad de actualizaciones al ya poderoso ORM. Quizás lo más emocionante es que agrega una función de transacción y reversión para permitir a los usuarios realizar múltiples consultas por lotes, manteniendo la integridad de la transacción y el cumplimiento de ACID.

La atomicidad, el primer principio del acrónimo ACID, es esencialmente la regla de que cuando se procesan por lotes múltiples consultas a la base de datos, se deben confirmar todos los cambios o ninguno. Esto protege las tablas importantes en la base de datos de cambios no deseados en caso de bloqueos, problemas de conexión o consultas fallidas.

Para usar transacciones en DenoGres, un usuario puede encadenar .transaction() al final de otros métodos de consulta para crear o continuar una transacción. Las transacciones se pueden utilizar en varios modelos para realizar consultas por lotes. Esto le permite asegurarse de que las tablas importantes permanezcan sincronizadas cuando la manipulación de una tabla depende de otra. Para finalizar la transacción, encadene .endTransaction() en la última consulta. Si alguna consulta en la transacción falla, todas las consultas anteriores se revertirán y esas tablas volverán a su estado original.

Aquí hay un ejemplo:

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 también aumenta significativamente la cobertura del código para garantizar una experiencia optimizada tanto para los usuarios como para los desarrolladores. Se ha prestado una atención rigurosa a cualquier caso de uso potencial, lo que significa que los usuarios pueden emplear DenoGres para consultas más sofisticadas sin preocuparse de que los datos se pierdan.

El futuro de DenoGres

Dado que DenoGres es un producto de código abierto desarrollado bajo OSLabs, la herramienta se mejora constantemente y hay una serie de características que esperamos en el futuro:

  • La funcionalidad SavePoint permitirá a los usuarios tener transacciones más grandes que se pueden dividir en secciones y permitir la reversión parcial de transacciones a un punto de guardado. Esto es útil para implementar la recuperación de errores complejos.
  • Un método de establecimiento que se puede agregar a los modelos cuando se establece una asociación con otro modelo, lo que permite adiciones rápidas a filas relacionadas.
  • Una función manyToMany creará una nueva tabla de unión, lo que permitirá a los usuarios del ORM iniciar relaciones más complejas entre tablas.

Colaboradores de DenoGres 4.0:

  • Rachel Cheman | LinkedIn | GitHub
  • Jacob Martín | LinkedIn | GitHub
  • Mia Gussen | LinkedIn | GitHub
  • Alejandro Lin | LinkedIn | GitHub