model User {
id Int @id @default(autoincrement())
phone String? @unique
email String? @unique
name String
avatar String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
tokens Token[]
products Product[]
Fav Fav[]
Post Post[]
answers Answer[]
wonderings Wondering[]
writtenReviews Review[] @relation(name: "writtenReviews")
receivedReviews Review[] @relation(name: "receivedReviews")
sales Sale[]
purchases Purchase[]
}
model Fav {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
product Product @relation(fields: [productId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId Int
productId Int
}
@relation 인자
name: 관계를 명확하게 하기 위해 관계의 이름을 정의합니다.
@relation(name: "UserOnPost", references: [id])
또는 @relation("UserOnPost")
fields: 현재 모델의 필드 목록
references: 관계의 반대편에 있는 모델의 필드 목록
https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#relation
Disambiguating relations (명확한 관계)
두 개의 동일한 모델 간에 두 개의 관계를 정의할 때 @relation 속성에 name 인수를 추가하여 모호성을 제거해야 합니다.
https://www.prisma.io/docs/concepts/components/prisma-schema/relations#the-relation-attribute
enum
enum은 기본적으로 PostgreSQL 및 MySQL에서 지원됩니다.
// 두 가지 가능한 값으로 enum을 지정하고 기본값을 설정합니다.
enum Role {
USER
ADMIN
}
model User {
id Int @id @default(autoincrement())
role Role @default(USER)
}