TIL - Prisma


Prisma의 개념

Prisma is an open source database toolkit that makes it easy for developers to reason about their data and how they access it,
by providing a clean and type-safe API for submitting database queries.
It mainly consists of three tools: Prisma Client: An auto-generated and type-safe query builder for Node.

  • Clean and type-safe API for database queries
  • DB Client, DB Connection, DB Schema
  • RDB, MongoDB 지원

init

yarn add -D prisma
prisma init

commands

  • prisma generate
    • 로컬 환경에 prisma 클라이언트를 설치함
  • prisma db push
    • 초기 schema 설정 또는 dev 환경에서 사용하기 좋음. migration 히스토리를 남기지 않음.
  • prisma migrate dev
    • 운영 환경 스키마 개선 시에 사용. migration 히스토리를 남김.
  • prisma studio
    • supabase, phpmyadmin처럼 db schema를 바로 보고 관리할 수 있는 웹 콘솔을 띄워줌.

schema.prisma

  • Database schema를 정의하는 기본 파일
    • DB Connection, Client, RDB + MongoDB까지 높은 수준의 추상화를 제공함
    • Connection 시 .env 파일을 통해서 간편하게 credential을 관리할 수 있음 (로컬 개발 이후 vercel, github secrets 기능들과 연동이 간편함)

Enum

열거형 데이터 타입을 사용할 수 있음

enum SignUpMethod { 
    EMAIL
    GOOGLE
}

Schema 정의 함수 @

  • @default 기본값을 정의함
  • @updatedAt 업데이트 UTC 시간
  • @relation 관계 선언
  • @unique 유일값 선언
  • @@unique([a, b]) 멀티컬럼 인덱스 선언

List Column

  • String[]

이런 식으로 배열형 컬럼을 선언할 수 있음

Model

Relation

Prisma는 기본적인 Relation들을 모두 지원함

  • One to One Relation
  • One to Many Relation
  • Many to Many Relation
  • Self Relation