스키마_Prisma

miin·2022년 9월 15일
0

Prisma

목록 보기
1/2
post-thumbnail
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();
  • @@map
    model 이름을 원하는 이름으로 매핑 할 수 있다
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
}

참고 블로그

0개의 댓글