Prisma Schema
Prisma schemas définit les tables dans votre base de donnée. Recherchez dans votre dossier de project pour un fichier .prisma.
L'emplacement conventionnel est
prisma/schema.prismaVous pouvez ajouter/déplacer les schemas librement tant que vous informez Prisma danspackage.json."prisma": { "schema": "{path-to-.prisma}" }Il est possible de séparer un schema long en plusieurs
.prisma. Dans ce cas la spécifier le chemin du dossier des schemas. Il est néanmoins fortement conseillé de définirdatasourceetgeneratordansschema.prismapour clarté.
Un exemple de schema:
// specify database.
// Comments starting with "//" will NOT show up in the abstract syntax tree (AST)
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
/// default client
/// Comments starting with "///" WILL show up in the abstract syntax tree (AST)
generator client {
provider = "prisma-client"
output = "../generated/prisma"
}
/* Defining data headers
Block comments WILL show up in the abstract syntax tree (AST) as well.*/
model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
name String?
// `Role` est un `enum` crée plus tard
role Role @default(USER)
posts Post[]
}
model Post {
// FIELD-NAME TYPE ATTRIBUTE
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean @default(false)
title String @db.VarChar(255)
// Ces deux lignes specifie un `authorID` qui réfère au `User.id`
// ? permet l'existence de `NULL`
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
enum Role {
USER
ADMIN
}
Pour syntax highlighting, il y a une extension VScode.
Pour mise en forme, exécutez
npx prisma format. Si vous avez l'extension VSCode installé, le formatteur est inclus. Considérez de configurer format on save
datasource
Notez au lieu de specifier de manière explicite notre databaseURL, nous avons utilisé url = env("DATABASE_URL") pour accéder dynamiquement la variable d'environement DATABASE_URL. Ceci est un bon pratique de sécurité en évitant d'exposer des secrets en .prisma, qui peut-être copié-collé et réutilisé ailleur.
On peut mettre en forme un .prismafichier par prisma format.
generator
"prisma-client" est recommandé car il sort des code .tsqui sont facilement compréhensible et modifiable si besoin. Il est possible utiliser les autres generatorstant qu'ils conforment aux specifications.
model
Il est conventionnel de définir les enums après les models.
Pour plus d'information, consulter ce guide
Member discussion