Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| web:api:prisma-fastify [2026/03/04 01:54] – créée jcheron | web:api:prisma-fastify [2026/03/04 11:26] (Version actuelle) – [6. Prisma Client] jcheron | ||
|---|---|---|---|
| Ligne 21: | Ligne 21: | ||
| ==== 2. Initialisation du projet ==== | ==== 2. Initialisation du projet ==== | ||
| - | <code bash> | + | <sxh bash; |
| mkdir fastify-prisma-api | mkdir fastify-prisma-api | ||
| cd fastify-prisma-api | cd fastify-prisma-api | ||
| npm init -y | npm init -y | ||
| - | </code> | + | </sxh> |
| Installation dépendances : | Installation dépendances : | ||
| - | <code bash> | + | <sxh bash; |
| npm install fastify @prisma/ | npm install fastify @prisma/ | ||
| npm install -D prisma typescript ts-node-dev @types/node | npm install -D prisma typescript ts-node-dev @types/node | ||
| - | </code> | + | </sxh> |
| Initialiser Prisma : | Initialiser Prisma : | ||
| - | <code bash> | + | <sxh bash; |
| npx prisma init | npx prisma init | ||
| - | </code> | + | </sxh> |
| ----- | ----- | ||
| Ligne 46: | Ligne 46: | ||
| Créer `tsconfig.json` : | Créer `tsconfig.json` : | ||
| - | <code json> | + | <sxh json> |
| { | { | ||
| " | " | ||
| Ligne 57: | Ligne 57: | ||
| } | } | ||
| } | } | ||
| - | </code> | + | </sxh> |
| Ajouter dans `package.json` : | Ajouter dans `package.json` : | ||
| - | <code json> | + | <sxh json> |
| " | " | ||
| " | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ----- | ||
| + | |||
| + | |||
| + | ==== 2. Configuration Prisma avec SQLite ==== | ||
| + | |||
| + | Modifier `prisma/ | ||
| + | |||
| + | <code prisma> | ||
| + | datasource db { | ||
| + | provider = " | ||
| + | url = env(" | ||
| + | } | ||
| + | |||
| + | generator client { | ||
| + | provider = " | ||
| } | } | ||
| </ | </ | ||
| Ligne 69: | Ligne 87: | ||
| ----- | ----- | ||
| - | ==== 4. Configuration | + | ==== 3. Configuration |
| - | Fichier | + | < |
| + | DATABASE_URL=" | ||
| + | </ | ||
| + | |||
| + | Explication : | ||
| + | |||
| + | * Prisma va créer automatiquement un fichier | ||
| + | * 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 ==== | ||
| < | < | ||
| - | DATABASE_URL=" | + | fastify-prisma-api/ |
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| </ | </ | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ==== 4.b Configuration Prisma avec postgres ==== | ||
| + | |||
| + | Fichier `.env` : | ||
| + | |||
| + | <sxh prisma; | ||
| + | DATABASE_URL=" | ||
| + | </ | ||
| Modifier `prisma/ | Modifier `prisma/ | ||
| - | <code prisma> | + | <sxh ts> |
| datasource db { | datasource db { | ||
| provider = " | provider = " | ||
| Ligne 95: | Ligne 155: | ||
| createdAt DateTime @default(now()) | createdAt DateTime @default(now()) | ||
| } | } | ||
| - | </code> | + | </sxh> |
| Créer la base : | Créer la base : | ||
| - | <code bash> | + | <sxh bash; |
| npx prisma migrate dev --name init | npx prisma migrate dev --name init | ||
| - | </code> | + | </sxh> |
| ----- | ----- | ||
| Ligne 107: | Ligne 167: | ||
| ==== 5. Structure simple du projet ==== | ==== 5. Structure simple du projet ==== | ||
| - | <code> | + | <sxh bash; |
| src/ | src/ | ||
| | | ||
| | | ||
| - | </code> | + | </sxh> |
| ----- | ----- | ||
| Ligne 119: | Ligne 179: | ||
| `src/ | `src/ | ||
| - | <code ts> | + | <sxh ts> |
| - | import { PrismaClient } from " | + | import {PrismaClient} from " |
| export const prisma = new PrismaClient() | export const prisma = new PrismaClient() | ||
| - | </code> | + | </sxh> |
| ----- | ----- | ||
| Ligne 131: | Ligne 191: | ||
| `src/ | `src/ | ||
| - | <code ts> | + | <sxh ts> |
| import Fastify from " | import Fastify from " | ||
| import { prisma } from " | import { prisma } from " | ||
| Ligne 155: | Ligne 215: | ||
| console.log(" | console.log(" | ||
| }) | }) | ||
| - | </code> | + | </sxh> |
| ----- | ----- | ||
| Ligne 161: | Ligne 221: | ||
| ==== 8. Lancement ==== | ==== 8. Lancement ==== | ||
| - | <code bash> | + | <sxh bash; |
| npm run dev | npm run dev | ||
| - | </code> | + | </sxh> |
| Tester : | Tester : | ||
| - | GET http:// | + | * GET http:// |
| - | POST http:// | + | |