ProGress avec DenoGres
Très bref aperçu de Deno
Deno est un environnement d'exécution JavaScript, TypeScript et WebAssembly en émergence rapide intégré à Rust au-dessus du moteur V8 de Chrome, avec des valeurs par défaut sécurisées, des outils intégrés et des importations d'URL pour la gestion des dépendances. Il a été présenté par le créateur de Node, Ryan Dahl, à la JSconf EU en 2018 lors de sa conférence intitulée " 10 choses que je regrette à propos de Node" . ”
Pourquoi les ORM ?
Pour ceux qui ne sont pas familiers, ORM signifie Object-Relational Mapper. "Qu'est-ce que cela signifie?" vous pourriez demander. En termes simples, un ORM permet aux développeurs de travailler avec des bases de données relationnelles via des objets, plutôt que des chaînes de requête. Basculer entre la programmation orientée objet et la syntaxe déclarative de SQL peut devenir fastidieux et interrompre le flux de travail pendant le développement. Les ORM permettent à un développeur d'interagir avec sa base de données en tant que classes et instances. À notre avantage, il existe une tonne d'outils ORM - malheureusement, les options open source conçues avec une prise en charge TypeScript de première classe sont limitées et encore moins sont conçues pour l'environnement d'exécution Deno.
DenoGres, une solution
DenoGres fournit un ORM TypeScript pour les développeurs travaillant avec PostgreSQL dans le runtime Deno. L'outil fonctionne en introspectant la base de données d'un utilisateur - y compris ses étiquettes, ses types et ses contraintes - et en transposant chaque table dans une classe qui étend une classe abstraite "Model". Cela donne à ces classes de table l'accès à un ensemble de propriétés et de méthodes statiques qui gèrent en toute sécurité l'interrogation de la base de données sous le capot, tandis qu'un utilisateur expérimente les interactions de la base de données via le mécanisme familier de la POO.
Pour commencer à travailler avec DenoGres dans votre projet Deno, suivez ces invites de ligne de commande :
Importez DenoGres dans votre projet :
deno install --allow-read --allow-write --allow-net --allow-env
--allow-run --name denogres https://deno.land/x/denogres/mod.ts
denogres --init
Introspectez votre base de données et créez des modèles :
denogres --db-pull
denogres --gui
Fonctionnalités de DenoGres 4.0
DenoGres 4.0 apporte à la table une grande variété de mises à jour de l'ORM déjà puissant. Peut-être le plus excitant, il ajoute une fonction de transaction et de restauration pour permettre aux utilisateurs de traiter plusieurs requêtes par lots, en maintenant l'intégrité des transactions et la conformité ACID.
L'atomicité, le premier principe de l'acronyme ACID, est essentiellement la règle selon laquelle lors du traitement par lots de plusieurs requêtes dans la base de données, soit toutes les modifications doivent être validées, soit aucune. Cela protège les tables importantes de la base de données contre les modifications indésirables en cas de plantages, de problèmes de connexion ou de requêtes infructueuses.
Pour utiliser des transactions dans DenoGres, un utilisateur peut enchaîner .transaction() à la fin d'autres méthodes de requête pour créer ou continuer une transaction. Les transactions peuvent être utilisées sur plusieurs modèles pour effectuer des requêtes par lots. Cela vous permet de vous assurer que les tables importantes restent synchronisées lorsque la manipulation d'une table repose sur une autre. Pour terminer la transaction, enchaînez .endTransaction() sur la dernière requête. Si une requête de la transaction échoue, toutes les requêtes précédentes seront annulées et ces tables reviendront à leur état d'origine.
Voici un exemple :
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 augmente également considérablement la couverture du code pour garantir une expérience simplifiée pour les utilisateurs et les développeurs. Une attention rigoureuse a été accordée à tout cas d'utilisation potentiel, ce qui signifie que les utilisateurs peuvent utiliser DenoGres pour des requêtes plus sophistiquées sans craindre que les données ne passent entre les mailles du filet.
L'avenir de DenoGres
Étant donné que DenoGres est un produit open source développé sous OSLabs, l'outil est constamment amélioré et il y a un certain nombre de fonctionnalités à espérer à l'avenir :
- La fonctionnalité SavePoint permettra aux utilisateurs d'avoir des transactions plus importantes qui peuvent être sectionnées et permettent une annulation partielle des transactions vers un point de sauvegarde. Ceci est utile pour implémenter une récupération d'erreur complexe.
- Une méthode de définition qui peut être ajoutée aux modèles lorsqu'une association est établie avec un autre modèle, permettant des ajouts rapides aux lignes associées.
- Une fonction manyToMany créera une nouvelle table de jonction, permettant aux utilisateurs de l'ORM d'initier des relations plus complexes entre les tables.
Contributeurs DenoGres 4.0 :
- Rachel Cheman | LinkedIn | GitHub
- Jacob Martin | LinkedIn | GitHub
- Mia Gussen | LinkedIn | GitHub
- Alexandre Lin | LinkedIn | GitHub
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































