
Prisma ORM
Durée: 57m36s
Date de sortie: 19/10/2021
Un épisode "explore" dans lequel Alex nous présente l'ORM Prisma. Retrouvez toutes les notes et les liens de l'épisode sur cette page : https://double-slash.dev/podcasts/prisma-orm/
Bonjour à tous, bienvenue sur un nouvel épisode de Double Slash, donc je me présente pour
une fois que c'est d'habitude je ne le fais pas, je suis Patrick et comme d'habitude
nous sommes avec Alex. Salut Alex ! Salut Patrick, salut à tous !
Donc, ah oui petit message avant de vous l'oublier, dans le dernier épisode on avait
proposé des invitations figues si vous voulez essayer des commentaires et on a eu deux personnes
qui ont laissé des commentaires seulement Apple Podcast, ils sont très cool, on n'a pas accès aux
infos des gens qui ont laissé des commentaires donc on ne peut pas avoir vos emails donc envoyez-nous
un email les personnes qui ont laissé des commentaires pour vous envoyer une amie de toi.
Voilà c'est tout, merci. Et donc Alex, de quoi on parle aujourd'hui ?
On va parler de Prisma qui a vachement évolué depuis le temps qu'on regarde ça et je pense
que ça vaut le coup si consacrer un petit peu et d'en parler donc on va parler de Prisma.
Ok, alors Prisma, je ne sais pas trop ce que c'est, alors je me souviens il y a peut-être deux ans je crois.
J'avais vu une présentation d'un certain Alex sur Prisma justement, je crois que c'était il y a deux ans.
Sur Prisma et c'était la version 1 à l'époque ?
Ouais, alors aujourd'hui Prisma s'est devenu un ORM, c'est vraiment un ORM,
c'est la librairie qu'on va utiliser pour aller requêter notre base de données et
aller récupérer notre set de données. Sauf que là c'est la version 2 et la version 1,
comme tu l'as dit, c'était totalement autre chose. En fait dans la version 1, ils étaient
une sorte de générateur automatique de crudes, évidemment c'était tout de suite orienté sur
l'ADB mais en clair on venait définir notre schéma de données et Prisma en fait nous
générait le crud donc on pouvait appeler notre modèle. Exactement, ça venait générer l'API et là
ils sont passés au niveau vraiment API pour être un peu plus transverse et donc en fait
il y a grosse migration, c'est à dire que c'était plus du tout le même outil, c'était plus du
tout le même usage et donc c'est vraiment quelque chose d'autre totalement.
En fait je pense qu'ils ont fait ça pour être plus générique et pour être moins techno
orienté. Là pour le coup c'est vraiment beaucoup plus générique et on voit que Prisma est utilisé
sur Redwood, sur d'autres frameworks et donc eux ils veulent être la brique d'ORM pour les
frameworks out of the box. Et je pense que c'est plus leur stratégie et avant en fait ils étaient
en essayant, ils essayaient en mon avis plus d'être la référence en graffes QL pour générer
automatiquement une API basée sur le schéma de données et peut-être qu'ils étaient en concurrence
avec d'autres personnes, d'autres systèmes je pense à Soura ou des choses comme ça et peut-être
aussi une opportunité de faire autre chose et de devenir un petit peu plus générique pour
toucher plus de monde pour être moins en fait orienté sur un segment quoi. Là clairement aujourd'hui
ils sont beaucoup plus larges. Donc ce qui est intéressant c'est qu'ils ont tout réécrit,
aujourd'hui tout est en Rust donc c'est écrit en Rust par contre il faut pas être un dev Rust pour
l'utiliser, c'est du JavaScript et du Go donc les deux clients en fait qui vont consommer les
des data, ils sont écrits, il y a un client JS, TypeScript et un client en Go. Donc en fait c'est
vraiment un ORM avec la grosse particularité en fait où on va écrire un schéma et en fait il
faut voir ça un petit peu comme schéma Ascode ou DB Ascode ou je sais pas comment on pourrait
expliquer ça mais en fait dans un seul fichier on va centraliser toutes les informations et la
structure de base de données. En clair on va déclarer un modèle qu'on va appeler user à l'intérieur
de ce modèle là qui est en fait un objet en fait et on va déclarer ID, ID ça va être le type qu'on
va définir donc c'est un integer ou une string ou le choix qu'on a fait. Mon modèle user il a un
name de type string et ainsi de suite et en fait on va tout centraliser dans un seul fichier ce qui
fait qu'on va aussi déclarer les relations et lui il va automatiquement créer notre base de données
par rapport à ce schéma là. Donc en fait on a une seule source de vérité et on a plein de petites
commandes qui sont assez pratiques donc on va pouvoir pousser à la base de données on va pouvoir
récupérer des données c'est à dire j'ai une base de données déjà existante et en fait je vais
lancer mon client et je vais dire donne moi les infos de cette base le client lui il va aller
observer toutes les relations qu'il y a et il va créer ce schéma ce fichier de code avec toutes
cette tous tous les modèles qui sont imbriqués et qui sont déjà connectés les uns avec les autres
avec toutes les relations donc on va retrouver toutes les on va dire les choses les plus basiques qu'on
a dans une base de données les clés primaires le type de champ toutes les contraintes s'il y a du
uniqueness dessus s'il faut que ça soit un certain pattern de de string ou des choses comme ça là
on va directement pouvoir le rentrer dans ce fichier là qui est en fait le schéma de prisma.
Ok donc résumons déjà ce que tu viens de dire donc c'est un EURM donc en gros je vais l'utiliser
moi je fais un bac par exemple pour faire une API par exemple et donc je vais installer
prisma qui va faire la glue en fait entre ma base de données et les data que j'aurai besoin en fait
et en fait c'est quoi c'est du graph QL pour interroger les prisma c'est ça ?
Non justement en fait dans la v1 en fait ils utilisent du graph QL mais si moi je vais faire une API REST
je vais pouvoir utiliser prisma pour aller requetter mes données mais je vais récupérer mes données
après mes données mon API ça peut être du REST ou du graph QL j'en fais ce que je veux c'est vraiment
en fait c'est vraiment l'équivalent d'un EURM donc c'est mon bac qui va connecter avec ma base de
données. En clair si vous êtes rubiiste ça serait l'équivalent d'active record sur rubian rails
pour les gens qui font du plus du nod mangos si vous faites du mango DB ou SQL ou PG voilà
c'est juste je veux style faire get user il va me tirer absolument et en fait
ils ont vraiment coupé tous les pommes avec la connexion et la création en fait d'une API
graph QL c'est pour ça que c'est vraiment totalement autre chose après si toi tu veux faire une API
graph QL très bien tu peux requetter tes données avec prisma et après tu exposes tes données via
ton API sur graph QL ou du REST mais ça c'est plus leur problème donc eux ce qu'ils vont
mettre en avant c'est qu'ils vont pouvoir se connecter à différentes DB et aujourd'hui il ya du
Postgres, du SQL, du SQLite, du SQL server de chez Microsoft et du mango DB donc en clair
on va pouvoir utiliser le même ORM alors peut-être différentes instances, différentes instances
du client pour aller se connecter mais en tout cas on pourra utiliser le même ORM avec toutes ces
DB là. Tu peux utiliser plusieurs DB en même temps, j'ai une base de ma SQL je peux être
tapé dedans avec deux en même temps sur le même projet par exemple. Alors clairement en fait moi
je suis en train de bosser pour un client qui est en train de faire une migration de techno et
bah clairement je vais avoir deux clients, je vais avoir un client qui est en Postgres et un client
qui est en SQL server je vais requêter les infos sur l'un, je vais requêter les infos sur l'autre
et je fais ma sauce et j'expose à mon API. Ça c'est possible tu peux utiliser plusieurs clients
mais chaque client en fait va avoir une base de données donc après tu peux installer plusieurs
clients si vraiment tu as besoin donc ça c'est possible. Tu peux avoir différentes bases qui vont
gérer différentes données en fonction de plus ou moins du mango DB si tu as besoin de trucs rapides
ou je sais pas enfin bref il faut imaginer plein de... En fait tu parlais de Chisema donc c'est
toi qui écrit ton Chisema. Tu fais ton Chisema à la mano. J'imagine tu as une commande pour dire
crée-moi les tables qui va te créer les tables c'est ça ? Alors en fait tu vas pour ceux qui
utilisent soit VS Code soit Veeam soit JetBrains ou whatever ils ont fait une petite extension où
en fait ils ont une sorte de formatage de fichier et tu vas avoir en fait une sorte d'auto complétion
pour créer tes modèles avec tu vas retrouver toutes les directives toutes les specs donc pour créer
des relations des one-one des one-many des many-to-many si tu as DB elle gère les enumes
ou les choses comme ça tu vas pouvoir en fait intégrer et un peu à la TypeScript tu vas
avoir une auto complétion donc ça c'est assez facile pour la prise en main quoi il suffit d'installer
l'extension et on crée notre fichier prisma notre notre notre fichier point prisma et puis c'est parti
à l'intérieur on va remplir toutes toutes les données qu'on a besoin et à la fin en fait
bah dans notre terminal on va déclarer donc on a une petite commande npx prisma et après là on va
avoir soit push soit pool soit soit seed introspect même si un introspect n'existe plus maintenant
ils ont ils ont viré ces pools mais on va avoir en fait une CLI qui va nous permettre de gérer et de
faire la connexion entre ce qu'on a écrit dans notre code et et et la DB et le gros problème
qu'on pouvait avoir aussi bah c'est que en fait quand on fait des migrations sur sur sur des DB
si on fait on va on va prendre l'exemple classique de quelque chose en SQL en fait on va avoir des
migrations up down c'est à dire ok je renomme ce champ là et je le name je l'appelle en fait sur
un truc classique voilà en fait on va quand on va modifier le le fichier source parce que c'est
l'objectif en fait c'est d'avoir qu'une seule source de vérité en fait on va pouvoir lancer
en fait ça va écrire du SQL pour nous ça va analyser la différence ça va écrire le SQL
pour nous et après on va lancer le SQL sur sur la DB on va exécuter en fait ce SQL donc c'était
un peu toute la zone de flou qui avait et c'est pour ça que je pense que maintenant ils arrivent à
une certaine maturité c'est que quand ils sont quand ils ont fait la migration de 1 à 2 ils ont
introduit plein de nouvelles outils pour faire des migrations pour pour tipez tout ça et donc
c'était un peu le ouais là vous brisez beaucoup de choses et en fait aujourd'hui il y a une maturité
où il y a tout un écosystème ils ont vraiment pallié à tout ça c'est à dire ok on veut tout
centraliser sur un seul fichier pour que ça soit plus clair on peut le versionner on peut le partager
on peut faire tout ce qu'on veut mais on veut garder de la flexibilité parce que à chaque fois
qu'on veut qu'on fait une mutation bah avec les DB en les bases de données en dev ou en stagine ou
en prod bah voilà il faut qu'on puisse avoir un niveau de granularité hyper fin pour pas que ça
pète donc on va écrire nos migrations comme ça on va pouvoir faire nos migrations au fur et à
mesure et c'est là où c'est c'est intéressant ok et je m'imagine que ça marche aussi dans l'autre
sens tu as une base de données qui existent et tu peux créer ton fichier pour un prisma à partir
de cette base en fait exactement c'est la c'est la possibilité de faire du pool où en fait là je
viens en fait récupérer récupérer les infos et lui il te crée le schéma après il y a tout un
écosystème qui s'est mis en place aussi où on va pouvoir auto générer sur sur la base de ce
fichier là de ce fichier prisma on va pouvoir générer des diagrammes je peux commencer à
se rappeler les diagrammes herd où je sais plus si c'est herd ou en fait un truc très très visuel
voilà un truc visuel il ya des voilà il ya toute une une communauté qui s'est mis autour de prisma
qui a créé plein de petites extensions qui sont assez assez sympa pour faciliter la lecture et
donc ça c'est c'est plutôt pas mal et donc il ya en fait il ya chez prisma il y a on va dire il ya
quatre grosses briques la quatrième est vraiment toute nouvelle mais il y a vraiment le client donc
c'est lui qui va écrire et faire la connexion avec avec la db il ya tout ce qui est de la partie
migrate qui en fait bah lui va faire exécuter j'ai auto générer exécuter et lancer toutes les
migrations en SQL ou sur la db si on est sur d'autres d'autres types de db mais en clair c'est
toutes les modifications à l'intérieur de la structure de notre base de données ça c'est
c'est la partie migrate et donc on va retrouver la même chose que sur des migrations up down ok
j'enlève ça je supprime tout ils ont un troisième outil qui s'appelle qui s'appelle studio et
en fait là on va lancer une commande d'un autre navigateur en clair c'est un client de db
classique pour aller visualiser notre notre base de données quoi donc on va voir un peu
pas le php miadmin mais quasiment pour ceux qui connaissent mais on va avoir un truc comme ça
où visuellement on va avoir toutes nos lignes avec toutes nos colonnes on va pouvoir visualiser
c'est que visualiser aussi éditer le datatrain de dans tu peux modifier ouais tu peux modifier
oui tu peux modifier et c'est bas c'est aussi l'avantage c'est que t'as une interface on va
dire un petit peu plus mais c'est comme le maillan min tu as les tables tu vas tu vas éditer
ta truc ou c'est comme graphique non c'est vraiment ouais tu as les tables tu dis non non
c'est pas c'est pas du tout comme graphique elle pour ceux qui connaissent non non c'est pas c'est
là pour le coup c'est c'est du visuel ça ressemble plus à un gros excel designé quoi
donc c'est vrai et après on va on va aller chercher nos modèles on va pouvoir voir toutes
les tables il ya il ya plein de de clients de base de données de logiciels qu'on utilise là en
fait on y a pas besoin de logiciels ça c'est cool on va directement dans notre navigateur et
depuis la ligne de commande en fait on va taper prisma studio et puis on lui dit sur quel port il
veut l'ouvrir et puis c'est parti ça c'est cool parce que pour pense gré ou ce que là il t'a dit
comme ça des fois tu galère un peu trouver un client ou même est-ce que le sérieur je sais pas
je n'en ai jamais fait mais je sais pas si un client ne serait ce que sur mac donc c'est en fait là
les trois que tu as dit la client migrailles tes studios et c'est ensemble ou c'est les briques que
tu installes séparément style je veux pas studio alors tu peux en fait pas trop le choix d'accord
c'est en fait non c'est pas c'est pas des briques que tu que tu choisis d'installer ou de pas installer
c'est à dire au moment où toi tu installes en fait ton studio ça va être avec ta cli en fait
donc pour le coup c'est assez neutre et après ton client alors si tu fais un petit projet il ya
grande chance que ok tu vas définir ton projet puis après ça va pas trop évoluer par contre
si tu es sur un projet un petit peu plus d'envergure bah ton projet il évolue donc tu rajoutes des
champs tu t'en supprimes tu les renombes tu fais tu tu tu tu crées une nouvelle relation et donc
bah ton assistant on va dire de migration db en fait il va quand même être quasiment indispensable
par contre pour toi en fait il est totalement transparent tu n'as pas besoin de l'installer
en fait tu vas le faire au départ dans ton projet où tu vas installer prisma et après en fait toi
avec ta cli tu vas lancer en fait les les requêtes et les actions et ça va te générer des
fichiers SQL que tu peux relire que tu peux modifier si tu veux rajouter des infos et après tu vas
exécuter ces fichiers donc en fait tout est vraiment séquencé de telle manière que tu
puisses avoir un contrôle de granularité assez assez important pour bah pour pas être
tributaire de ok c'est une autre manière de faire si vous en fait ça c'est pas binaire en mode on off
quoi c'est soit tu utilises et tu utilises leur manière à faire de faire ou bah toi t'as pas le choix
tu es obligé de rien inventer et donc là en fait tu fais comme tu veux donc c'est assez assez souple
et je pense que ça arrive à une certaine maturité en fait ils sont assez actifs sur le sur les sur
les features ils écoutent quand même pas mal de monde et en fait ils rajoutent au fur et à mesure des
nouvelles implementations là je pense à SQL server avant c'était en mode beta maintenant ils sont
passés en release en c'est supporté de manière de manière officielle et après en fait bah ils vont
rajouter des petites des petites modifications comme par exemple le casquette dillite si j'ai des champs si
j'ai des tables qui sont les relations un briquet bah si si je supprime je peux faire le choix de
de lancer le casquette dillite ou pas voilà ils vont rajouter plein de de de de fonctionnalité et
c'est pour ça que je pense que ça vaut le coup maintenant en fait de de de s'y pencher parce
qu'il ya un stade de maturité qui est qui est intéressant avant c'était vraiment de l'exploration
de l'expérimentation pour le coup le switch v1 v2 alors j'ai pas d'infos en interne mais je pense
qu'ils ont dû ouais ils ont ils ont perdu du monde quoi ils ont perdu du monde parce que c'est plus du
tout le même produit c'est plus du tout le même état d'esprit par contre maintenant ouais ils sont
un petit peu plus en mode stabilisé quoi et qui enfin il y a des gens qui sont en fait comment
ça se passe c'est une boîte qui gère prisma il ya des gars qui sont dédiés qui travaillent que sur
ça comment il y a une argent tu sais ou alors ça je ne sais pas j'ai pas trop l'info enfin je n'ai pas
d'infos sur comment ils gagnent ils gagnent l'envie après je sais que il ya prisma maintenant est
utilisé dans le framework redwood c'est l'orm par défaut donc je pense que leur objectif c'est
vraiment devenir un orm de référence pour pour différents frameworks après est ce qui signe des
deals je sais clairement je ne pourrais pas je ne pourrais pas avancer marquante ce qui se profile
quand même c'est que là ils ont sorti un nouveau service qui s'appelle data platform l'idée c'est
bas c'est comme le ça serait un peu comme le studio à l'intérieur de notre navigateur mais c'est
dans la version cloud en clair on va pouvoir gérer les accès de toute notre équipe on va pouvoir
brancher notre db visualiser notre db sur le cloud et d'affecter des droits et faire gérer en fait
notre équipe directement depuis le service cloud et un truc qui est sympa et pour le coup ça se
rapproche de pour ceux qui font du graphique de graphique et on va avoir une interface graphique
on va pouvoir lancer des queries de test pour voir et donc là ça c'est intéressant et moi ce que
je vois surtout c'est que bah potentiellement pour des entreprises ils vont sortir une version
entreprise ce qui est un peu le modèle de toutes les boîtes qui font de l'open source ils ont une
partie communitie qui est accessible à tout le monde et une partie enterprise où ils mettent des
services à disponibilité des services un peu plus premium avec une meilleure qualité suivi
des du service vraiment pure et donc les entreprises sont prêts à payer après est-ce que c'est
viable est-ce que c'est ça fait partie de leur stratégie je sais pas je suis pas en interne
chez eux donc je pourrais pas je pourrais pas parler mais en tout cas c'est c'est typiquement des
services qui pourraient bien si prêter à une version entreprise quoi et mais attend tu parles
d'un peu de forme c'est juste la gestion de data il n'y a pas de base nous a disposition c'est toi qui
doit connecter une base que tu as pris absolument aujourd'hui aujourd'hui c'est toi qui c'est toi
qui host ta base là où tu veux si toi tu veux mettre du post gré héberge exactement héberge
chez chez ton local ou chez recours chez jitalocéan ou chez a double vs bah tu connectes tu connectes
directement c'est vraiment l'outil pour pour gérer et administrer ta base alors peut-être que
c'est leur modèle de main de venir faire de l'hébergement de database peut-être mais en tout
cas ça je n'en suis pas et c'est pas l'objectif premier de prisma quoi et à la main de gérer
toute la connexion oui non c'est je me souviens à une époque parce que je me demandais tu vois
je reviens sur comment il y a une grande argent mais je me souviens qu'à une époque ils avaient fait des
grosses levées de fonds il me semble tu avais parlé après ils ont fait une grosse grosse levée de fonds
mais c'est peut-être à un moment où ils ont fait cette levée de fonds qui se sont repartis qui se sont
réorientés sur la v2 mais c'est ça en fait parce que peut-être qu'ils se sont rendus compte sans doute
que là sur le secteur où là où ils étaient avant potentiellement ils étaient trop sur une niche
et là le le fait d'ouvrir et d'être quelque chose de beaucoup plus large et potentiel leur client
potentiel en fait est beaucoup beaucoup plus gros et plus large donc avant ils étaient hyper
spécifiques sur du gs du graphql et ont généré une api automatique basée sur ton schéma bah peut-être
que ça il y a c'était trop niché et donc il voulait faire autre chose clairement j'en sais rien quoi
mais mais tu vois pour revenir en fait tu sens quand même dans dans leur produit qu'il y a quand
même un héritage de graphql un exemple typique de de de data plateforme bah cette interface où
tu peux tester tes tes tes queries bah clairement ça ressemble beaucoup à du graphiql de la même
manière le le schéma point prisma donc le schéma de code en fait vraiment le le fichier texte où
à l'intérieur on va venir déclarer nos nos modèles et les interactions exactement c'est c'est
très très proche en fait d'un d'un schéma graphql pour ceux qui ont l'habitude de voir des
schémas graphql bah en fait on comprend tout de suite ce que ça veut dire quoi donc mais par
contre on n'a pas à gérer toutes ces interfaces et et ces types tout c'est vraiment là un niveau
d'abstraction un petit peu plus au-dessus et ce qui nous donne en fait de la flexibilité pour ceux
qui veulent en fait faire du reste bah ils vont pouvoir faire du reste ils veulent faire du graphql
ils font faire du graphql mais ils sont beaucoup moins typés donc ils ouvrent ils ouvrent la porte
et comme tout est dans un seul fichier il n'y a qu'une seule source de vérité comme j'expliquais
avant il ya tout un écosystème qui s'est mis en place et aujourd'hui tu veux générer des une
api graphql basé sur ton schéma prisma bah c'est possible parce qu'en fait il ya un petit il ya des
des petits utilitaires qui vont te faire ça je pense à nexus qui qui qui qui va faire ça
bah on va retrouver en fait cet héritage et cette centralisation des données et donc
bah ça transpire quand même quoi ils ont un héritage et je pense qu'ils ont capitalisé
là dessus après est ce que c'est pertinent ça moi j'en sais rien du tout moi ce que je sais c'est
que utilisant du graphql quasiment tout le temps maintenant bah je me suis tout de suite retrouvé
et la manière dont je vais appeler mes données donc quand je suis vraiment dans mon dans mon
backend et j'ai besoin d'appeler les users bah je vais appeler mon client prisma prisma point
bah user là je vais faire find all ok je veux tout après je vais pouvoir sélect j'en veux
qu'un mais je vais sélect ou air le param ce que je lui ai donné donc en fait je vais retrouver
une façon de requetter les données qui est alors pour les puristes du SQL ils vont dire non
non mais c'est pas bien tout pour pour les autres je trouve ça hyper facile à lire facile à
relire surtout et la base la doc est vraiment super bien faite c'est facile ça se le dit bien il
a toutes les infos dans la doc ils essayent vraiment de dès qu'il y a une nouvelle fonctionnalité
ou quelque chose bam ils viennent tout de suite la documenter pour pour venir justement bah qu'on
puisse l'utiliser en fait ça sert à rien d'avec eux ils se cassent le cul à faire des fonctionnalités
et que personne soit au courant donc donc la doc est vraiment bien faite bah comme beaucoup
il ya des conférences il ya une chaîne youtube il ya des développeurs advocate qui font qui
font le taf et qui qui qui m'ont essayé de promouvoir la techno après est ce qu'on est dans la hype
tout ça personnellement je pense pas je pense que ça vaut le coup d'essayer de voir si ça nous va
en deux deux en fait on peut créer quelque chose une petite et est ce que l'aide par exemple est
parfait pour ça parce que bah on n'a pas besoin de se prendre la tête à configurer une DB c'est
un fichier et puis terminer et on va pouvoir interagir on va pouvoir bah créer nos modèles
voir comment ça marche donc ça c'est assez facile et puis après on va pouvoir bah requêter
nos données comment on fait comment les structures on peut faire du select on peut faire du search à
l'intérieur des des données on peut faire du full text search aussi donc il ya voilà c'est pour ça
ça vaut le coup de non mais je pense pas que ce soit enfin là tout ce que tu décris en fait c'est
ce qu'on retrouve dans beaucoup d'or m sur d'autres langages un petit php symphonie avec doctrine
qui fait à peu près tout ce que tu as dit depuis bien longtemps marise sur comment ça fait enfin
voilà c'est vrai que sur notre en fait perso je trouve que sur notre il y avait déjà des or m mais
c'était un peu c'était pas génial et une truc qui était un peu bancage et là non prisma
elle est vraiment beaucoup plus robuste et ils ont pris tout ce qui base plus qui fonctionne bien dans
tous les or m des autres langages et ils l'ont amené à nod et puis enfin js et puis à go donc non
ça me semble un bon produit un peu d'êtrement après après c'est tu vois c'est je sais plus du tout
sur quel sur quel techno on parlait mais ah bah je crois que c'était quand on avait parlé de ruste
où justement on a vu que c'est un langage qui était nouveau là bah prisma c'est pareil en
fait il décide de de de de refaire un or m par contre ils ont l'avantage en fait et la
chance on va on va dire d'être les derniers donc en fait ils peuvent déjà analyser ce qui
a marché ce qui marchait ce qui n'a pas marché et donc construire quelque chose qui répond et qui
palit en fait à tous les problèmes que les autres que les concurrents ont été on s'en confrontait
quoi et et l'avantage bas c'est que vu qu'ils sont neuf ils peuvent écrire comme ils veulent
parce qu'aujourd'hui doctrine ou actives record ou c'est quoi que sais-je mais en fait ils ont un
héritage et ils sont ils sont ils sont déjà vachement en place donc changer leur manière de
faire et de leur changer leur approche ils peuvent plus c'est fini parce qu'il y a trop de gens qui
sont qui l'utilisent qu'on construit leur archi dessus donc bah c'est difficilement ils peuvent
plus bouger quoi donc c'est vrai que la primeur à la nouveauté c'était l'éternel question
est-ce que ouais est-ce que c'est nouveau juste parce que c'est nouveau c'est bien ou ça amène
une réelle plus value quoi question niveau performance est-ce que est-ce que ça dépote
alors j'ai pas fait de test j'ai pas benchmarker après clairement je pense que c'est comme tout
si tu fais du nesté à l'intérieur nesté nesté trois fois ou quatre fois cinq fois là c'est sûr
que bah tes perf vont vont être pourris après il me semble que eux ils te limitent sur ton
ta profondeur donc tu pourras pas non plus aller jouer bas dans des soucis de performance quoi
clairement est-ce qu'ils sont compétitifs j'ai pas les compétences pour pour juger de ça et donc
je pourrais pas dire si ils sont vraiment performants par contre en tout cas moi j'ai pas eu quand je
l'ai utilisé j'ai pas eu la sensation putain c'est lent quoi c'est lent ça répond donc pour le coup
pour le coup c'est j'ai pas j'ai pas eu ce sentiment là après quand tu vas faire des joints des
choses un petit peu plus complexes où tu vas ok tu me donnes les users et tu me donnes les trois
postes avec les quatre commentaires est-ce que ça ça va pas ça va pas ralentir après il faut être
malin aussi sur sur les sur la manière dont tu vas requêter les données quoi si tu fais le bois
ouais c'est sûr que que je pense que ça ça va être lent mais c'est surtout la base de données qui est
que répond bien en quoi c'est parce que c'est juste une glu entre les deux moi bien sûr c'est juste le
moyen en fait si on résume prisma c'est vraiment l'outil qui te permet de requêter et de faire
toutes les modifications et de demander les données avec ta base de données quoi c'est alors leur
leur baseline c'est vraiment au rm une next generation quoi ok bon bah donc en nod en type
script enfin en js et en type script et en go et ça supporte post gréma SQL SQL server
ok SQL SQLite mango DB et alors une autre question ouais bien sûr bien sûr
de développeur expérience tu trouves ça facile à installer je veux dire combien de temps il faut
par exemple là je vais combien de temps il faudrait pour créer un petit projet simple
avec du prisma est-ce que ça va vite parce qu'en une heure j'ai déjà un truc qui tourne
ah oui c'est hyper simple de mettre en place ouais oui ouais c'est très très simple et et pour le
coup moi je dirais que vraiment la développeur expérience est vraiment sympa parce que c'est écrit
en en en en type script du coup je vais avoir mon auto complétion j'installe mon petit excension
dans mon navigateur j'ai tout qui va bien et donc je vais faire mon wear égale title qui
contient tel mot qui commence par donc equal qui est plus grand que plus petit que tout ça en
fait ça va être auto généré donc c'est enfin c'est super c'est super facile par contre les
mecs ils disent non mais moi je veux du SQL il y a que ça de vrai tout ce qui peut non non non
mais attend ce qui est ce qui peut aussi arriver c'est que il ya une requête qui est hyper hyper
spécifique et donc bah celle ci peut-être que l'OM ne le permet pas en fait eux ils ont dit
pas de problème tu veux faire du SQL bah tu peux t'as une fonction qui permet de lancer du SQL
Vlogream ocu tu par spice t'acquetry SQL et tu l'exécute etfind le corne lace égale
seraomaticie squats francESWED qui par est mais pas dans les agility escoe et tu peux pour l'addit
un fait du Hyundai aussi genre des aging des effets il vous est rep 지�bles
On a déjà l'habitude de voir ça si ton serveur est bien fait,
mais là, en fait, tu vas faire ça du côté ORM.
Donc, ok, c'est cool.
C'est des trucs qu'on avait déjà avant,
mais là, ça va être hyper facile à implémenter.
Pareil pour ton système de pagination,
tu vas pouvoir le mettre en place.
Et moi, ce qui m'intéresse,
c'est que justement,
tu n'es pas limité sur du GraphQL ou du REST.
Voilà, c'est toi qui choisis.
En fait, c'est la manière dont tu vas requetter tes données.
Et après, tu veux l'exposer via X,
tu fais X,
tu veux faire que de l'express, tu fais du express.
Tu veux mettre ton ORM directement dans ton X,
dans NEST, JS, dans les frameworks,
nods type express, API, Fastify ou que sais-je,
là, tu peux directement le connecter.
Donc, non, clairement, la développeur expérience,
elle est plutôt facile.
C'est vraiment facile à prendre en main.
Et alors, que les choses soient claires,
moi, je ne suis pas un expert en DB.
Donc, mais par contre,
le peu d'expérience que j'ai,
je veux quand même avoir un niveau de granularité
pour lancer mes migrations,
et surtout de savoir qu'est-ce qui se passe,
qu'est-ce qui s'est passé.
Voilà, ça me paraît important.
Par contre, me les taper à la main.
Ouais, je ne suis pas super fan, quoi.
Donc, là, en fait, d'avoir une seule source de données,
donc, cette espèce de fichier,
enfin, non, ce fichier point Prisma,
dans lequel, en fait, je vais avoir mes objets,
modèle user, modèle post, modèle, machin.
Bah, au moment où je vais rajouter des lignes,
lui, il fait le mismatch pour moi,
il regarde et il génère les migrations
automatiquement pour moi.
Moi, ça, ça me va bien.
Ça me va vraiment bien.
Franchement, honnêtement, je ne sais pas si...
Enfin, je crois vraiment qu'il y a des gens encore
qui tapent des requêtes à la main.
Ouais, c'est possible.
Là, avec tous les frémaux,
avec lesquels on est maintenant,
je vois que le mec...
Alors, c'est vraiment, il débute et il fait des trucs.
Qui tape des requêtes, des crédits,
des miscules à la main.
Par exemple, une...
Une quarie super particulière,
où tu veux des données croisées,
tu veux faire des joins dans tous les sens.
Bah, ouais, peut-être que...
Tu veux avoir besoin de ce niveau de granularité
pour avoir un contrôle parfait.
T'as peut-être un gars dans ton équipe,
c'est une grosse brute en SQL,
et tu vas aller chercher de la performance taquée,
parce que tu as des requêtes particulières.
Bah ouais, en fait, tu vas toujours pouvoir le faire,
parce que tu peux exécuter du SQL au cours, quoi.
Et par contre, pour toutes tes activités,
on va dire, classiques,
de rajouter un champ, name, string...
Bon, voilà, et ils ont fait un espèce de langage
qui est hyper facile et hyper intuitif, quoi.
Model user, c'est un objet ID,
qui est de type intager,
et je vais lui dire,
ID, en fait, ça va être mon identifiant,
et donc, on va dire, ma clé primaire,
et je vais lui dire, défautes,
c'est auto-incrémenter.
C'est une fonction d'auto-incrémente.
Et ça, visuellement, je vais le lire,
ça passe tout seul, quoi.
Après, j'ai un email de type string,
et je vais avoir at unique.
Bon, ça veut dire que, dans ce modèle-là,
je peux avoir un unique naïs sur l'email.
Et donc, visuellement, on voit tout de suite,
on comprend tout de suite,
et pour moi, le gros, gros truc,
c'est vraiment la centralisation de toutes les données, quoi.
Et donc, on voit tout de suite,
on voit tout de suite comment c'est articulé,
comment ça se...
Comment ça interagit.
Et pour ceux qui veulent vraiment un truc plus visuel,
maintenant, on lance une commande,
il y a un mec de la communauté qui a fait un plug-in,
et, bim, on a notre schéma graphQL...
Pardon, excusez-moi.
Il y a notre schéma visuel, en fait,
avec les petits carrés, avec les connexions.
OK, lui, c'est la relation one to many,
lui, c'est many to many,
où on peut renommer aussi les tables intermédiaires.
Je ne sais plus comment s'appellent les tables intermédiaires, non ?
Je n'ai pas les tables relationnelles, c'est comme ça, je ne sais pas.
Je ne sais pas comment on appelle ça.
En fait, quand on a un many to many,
voilà, j'ai plus nom, je suis fatigué.
Mais en tout cas,
moi, je trouve que c'est un produit qui est vraiment bien,
en termes de développeur expérience.
Moi, je suis plutôt emballé.
Après, les puristes diront toujours que c'était mieux avant,
maintenant, il y a plein d'outils,
mais on gagne tellement de temps, c'est facile.
Pour faire monter une équipe,
c'est pas mal aussi pour jouer en équipe avec des juniors,
et tout le monde n'a pas un niveau d'expertise hyper poussé
sur la gestion de la DB, sur la gestion de la performance,
enfin, sur l'architecture, tout ça.
Là, pour le coup, c'est assez facilement,
la prise en main se fait vraiment bien.
Après, ça n'empêche pas de quand même de devoir réfléchir,
à structurer ta DB correctement en correctable.
Mais bon, ça, c'est un autre problème.
Après, l'outil magique qui fait tout, tout seul...
On aura plus de boulot à ce moment-là.
Voilà, à un moment donné, il faut...
En fait, ce qui m'intéresse dans la développeur expérience
c'est de me concentrer sur des tâches,
ou sur des valeurs qui amènent de la valeur,
de créer une table, la NM table, user, post,
mouvement, tout machin.
Ça a très peu de valeur.
Donc autant le faire facilement,
et utiliser des librairies qui sont optimisées
et qui font ça très bien.
Et dans la manière où je vais l'utiliser tous les jours,
la manière dont je vais requieter mes données,
ça soit superfluide, Prisma, user,
Find unique, where email est égal à Alex,
à Wslash.
C'est super facile.
Ça se lit super facilement
et il n'y a pas besoin de taper du SQL direct.
Et l'autocomplétion...
En fait, c'est que des petits trucs,
mi bout à bout,
qui amènent une certaine maturité
sur le produit,
et puis une facilité, une fluidité à l'usage.
Je rebondis,
c'est ce que tu avais dit,
il y a deux minutes.
Tu as parlé de...
Ça veut dire, ah oui, les indexes,
ça gère bien les indexes.
Toi qui indique telle chance,
il y a plus d'index,
comme ça tu gères les indexes,
ou tu as pas le temps de...
En fait, je veux dire,
ça c'est ma clé primaire.
Je veux que ça soit un index
pour optimiser...
Un index, quoi.
Oui, exactement.
Tu vas déclarer ce que tu veux.
Je vais me remettre sur la doc.
Pour le coup, la doc est vraiment bien faite
et vraiment poussée.
Après, je pense que toutes les boîtes modernes,
les librairies modernes,
ils ont compris que si la doc est mal faite,
il y a personne qui va être prêt à l'utiliser,
parce que c'est trop, trop, trop compliqué.
Donc, c'est hyper important
et c'est la référence qu'on va chercher dessus.
C'est ce qui fait le succès d'un projet,
aujourd'hui.
C'est pas une doc costaud,
mise à jour, tout ça.
Oui, clairement, c'est...
Il marchera jamais.
Et aussi, peut-être que tu parles de 100 uniques,
type email.
Au niveau des erreurs,
par exemple, imaginez que tu fais une requête,
tu sais, de mettre un email qui existe déjà.
Ça gère bien les erreurs
au niveau de la DB.
En fait, ils vont te repousser ton erreur,
mais ils vont pas te la repousser
dans ton API.
Donc, c'est toi qui va...
Soit tu réinterprètes en fait ton erreur,
soit tu la pousses tel quel,
après, c'est à te le voir.
Mais pour le coup,
ils vont te dire qu'il y a une restriction
sur l'image,
ou il est déjà utilisé.
Ok.
Oh, super.
Un coup, top.
Donc, tu recommandes.
Oui, clairement, moi, je recommande.
Alors, on parlait de Prisma 1, Prisma 2.
Aujourd'hui, ils sont dans la version 3.
Mais il n'y a pas de gros breaking change.
En fait, la 3 n'est que la continuité
de la version 2.
Donc, il n'y a pas de breaking change.
Ça dispo à toi ?
Oui, oui, oui.
En fait, ils ont changé leur version.
Je ne sais plus le terme exact, tu vois,
mais quand ils passent sur des librairies,
avec le premier chiffre,
c'est la majeure,
la deuxième, c'est la mineure,
le troisième, c'est les patchs.
Il y a un nom spécifique pour ce type de versioning.
Et en fait, ils vont adopter ça,
il n'y a pas très longtemps.
Et donc, maintenant, ils sont sur ce type de versioning.
Donc, non, ça bouge.
Après, peut-être parce que je suis le projet de manière attentif,
mais je suis peut-être plus sensible
à toutes ces mises à jour.
Mais en tout cas, ils sont hyper proactifs
et ils rajoutent tout le temps,
tout le temps des fonctionnalités
sans casser d'autres.
Donc, je pense que leur but, c'est d'être vraiment
au top pour limiter toute la friction.
Ils sont partis pour durer.
Oui, clairement.
Et il y a plein d'articles dans les guides
où ils expliquent, par rapport à type ORM,
par rapport à SQL,
par rapport à ActiveRecord,
par rapport à SQLize,
quels sont leurs approches, leurs différences
et pourquoi ils ont fait ça.
Il y a tout l'historique aussi de pourquoi ils ont fait ces choix-là.
Et moi, je trouve ça intéressant.
La transparence.
Sans être dans la justification.
Mais ils expliquent pourquoi ils ont fait ça.
Après, on adhère ou on n'adhère pas.
Ça, c'est libre à chacun.
Mais en tout cas...
Non, moi, je trouve ça plutôt pas mal.
Et pour le coup,
je recommande de tester.
Et ils ont des petits quick-start.
Ils disent 15 minutes.
Mais bon, je pense qu'on prend un peu plus.
Mais en tout cas, en une demi-heure,
on a un truc largement en place.
Et on peut jouer avec nos modèles,
requêter nos données vraiment facilement.
Et c'est ce qui nous permet de tester vraiment la libre.
Très bien, très bien.
Écoute, allez tester tous.
Qu'est-ce qu'on peut dire de plus ?
Il n'y a plus qu'à tester.
Il y a tellement de choses à tester.
C'est clair, on s'arrête pas.
Il faut bosser.
Et il faut bosser au milieu.
Bon, notre petite rubrique.
Est-ce que tu as travaillé ?
Est-ce que tu as un outil ?
Tu as déjà un Prisma, on va dire.
Est-ce que tu as un outil à recommander ?
C'est pour cet épisode.
Tu te prends encore...
Tu me prends encore...
Tu ne bosses pas bien.
C'est vrai que je suis un vrai grand.
C'est vrai.
C'est vrai.
C'est vrai.
Je t'écoute.
Ça te semble très bien que le sujet du jour,
puisque ça s'appelle Sinkink.
C'est S Y N C I N C.
Le site, c'est Sinkink.s o.
On mettra le lien de façon dans les notes.
Ça t'empréhend avec ton sujet.
C'est un système qui sera payant.
Ça vient de commencer.
Il réplique une API
sur une base post-grade.
En temps réel.
C'est assez étonnant.
Par exemple, il donne l'exemple RTable.
RTable, si tu as déjà utilisé,
c'est un peu limité en requêtes par minute.
Tu ne peux pas t'amuser à requêter sur RTable.
Ça permet de dépasser ces limites de ces APIs.
Et de répliquer ta table RTable sur ta base post-grade.
Et là, tu vas pouvoir utiliser Prisma pour récupérer tes données.
Tu peux aller taper sur différentes appels.
Il donne plein d'exemples.
Ils ont plein en projet.
Ils sont sur RTable, Shopify,
tout des stripes.
Imagine un stripe.
Tu peux répliquer sur ta base post-grade.
Et après, elles affichent dans ton backend.
Ils ont plein de trucs prévus.
Les Github, Upspot, Notion.
Notion au passage.
J'ai testé l'API.
Je ne sais pas ce que tu en penses.
Mais je ne fais vraiment pas ça terrible.
Du coup, la petite fois.
En fait, j'ai vu qu'ils avaient ouvert une API
qui était hyper, hyper demandée.
Mais qui était un peu limitée.
Pour le coup, je ne fais qu'eux répéter
ce que j'ai bêté.
Mais qui était limitée.
Mais ce n'était pas ouf.
Petite appartie sur l'API Notion.
C'est mon avis.
Je l'ai testé hier.
Elle est assez facile à utiliser.
Tu fais une clé API et tu vas requetter.
Je pensais que ce serait super.
Je pourrais récupérer les pages
et le contenu de la page.
Mais ce n'est pas aussi simple.
Il faut l'ID de la page.
Après, le contenu dans la page est des blocs.
Il faut récupérer les IDs de chaque bloc
pour aller faire une requête sur chaque bloc.
C'est quasiment inutilisable.
À la limite, tu peux aller taper
sur un tableau dans une page.
L'utiliser est ce que j'explique.
Tu peux l'utiliser comme une DB,
un tableau et tu vas récupérer les datas.
Je ne vois vraiment pas l'utilisation.
Au début, quand ils ont sorti l'API,
c'est très excité.
J'ai vu sur Twitter tous les messages.
C'est génial.
Et là, on entend plus trop parler.
J'ai l'impression.
Ils ont sorti l'API pour faire plaisir,
mais ça ne marche pas terrible.
Ça, c'est mon avis.
Il y a peut-être des mecs qui vont me dire
que ça marche très bien.
Mais tu es complètement maboule de dire ça.
Nos chans sont super autils.
Mon outil
cinc.so
Je ne sais pas si je le prononce bien.
C'est un système qui sera payant.
J'ai trouvé ça utile.
C'est plutôt orienté sur Pro.
Ils ont plein paiement Pro.
Ce n'est pas donné.
95$ par source, par mois.
Après, ça peut être.
Mais je trouve ça le concept intéressant.
De synchroniser en temps réel
une API avec ta base de données.
Tu veux rajouter quelque chose ?
Pas du tout.
Je reste fidèle
à mon outil que je présente aujourd'hui.
Ce n'est pas mon outil.
Mais c'est l'outil que j'ai présenté aujourd'hui.
Je pense que ça vaut le coup de passer un peu de temps
dessus pour tester
sur un petit projet.
C'est vraiment pas mal.
Ok, super.
Bon, on va arrêter là.
Du coup,
on vous remercie
d'avoir resté jusqu'au bout.
N'hésitez pas à nous laisser des likes, des commentaires
sur les plateformes.
Balancez-nous un petit mail
sur le site directement.
Ça fait toujours plaisir.
Et on vous retrouve
dans un futur épisode.
Avec
on peut déjà faire un petit teaser
mais on a invité
dans un prochain épisode
qui nous fait énormément plaisir.
Donc, on va rester à l'écoute.
Ça va être sympa.
Et ça va sortir.
Yes.
Carrément, à bientôt.
Ciao ciao.
Episode suivant:
Les infos glanées
DoubleSlashPodcast
Double Slash, un podcast sur le développement web. Retrouvez-nous régulièrement pour parler de sujets variés tels que la JAMStack, l’accessibilité, l’écoconception, React.js, Vue.js, Next.js, Nuxt.js, le CSS et des retours d’expériences sur des implémentations.
Tags
Card title
[{'term': 'Technology', 'label': None, 'scheme': None}, {'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]
Go somewhere
Nuxt.JS avec Sébastien Chopin