Skip to content

Commit 7cd6d52

Browse files
i18n(fr): translate guides/backend/prisma-postgres.mdx (#12135)
Co-authored-by: Paul Valladares <[email protected]>
1 parent a973102 commit 7cd6d52

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
---
2+
title: Prisma Postgres & Astro
3+
description: Ajoutez une base de données Postgres serverless à votre projet Astro avec Prisma Postgres
4+
sidebar:
5+
label: Prisma Postgres
6+
type: backend
7+
service: Prisma Postgres
8+
stub: false
9+
i18nReady: true
10+
---
11+
12+
import ReadMore from '~/components/ReadMore.astro';
13+
14+
[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.
15+
16+
## Connexion via l'ORM de Prisma (recommandé)
17+
18+
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.
19+
20+
### Prérequis
21+
- Un projet Astro avec un adaptateur installé pour activer le [rendu à la demande (SSR)](/fr/guides/on-demand-rendering/).
22+
23+
### Installer les dépendances et initialiser Prisma
24+
25+
Exécutez les commandes suivantes pour installer les dépendances de Prisma nécessaires :
26+
27+
```bash
28+
npm install prisma tsx --save-dev
29+
npm install @prisma/extension-accelerate @prisma/client
30+
```
31+
32+
Une fois installé, initialisez Prisma dans votre projet avec la commande suivante :
33+
34+
```bash
35+
npx prisma init --db --output ../src/generated/prisma
36+
```
37+
38+
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 ».
39+
40+
Cela créera :
41+
- Un répertoire `prisma/` avec un fichier `schema.prisma`
42+
- Un fichier `.env` avec une URL de base de données (`DATABASE_URL`) déjà définie
43+
44+
### Définir un modèle
45+
46+
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.
47+
48+
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.
49+
50+
Mettez à jour le fournisseur du générateur de `prisma-client-js` vers `prisma-client` dans votre fichier `prisma/schema.prisma` :
51+
52+
```prisma title="prisma/schema.prisma" {2} ins={11-16}
53+
generator client {
54+
provider = "prisma-client"
55+
output = "../src/generated/prisma"
56+
}
57+
58+
datasource db {
59+
provider = "postgresql"
60+
url = env("DATABASE_URL")
61+
}
62+
63+
model Post {
64+
id Int @id @default(autoincrement())
65+
title String
66+
content String?
67+
published Boolean @default(false)
68+
}
69+
```
70+
71+
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).
72+
73+
### Générer des fichiers de migration
74+
75+
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.
76+
77+
```bash
78+
npx prisma migrate dev --name init
79+
```
80+
81+
### Créer un client Prisma
82+
83+
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.
84+
85+
```typescript title="src/lib/prisma.ts"
86+
import { PrismaClient } from "../generated/prisma/client";
87+
import { withAccelerate } from "@prisma/extension-accelerate";
88+
89+
const prisma = new PrismaClient({
90+
datasourceUrl: import.meta.env.DATABASE_URL,
91+
}).$extends(withAccelerate());
92+
93+
export default prisma;
94+
```
95+
96+
### Interrogation et affichage des données
97+
98+
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 :
99+
100+
```astro title="src/pages/posts.astro" {2, 4-7}
101+
---
102+
import prisma from '../lib/prisma';
103+
104+
const posts = await prisma.post.findMany({
105+
where: { published: true },
106+
orderBy: { id: 'desc' }
107+
});
108+
---
109+
110+
<html>
111+
<head>
112+
<title>Articles publiés</title>
113+
</head>
114+
<body>
115+
<h1>Articles publiés</h1>
116+
<ul>
117+
{posts.map((post) => (
118+
<li>
119+
<h2>{post.title}</h2>
120+
{post.content && <p>{post.content}</p>}
121+
</li>
122+
))}
123+
</ul>
124+
</body>
125+
</html>
126+
```
127+
128+
Il est recommandé de gérer les requêtes dans une route d'API. Pour plus d'informations sur la façon d'utiliser l'ORM de Prisma dans votre projet Astro, consultez le [guide Astro + Prisma ORM](https://www.prisma.io/docs/guides/astro).
129+
130+
## Connexion TCP directe
131+
Pour vous connecter à Prisma Postgres via TCP direct, vous pouvez créer une chaîne de connexion directe dans votre console Prisma. Cela vous permet de connecter n'importe quel autre ORM, bibliothèque de base de données ou outil de votre choix.
132+
133+
### Prérequis
134+
- Une base de données [Prisma Postgres](https://pris.ly/ppg) avec une chaîne de connexion TCP activée
135+
136+
### Installer les dépendances
137+
138+
Cet exemple établira une connexion TCP directe en utilisant [`pg`, un client PostgreSQL pour Node.js](https://github.com/brianc/node-postgres).
139+
140+
Exécutez la commande suivante pour installer le paquet `pg` :
141+
142+
```bash
143+
npm install pg
144+
```
145+
146+
### Interroger votre client de base de données
147+
148+
Fournissez votre chaîne de connexion au client `pg` pour communiquer avec votre serveur SQL et récupérer les données de votre base de données.
149+
150+
L'exemple suivant de création d'une table et d'insertion de données peut être utilisé pour valider votre URL de requête et votre connexion TCP :
151+
152+
```astro title="src/pages/index.astro" {2-19}
153+
---
154+
import { Client } from 'pg';
155+
const client = new Client({
156+
connectionString: import.meta.env.DATABASE_URL,
157+
ssl: { rejectUnauthorized: false }
158+
});
159+
await client.connect();
160+
161+
await client.query(`
162+
CREATE TABLE IF NOT EXISTS posts (
163+
id SERIAL PRIMARY KEY,
164+
title TEXT UNIQUE,
165+
content TEXT
166+
);
167+
168+
INSERT INTO posts (title, content)
169+
VALUES ('Hello', 'World')
170+
ON CONFLICT (title) DO NOTHING;
171+
`);
172+
173+
const { rows } = await client.query('SELECT * FROM posts');
174+
await client.end();
175+
---
176+
177+
<h1>Articles</h1>
178+
<p>{rows[0].title}: {rows[0].content}</p>
179+
```
180+
181+
## Ressources officielles
182+
183+
- [Guide Astro + Prisma ORM](https://www.prisma.io/docs/guides/astro)

0 commit comments

Comments
 (0)