veilletech.fr
23 août Feed du jour
#04 PRISMA Article

Prisma 8 : six commandes changent de nom

Le CLI ne bouge pas ; ce sont vos scripts qui bougent.

La cinquième release candidate de Prisma 8 renomme six commandes de l'ORM au profit des chemins du CLI unifié : migrate devient db migrate, ref set devient migration ref set. Rien ne change via le binaire prisma, mais les scripts qui pilotent le binaire du workspace avec l'ancienne grammaire cassent.

3 min de lecturevidéo 1:13
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Le breaking change
  3. Les correctifs qui comptent en production
  4. La nouveauté
  5. Comment s'y prendre
  6. À retenir

Ce qui se passe

Prisma 8.0.0-rc.5 est sortie. C'est une release candidate, donc une étape vers la version finale — mais elle contient une rupture qui mérite d'être vue avant la mise à jour, et trois correctifs qui touchent le fonctionnement en production.

Le breaking change

La famille de commandes de l'ORM, publiée par @prisma/orm-toolchain, expose désormais les six commandes déplacées sous leur orthographe unifiée, et abandonne la grammaire autonome retirée :

Avant Après
format contract format
migrate db migrate
ref list | set | delete migration ref list | set | delete
init orm init

Concrètement :

Terminal
# avant
prisma migrate --to production
prisma ref set staging 4cb4256

# après
prisma db migrate --to production
prisma migration ref set staging 4cb4256

Le point à comprendre, parce qu'il détermine si vous êtes concerné : à travers le CLI prisma unifié, rien ne bouge. Ces chemins y étaient déjà montés, c'est la famille de commandes qui s'aligne dessus. Les exemples d'aide et les messages de remédiation nomment désormais ces chemins, avec un placeholder {bin} au lieu d'un nom de binaire codé en dur.

Ceux qui cassent sont ailleurs :

Les correctifs qui comptent en production

Le runtime Postgres ne meurt plus sur une connexion coupée. C'est le plus important. Le runtime attache désormais un listener 'error' à chaque pool et chaque client qu'il crée ou reçoit. Une connexion inactive qui saute — redémarrage de la base, timeout du pooler, coupure réseau — ne fait plus tomber le processus en exception non capturée. Attention à la limite, elle est explicite dans les notes : les pools que votre propre code construit et utilise directement ont toujours besoin de leur propre listener.

aggregate() respecte enfin la chaîne qu'il termine. L'agrégation réduisait silencieusement sur toutes les lignes correspondantes, en ignorant take, skip, cursor, distinct et distinctOn. C'est le type de bug qui ne lève aucune erreur et donne simplement un mauvais chiffre — à vérifier dans votre code existant, un total juste peut le devenir davantage.

groupBy() ne perd plus sa pagination. La pagination appliquée avant le regroupement est désormais portée sur les lignes groupées au lieu d'être abandonnée, et GroupedCollection gagne take, skip et orderBy pour paginer les groupes eux-mêmes.

La nouveauté

Une requête brute avec spécification de lignes expose maintenant .returns, un enregistrement de références de colonnes typées. Une requête externe peut ainsi réutiliser la colonne déclarée d'une requête interne — l'agrégat d'un CTE, typiquement — au lieu de redéclarer son identifiant de codec. C'est une petite addition, mais elle supprime une duplication de type qui se désynchronise volontiers.

Le reste tient du polissage : le serveur de langage PSL ne plante plus quand une copie dupliquée de vscode-jsonrpc lève une erreur de connexion, les messages d'erreur du CLI interpolent le répertoire de migrations configuré au lieu de supposer le chemin par défaut, et les messages d'échec d'orm init ne citent plus de drapeaux retirés.

Comment s'y prendre

Rappel de prudence : il s'agit d'une release candidate, pas d'une version finale.

Source : Prisma — v8.0.0-rc.5

Fiche de veille rédigée à partir de l'article original. Le contenu ci-dessus est une synthèse personnelle, pas une reproduction.