diff --git a/src/content/docs/fr/guides/backend/prisma-postgres.mdx b/src/content/docs/fr/guides/backend/prisma-postgres.mdx new file mode 100644 index 0000000000000..9fffff9956997 --- /dev/null +++ b/src/content/docs/fr/guides/backend/prisma-postgres.mdx @@ -0,0 +1,183 @@ +--- +title: Prisma Postgres & Astro +description: Ajoutez une base de données Postgres serverless à votre projet Astro avec Prisma Postgres +sidebar: + label: Prisma Postgres +type: backend +service: Prisma Postgres +stub: false +i18nReady: true +--- + +import ReadMore from '~/components/ReadMore.astro'; + +[Prisma Postgres](https://www.prisma.io/) est une base de données Postgres entièrement gérée et serverless, conçue pour les applications Web modernes. + +## Connexion via l'ORM de Prisma (recommandé) + +L'[ORM de Prisma](https://www.prisma.io/orm) est la méthode recommandée pour se connecter à votre base de données Prisma Postgres. Il fournit des requêtes avec sûreté du typage, des migrations et des performances globales. + +### Prérequis +- Un projet Astro avec un adaptateur installé pour activer le [rendu à la demande (SSR)](/fr/guides/on-demand-rendering/). + +### Installer les dépendances et initialiser Prisma + +Exécutez les commandes suivantes pour installer les dépendances de Prisma nécessaires : + +```bash +npm install prisma tsx --save-dev +npm install @prisma/extension-accelerate @prisma/client +``` + +Une fois installé, initialisez Prisma dans votre projet avec la commande suivante : + +```bash +npx prisma init --db --output ../src/generated/prisma +``` + +Vous devrez répondre à quelques questions lors de la configuration de votre base de données Prisma Postgres. Sélectionnez la région la plus proche de votre emplacement et un nom facile à retenir pour votre base de données, comme « Mon projet Astro ». + +Cela créera : +- Un répertoire `prisma/` avec un fichier `schema.prisma` +- Un fichier `.env` avec une URL de base de données (`DATABASE_URL`) déjà définie + +### Définir un modèle + +Même si vous n'avez pas encore besoin de modèles de données spécifiques, Prisma nécessite au moins un modèle dans le schéma afin de générer un client et d'appliquer des migrations. + +L'exemple suivant définit un modèle `Post` comme valeur fictive. Ajoutez-le à votre schéma pour commencer. Vous pouvez le supprimer ou le remplacer en toute sécurité ultérieurement par des modèles qui reflètent vos données réelles. + +Mettez à jour le fournisseur du générateur de `prisma-client-js` vers `prisma-client` dans votre fichier `prisma/schema.prisma` : + +```prisma title="prisma/schema.prisma" {2} ins={11-16} +generator client { + provider = "prisma-client" + output = "../src/generated/prisma" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model Post { + id Int @id @default(autoincrement()) + title String + content String? + published Boolean @default(false) +} +``` + +Apprenez-en plus sur la configuration de l'ORM de Prisma dans la [référence du schéma Prisma](https://www.prisma.io/docs/concepts/components/prisma-schema). + +### Générer des fichiers de migration + +Exécutez la commande suivante pour créer les tables de base de données et générer le client Prisma à partir de votre schéma. Cela créera également un répertoire `prisma/migrations/` avec les fichiers d’historique de migration. + +```bash +npx prisma migrate dev --name init +``` + +### Créer un client Prisma + +Dans le répertoire `/src/lib`, créez un fichier `prisma.ts`. Ce fichier initialisera et exportera votre instance du client Prisma afin que vous puissiez interroger votre base de données tout au long de votre projet Astro. + +```typescript title="src/lib/prisma.ts" +import { PrismaClient } from "../generated/prisma/client"; +import { withAccelerate } from "@prisma/extension-accelerate"; + +const prisma = new PrismaClient({ + datasourceUrl: import.meta.env.DATABASE_URL, +}).$extends(withAccelerate()); + +export default prisma; +``` + +### Interrogation et affichage des données + +L'exemple suivant montre comment récupérer uniquement vos articles publiés avec le client Prisma triés par `id`, puis afficher les titres et le contenu des articles dans votre modèle Astro : + +```astro title="src/pages/posts.astro" {2, 4-7} +--- +import prisma from '../lib/prisma'; + +const posts = await prisma.post.findMany({ + where: { published: true }, + orderBy: { id: 'desc' } +}); +--- + + +
+{post.content}
} +{rows[0].title}: {rows[0].content}
+``` + +## Ressources officielles + +- [Guide Astro + Prisma ORM](https://www.prisma.io/docs/guides/astro)