ProGress com DenoGres

Jan 26 2023
O que você precisa saber sobre o DenoGres 4.0
Breve visão geral do Deno Deno é um tempo de execução de JavaScript, TypeScript e WebAssembly emergente rapidamente construído em Rust sobre o mecanismo V8 do Chrome, com padrões seguros, ferramentas integradas e importações de URL para gerenciamento de dependências. Ele foi apresentado pelo criador do Node, Ryan Dahl, no JSconf EU em 2018 durante sua famosa palestra intitulada “10 coisas que me arrependo sobre o Node.

Muito breve visão geral do Deno

O Deno é um tempo de execução de JavaScript, TypeScript e WebAssembly de rápido surgimento, construído em Rust sobre o mecanismo V8 do Chrome, com padrões seguros, ferramentas integradas e importações de URL para gerenciamento de dependências. Ele foi apresentado pelo criador do Node, Ryan Dahl, no JSconf EU em 2018 durante sua famosa palestra intitulada “ 10 coisas que me arrependo sobre o Node . ”

Por que ORMs?

Para quem não está familiarizado, ORM significa Object-Relational Mapper. "O que isso significa?" você pode perguntar. Simplificando, um ORM permite que os desenvolvedores trabalhem com bancos de dados relacionais por meio de objetos, em vez de strings de consulta. Alternar entre a programação orientada a objetos e a sintaxe declarativa do SQL pode se tornar tedioso e interromper o fluxo de trabalho durante o desenvolvimento. Os ORMs permitem que um desenvolvedor interaja com seu banco de dados como classes e instâncias. Para nosso benefício, há uma tonelada de ferramentas ORM por aí - infelizmente, as opções de código aberto projetadas com suporte TypeScript de primeira classe são limitadas e menos ainda são projetadas para o tempo de execução Deno.

DenoGres, Uma Solução

O DenoGres fornece um ORM TypeScript para desenvolvedores que trabalham com PostgreSQL no tempo de execução do Deno. A ferramenta funciona analisando o banco de dados de um usuário — incluindo seus rótulos, tipos e restrições — e transpondo cada tabela para uma classe que estende uma classe "Model" abstrata. Isso fornece a essas classes de tabela acesso a um conjunto de propriedades e métodos estáticos que manipulam com segurança a consulta do banco de dados sob o capô, enquanto o usuário experimenta as interações do banco de dados por meio do mecanismo familiar de OOP.

Para começar a trabalhar com DenoGres em seu projeto Deno, siga estes prompts de linha de comando:

Importe o DenoGres para o seu projeto:

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

denogres --init

Introspeccione seu banco de dados e crie modelos:

denogres --db-pull

denogres --gui

Recursos do DenoGres 4.0

O DenoGres 4.0 traz para a mesa uma ampla variedade de atualizações para o já poderoso ORM. Talvez o mais empolgante, ele adiciona uma função de transação e reversão para permitir que os usuários façam várias consultas em lote, mantendo a integridade da transação e a conformidade com o ACID.

Atomicidade, o primeiro princípio do acrônimo ACID, é essencialmente a regra de que, ao agrupar várias consultas ao banco de dados, todas as alterações devem ser confirmadas ou nenhuma. Isso protege tabelas importantes no banco de dados de alterações indesejadas em caso de falhas, problemas de conexão ou consultas malsucedidas.

Para usar transações no DenoGres, um usuário pode encadear .transaction() ao final de outros métodos de consulta para criar ou continuar uma transação. As transações podem ser usadas em vários modelos para consultas em lote. Isso permite garantir que tabelas importantes permaneçam sincronizadas quando a manipulação de uma tabela depende de outra. Para finalizar a transação, encadeie .endTransaction() na última consulta. Se alguma consulta na transação falhar, todas as consultas anteriores serão revertidas e essas tabelas retornarão ao seu estado original.

Aqui está um exemplo:

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

O DenoGres 4.0 também aumenta significativamente a cobertura do código para garantir uma experiência simplificada para usuários e desenvolvedores. Atenção rigorosa foi dada a qualquer caso de uso em potencial, o que significa que os usuários podem empregar o DenoGres para consultas mais sofisticadas sem se preocupar com a possibilidade de os dados caírem nas rachaduras.

O Futuro da DenoGres

Como o DenoGres é um produto de código aberto desenvolvido no OSLabs, a ferramenta está sendo aprimorada e há vários recursos a serem aguardados no futuro:

  • A funcionalidade SavePoint permitirá que os usuários tenham transações maiores que podem ser seccionadas e permitir a reversão parcial da transação para um ponto de salvamento. Isso é útil para implementar a recuperação de erros complexos.
  • Um método setter que pode ser anexado aos modelos quando uma associação é estabelecida com outro modelo, permitindo adições rápidas a linhas relacionadas.
  • Uma função manyToMany criará uma nova tabela de junção, permitindo que os usuários do ORM iniciem relacionamentos mais complexos entre as tabelas.

Contribuidores do DenoGres 4.0:

  • Raquel Cheman | Linkedin | GitHub
  • Jacob Martin | Linkedin | GitHub
  • Mia Gussen | Linkedin | GitHub
  • Alexandre Lin | Linkedin | GitHub