2.4 KiB
TARGO-BACKEND prisma
Ce document court présente la configuration de Prisma et les conventions à respecter dans prisma/schema.prisma.
http://prisma.io/docs/orm/prisma-schema
## 1. Installation
npm install prisma @prisma/client --save-dev npx prisma init
<Le fichier .env est généré à la racine
##2. Fichier .env
<Définissez votre URL de connexion PostgreSQL :
DATABASE_URL="postgresql://<DB_USER>:<DB_PASSWORD>@:/<DB_NAME>?schema=public"
##3. Structure de prisma/schema.prisma
generator client { provider = "prisma-client-js" output = "../generated/prisma" }
datasource db { provider = "postgresql" url = env("DATABASE_URL") }
enum Roles { USER ADMIN CUSTOMER EMPLOYEE // … }
model User { user_id Int @id @default(autoincrement()) first_name String last_name String email String? @unique
^^^ le ? indique NULLABLE
role Roles @default(USER) created_at DateTime @default(now())
customer Customers? @relation("UserCustomer")
^^^ back-relation du model/table customers
@@map("users")
^^^ mappe vers la table “users”
}
model Customers { customer_id Int @id @default(autoincrement())
user Users @relation("UserCustomer", fields: [user_id], references:[user_id])
^^^ FK relation
user_id Int @unique
^^^ actual FK
invoice_id Int @unique role Roles @default(CUSTOMER)
@@map("customers")
^^^ mappe vers la table “customers”
}
##### Conventions #####
Modèles : nom en PascalCase (singulier) → map vers table lowercase avec @@map("…").
Not-NULL : Tout type sans ? est par default not-null. si nullable on doit mettre ?
Champs : snake_case
Types date/heure : DateTime.
Relations : toujours bidirectionnelles ou explicitez @relation("NomRelation").
Enums : définis en PascalCase, sans mapping interne (le mapping de la table se fait sur le type enum, pas sur ses valeurs).
##4. Commandes utiles
Afficher l’aide Prisma
npx prisma help
Générer le client JS
npx prisma generate
Créer ou appliquer une migration
npx prisma migrate dev --name <titre_de_migration>
Explorer la base avec Prisma Studio
npx prisma studio
Récupérer le schéma existant depuis la BDD
npx prisma db pull