`model`s en Prisma
@@map
| Contexte | Convention | Exemple |
|---|---|---|
Prisma models |
Forme singulière — PascalCase | Formula |
| Base de données relationnelle (table) | Forme plurielle — snake_case | formulas |
model Formula {
// Fields
@@map("formulas")
}
@@map mappe ensemble Prisma model Formulaavec la table formulas dans la base de données, permettant le conformement à deux conventions contradictoires.
model
champs scalar
Une liste complète des scalars : ici
clé (ID)
model User {
//option 1 : autoincrement - 1,2,3...
id Int @id @default(autoincrement())
//
email String @unique
name String?
role Role @default(USER)
posts Post[]
profile Profile?
registrationTime DateTime @default(now())
//option 2 : composite ID
@@id(name: "fullName", fields: [firstName, lastName])
//
}
En absence d'option 1 ou 2, champs
@uniquepeuvent servir commeid.
@unique
model Post {
id String @id @default(auto()) @map("_id") @db.ObjectId
createdAt DateTime @default(now())
title String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String @db.ObjectId
categories Category[] @relation(references: [id])
@@unique(name: "authorTitle", [authorId, title]) // chaque combinaison de "authorID" et "title" doit être unique. Autrement dit chaque author ne peut pas avoir deux Post avec le même titre.
}
Il est aussi possible d'étendre la contrainte aux autres models :
type City {
name String
}
type Address {
number Int
city City
}
model User {
id Int @id
address Address[]
@@unique([address.city.name])
}
Index
Index est utile pour accélerer les recherches habituels
model Post {
id Int @id @default(autoincrement())
title String
content String?
@@index([title, content])
}
Composite types
model Product {
id String @id @default(auto()) @map("_id") @db.ObjectId
name String
photos Photo[]
}
type Photo {
height Int
width Int
url String
}
Notez que certains types ne sont pas disponible en "composite types" :
@unique @@index @id @relation @ignore @updatedAt.
@unique @@indexpeuvent être défini en model parent. Dans l'exemple,Product.
Functions
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
}
Member discussion