targo-backend/prisma/READMEprisma.md
Matthieu Haineault e22c33b29e first commit
2025-07-15 10:41:53 -04:00

2.4 KiB
Raw Blame History

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 laide 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