Configuration de Prisma et du modèle User
Initialise Prisma, crée le modèle User et effectue la migration.
Accéder gratuitement à cette formation
Renseigne ton email pour débloquer immédiatement cette formation gratuite.
Dans cette leçon, tu vas apprendre à intégrer Prisma dans ton projet Next.js, configurer une base de données SQLite et définir un modèle User prêt pour l’authentification. On couvrira :
- Initialisation de Prisma
- Configuration de la base SQLite
- Définition du schéma Prisma
- Exécution d’une migration
- Vérification avec Prisma Studio
Prérequis
- Node.js installé (>=16.x)
- Un projet Next.js initialisé (avec TypeScript de préférence)
- Familiarité basique avec la CLI et les fichiers
.env
1. Initialiser Prisma
Pour démarrer, installe Prisma CLI et génère la configuration initiale.
1npm install prisma --save-dev2npx prisma init
Cette commande crée :
- Un dossier
prisma/contenantschema.prisma - Un fichier
.envmis à jour avecDATABASE_URL
Prisma CLI
L’installation globale de Prisma (npm install -g prisma) est possible,
mais on recommande une dépendance locale pour garder la version projet cohérente.
2. Configurer SQLite en développement
On va opter pour SQLite pour simplifier la configuration locale. Ouvre ton fichier .env et remplace la valeur par :
1# Chemin vers le fichier SQLite en local2DATABASE_URL="file:./dev.db"
Sécurité
Ne stocke jamais de vrais secrets en clair dans .env pour la production.
En dev local, SQLite est suffisant, mais choisis un provider plus robuste
(PostgreSQL, MySQL, etc.) pour la prod.
Pense à exclure dev.db de ton contrôle de version :
1# Ignore la base SQLite générée2/dev.db
3. Définir le modèle User
Édite le schéma Prisma dans prisma/schema.prisma pour y ajouter ton modèle User :
1generator client {2provider = "prisma-client-js"3}45datasource db {6provider = "sqlite"7url = env("DATABASE_URL")8}910model User {11id Int @id @default(autoincrement())12email String @unique13password String14}
// @callout: Le champ @unique garantit l’unicité de l’email
// @callout: autoincrement() crée un ID numérique séquentiel
Cette simple définition crée un utilisateur avec :
id: entier auto-incrémentéemail: chaîne uniquepassword: chaîne pour stocker le hash
4. Exécuter la migration
Maintenant, génère et applique une migration pour créer la table User dans ta base.
1npx prisma migrate dev --name add-user
▶ Une nouvelle migration apparaît dans prisma/migrations/add-user/
▶ Le fichier dev.db est créé automatiquement
À chaque changement de schéma, répète cette commande pour préserver l’historique des migrations.
5. Vérifier avec Prisma Studio
Pour explorer visuellement ta base et t’assurer que tout est en place, lance Prisma Studio :
1npx prisma studio
Tu devrais voir la table User vide. Tu peux y insérer manuellement un utilisateur pour tester.
6. Installer le client Prisma
Enfin, installe le client généré par Prisma pour l’utiliser dans ton code Next.js :
1npm install @prisma/client
Puis crée une instance que tu pourras importer partout :
1import { PrismaClient } from '@prisma/client'23export const prisma = new PrismaClient()
Réutilisation
Utilise une instance globale de prisma pour éviter de multiplier les connexions
à la base lors du hot-reload en développement.
Points clés
npx prisma initgénère la config et le fichier.env- SQLite (
file:./dev.db) est parfait pour démarrer en local - Définir un modèle dans
schema.prismadéclenche la création de la table - Les migrations (
prisma migrate dev) maintiennent l’historique du schéma - Prisma Studio est un outil visuel très pratique
Exercices
-
Ajouter un champ
name- Modifie
schema.prismapour ajoutername String?dansmodel User. - Lance une migration
prisma migrate dev --name add-name. - Vérifie la colonne dans Prisma Studio.
- Modifie
-
Seed de données
- Crée
prisma/seed.tsoù tu importesprismaet insères deux utilisateurs. - Ajoute un script npm
"seed": "tsx prisma/seed.ts"et exécute-le. - Vérifie dans Studio que les utilisateurs existent.
- Crée
-
Changer de provider
- Configure PostgreSQL local ou via Docker.
- Mets à jour
DATABASE_URLdans.env. - Ajuste
provider = "postgresql"dansschema.prisma. - Génère une nouvelle migration et vérifie la connexion.