ProGressi con DenoGres
Panoramica molto breve di Deno
Deno è un runtime JavaScript, TypeScript e WebAssembly in rapida crescita integrato in Rust sul motore V8 di Chrome, con impostazioni predefinite sicure, strumenti integrati e importazioni di URL per la gestione delle dipendenze. È stato introdotto dal creatore di Node, Ryan Dahl, al JSconf EU nel 2018 durante il suo famoso discorso intitolato " 10 cose di cui mi pento di Node ". "
Perché gli ORM?
Per coloro che non hanno familiarità, ORM è l'acronimo di Object-Relational Mapper. "Che cosa significa?" potresti chiedere. In poche parole, un ORM consente agli sviluppatori di lavorare con database relazionali tramite oggetti, piuttosto che stringhe di query. Il passaggio dalla programmazione orientata agli oggetti alla sintassi dichiarativa di SQL può diventare noioso e interrompere il flusso di lavoro durante lo sviluppo. Gli ORM consentono a uno sviluppatore di interagire con il proprio database come classi e istanze. A nostro vantaggio, ci sono un sacco di strumenti ORM là fuori - sfortunatamente, le opzioni open source progettate con il supporto TypeScript di prima classe sono limitate e ancora meno sono progettate per il runtime Deno.
DenoGres, una soluzione
DenoGres fornisce un ORM TypeScript per gli sviluppatori che lavorano con PostgreSQL nel runtime Deno. Lo strumento funziona analizzando il database di un utente, incluse etichette, tipi e vincoli, e trasponendo ogni tabella in una classe che estende una classe astratta "Modello". Ciò consente a queste classi di tabelle di accedere a una serie di proprietà e metodi statici che gestiscono in modo sicuro le query del database sotto il cofano, mentre un utente sperimenta le interazioni del database attraverso il meccanismo familiare di OOP.
Per iniziare a lavorare con DenoGres nel tuo progetto Deno, segui questi prompt della riga di comando:
Importa DenoGres nel tuo progetto:
deno install --allow-read --allow-write --allow-net --allow-env
--allow-run --name denogres https://deno.land/x/denogres/mod.ts
denogres --init
Analizza il tuo database e crea modelli:
denogres --db-pull
denogres --gui
Caratteristiche di DenoGres 4.0
DenoGres 4.0 porta sul tavolo un'ampia varietà di aggiornamenti al già potente ORM. Forse la cosa più interessante è che aggiunge una funzione di transazione e rollback per consentire agli utenti di raggruppare più query, mantenendo l'integrità della transazione e la conformità ACID.
L'atomicità, il primo principio dell'acronimo ACID, è essenzialmente la regola secondo cui quando si inviano in batch più query al database, è necessario eseguire il commit di tutte le modifiche o di nessuna. Ciò protegge le tabelle importanti nel database da modifiche indesiderate in caso di arresti anomali, problemi di connessione o query non riuscite.
Per utilizzare le transazioni in DenoGres, un utente può concatenare .transaction() alla fine di altri metodi di query per creare o continuare una transazione. Le transazioni possono essere utilizzate su diversi modelli per eseguire query in batch. Ciò consente di garantire che le tabelle importanti rimangano sincronizzate quando la manipolazione di una tabella si basa su un'altra. Per terminare la transazione, concatena .endTransaction() sull'ultima query. Se una qualsiasi query nella transazione ha esito negativo, verrà eseguito il rollback di tutte le query precedenti e le tabelle torneranno allo stato originale.
Ecco un esempio:
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 aumenta anche significativamente la copertura del codice per garantire un'esperienza ottimizzata sia per gli utenti che per gli sviluppatori. È stata prestata una rigorosa attenzione a qualsiasi potenziale caso d'uso, il che significa che gli utenti possono utilizzare DenoGres per query più sofisticate senza preoccuparsi che i dati cadano attraverso le fessure.
Il futuro di DenoGres
Poiché DenoGres è un prodotto open source sviluppato sotto OSLabs, lo strumento viene continuamente migliorato e ci sono una serie di funzionalità da aspettarsi in futuro:
- La funzionalità SavePoint consentirà agli utenti di avere transazioni più grandi che possono essere sezionate e consentire il rollback parziale della transazione a un punto di salvataggio. Ciò è utile per implementare il ripristino di errori complessi.
- Un metodo setter che può essere aggiunto ai modelli quando viene stabilita un'associazione con un altro modello, consentendo aggiunte rapide alle righe correlate.
- Una funzione manyToMany creerà una nuova tabella di giunzione, consentendo agli utenti dell'ORM di avviare relazioni più complesse tra le tabelle.
Collaboratori di DenoGres 4.0:
- Rachel Cheman | Linkedin | Git Hub
- Giacobbe Martin | Linkedin | Git Hub
- Mia Gussen | Linkedin | Git Hub
- Alessandro Lin | Linkedin | Git Hub

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































