Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| web:api:prisma-fastify [2026/03/04 01:58] – jcheron | web:api:prisma-fastify [2026/05/04 14:17] (Version actuelle) – [6. Prisma Client] jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== API REST avec Fastify + Prisma ====== | ====== API REST avec Fastify + Prisma ====== | ||
| + | ====== Sommaire ====== | ||
| + | * [[web: | ||
| + | * [[web: | ||
| + | * [[web: | ||
| + | * [[web: | ||
| + | * [[web: | ||
| + | * [[web: | ||
| ===== Partie 1 ===== | ===== Partie 1 ===== | ||
| Ligne 69: | Ligne 76: | ||
| ----- | ----- | ||
| - | ==== 4. Configuration Prisma ==== | + | |
| + | ==== 2. Configuration Prisma avec SQLite ==== | ||
| + | |||
| + | Modifier `prisma/ | ||
| + | |||
| + | <code prisma> | ||
| + | datasource db { | ||
| + | provider = " | ||
| + | url = env(" | ||
| + | } | ||
| + | |||
| + | generator client { | ||
| + | provider = " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ==== 3. Configuration du fichier .env ==== | ||
| + | |||
| + | < | ||
| + | DATABASE_URL=" | ||
| + | </ | ||
| + | |||
| + | Explication : | ||
| + | |||
| + | * Prisma va créer automatiquement un fichier `dev.db` | ||
| + | * Le fichier sera situé à la racine du projet | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ==== 4. Lancer la migration ==== | ||
| + | |||
| + | <sxh bash> | ||
| + | npx prisma migrate dev --name init | ||
| + | </ | ||
| + | |||
| + | Résultat : | ||
| + | |||
| + | * Fichier dev.db créé | ||
| + | * Tables générées | ||
| + | * Client Prisma généré | ||
| + | |||
| + | Aucune base externe nécessaire. | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ==== 4.a Structure projet avec SQLite ==== | ||
| + | |||
| + | < | ||
| + | fastify-prisma-api/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ==== 4.b Configuration Prisma | ||
| + | |||
| + | <sxh bash> | ||
| + | npm install @prisma/ | ||
| + | npm install -D @types/pg | ||
| + | </ | ||
| Fichier `.env` : | Fichier `.env` : | ||
| Ligne 79: | Ligne 151: | ||
| Modifier `prisma/ | Modifier `prisma/ | ||
| - | < | + | < |
| datasource db { | datasource db { | ||
| provider = " | provider = " | ||
| Ligne 120: | Ligne 192: | ||
| <sxh ts> | <sxh ts> | ||
| - | import { PrismaClient | + | import " |
| + | import { PrismaPg | ||
| + | import { PrismaClient } from " | ||
| - | export | + | const connectionString = `${process.env.DATABASE_URL}`; |
| + | const adapter = new PrismaPg({ connectionString }); | ||
| + | const prisma = new PrismaClient({ adapter }); | ||
| + | export { prisma }; | ||
| </ | </ | ||
| - | ----- | ||
| ==== 7. Serveur + Routes simples ==== | ==== 7. Serveur + Routes simples ==== | ||
| Ligne 169: | Ligne 245: | ||
| * GET http:// | * GET http:// | ||
| * POST http:// | * POST http:// | ||
| + | |||
| + | |||
| + | <button type=" | ||