import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
model user_profiles{
//Fields
@@map(name:"UserProfile")
}
@id
데이터베이스상 PK에 매칭되는 속성이다.
모든 prisam Model은 @id 속성을 가진 필드가 존재해야만 한다.
@id속성을 가진 필드는 null이 허용될 수 없다
@@id를 사용하면 다중 필드를 id로 설정할 수 있다.
@unique
데이터베이스상 UNIQUE에 매칭되는 속성이다.
모든 Scalar Type에 정의 할 수 있지만, 관계 필드에 정의할 수 없다.
unique 제약조건이 설정된 필드는 자동으로 인덱스가 추가된다.
@@unique를 사용하면 복합 유니크를 설정할 수 있다.
또한 null이 허용되지 않는다
@updatedAt
자동으로 업데이트 된 시간을 저장한다
autoincrement() , cuid(), uuid(), now()
autoincrement()는 해당 필드를 자동으로 증가하는 값으로 설정한다.
cuid()는 cuid 사양에 따라 고유한 식별자를 생성한다.
uuid()는 uuid 사양에 따라 고유한 식별자를 생성한다.
now()는 생성된 시간의 시간을 기록한다.
model User {
id Int @id @default(autoincrement()) ◀️ 값이 자동으로 증가하는 id 필드입니다.
email String @unique ◀️ email은 고유한 값입니다.
name String? ◀️ name은 null이 허용됩니다.
role Role @default(USER) ◀️ 열거형입니다. 기본값은 USER입니다.
posts Post[] ◀️ 해당 유저가 작성한 Post 필드입니다. (user:post는 1:n관계입니다.)
profile Profile? ◀️ profile은 관계필드입니다. null이 허용됩니다. (user:profiled은 1:1관계입니다.)
}
model Profile {
id Int @id @default(autoincrement())
bio String
user User @relation(fields: [userId], references: [id]) ◀️ profile에 연결된 user입니다.
userId Int 외래키 ◀️(userId)입니다.
}
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) ◀️ 현재 시간이 기본값으로 설정됩니다.
title String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
categories Category[] @relation(references: [id])
}
model Category {
id Int @id @default(autoincrement())
name String
posts Post[] @relation(references: [id])
}
enum Role {
USER
ADMIN
}