안녕하세요. 개발자 윤익후 입니다! 🚀
오늘은 Prisma를 사용하기에 앞서, Prisma 환경을 구축하는데 필요한
Prisma Schema에 대해 알아보도록 하겠습니다 !
Prisma Schema는 Generator
Data sources
Data Model
3가지로 이루어져 있습니다.
Prisma Schema는 schema.prisma라는 파일을 사용합니다.
하나씩 천천히 살펴보도록 하겠습니다.
❗ 아래의 이전 강좌를 먼저 보고오시는 것을 추천드립니다.
1. Prisma, 넌 누구니 ?
generator란 Prisma 명령(prisma migrate, prisma client)를 실행하는 환경을 결정하는 필드입니다.
일반적으로는 provider외에 설정할 필요가 없습니다.
그러나 추가로, Preview 기능을 사용하기 위해서는, PrieviewFeatures옵션을 추가해 주서야 합니다.
generator client{ provider = "prisma-client-js" previewFeatures = [] }
❗ 현재 Prisma가 지원하는 previewFeatures옵션은 다음과 같습니다.
nativeTypes
microsoftSqlServer
Data Source란, Prisma를 사용하여 연결할 데이터베이스의 정보를 설정해 주는 필드입니다.
필요한 정보로는, Database의 종류(provider)과 Database URL(url)이 있습니다.
❗ 현재 Prisma가 지원하는 Database는 다음과 같습니다.
PostgreSQL
MySQL
SQLite
MSSQL (2.10.0 이상 버전에서 Preview로 지원)
Data Source는 datasource 필드에서 정의됩니다.
datasource db{ provider = Database 종류 url = Database }
현재 사용가능한 provider 옵션은 다음과 같습니다.
sqlite
postgresql
mysql
sqlserver
Database 마다 url의 형식이 조금씩 다릅니다.
url에 직접 URL을 기입할 수도 있고, env("DATABASE_URL")
을 사용해
환경변수를 통해 사용할 수 있습니다.
.env 파일을 통해 관리하시는 것을 추천드립니다.
아래에서 각 Database마다 상세하게 알아보도록 하겠습니다.
PostgrSQL의 경우 공식 PostgreSQLI 형식을 따릅니다.
기본 URL은 postgresql://USER:PASSWORD@HOST:PORT/DATABASE
입니다.
추가로 URL 끝에 ?KEY1=VALUE&KEY2=VALUE
의 형식으로 인자를 사용할 수 있습니다.
인자의 종류가 많아 Prisma Docs 를 참고해 주시고, 혹여 궁금한 점이 있으시면 댓글 남겨주세요 !
MySQL의 기본URL은 mysql://USER:PASSWORD@HOST:PORT/DATABASE
입니다.
추가로 URL 끝에 ?KEY1=VALUE&KEY2=VALUE
의 형식으로 인자를 사용할 수 있습니다.
인자의 종류가 많아 Prisma Docs 를 참고해 주시고, 혹여 궁금한 점이 있으시면 댓글 남겨주세요 !
SQLite의 기본 URL은 file:<file경로>
입니다.
SQLite의 경우 인자 옵션이 존재하지 않습니다.
❗ MsSQL은 현재 Preview 기능입니다.
❗ MacOS 에서 사용하는 경우, encrypt=DANGER_PLAINTEXT 해당옵션을 사용해 개발하고, production에서는 코드를 제거해야 합니다.
MsSQL의 경우 JDBC 표준을 따릅니다.
기본 URL은 sqlserver://HOST:PORT;database=DATABASE;integratedsecurity=true
입니다.
Data model은 총 2가지로 구성됩니다.
PSL(Prisma Schema Language)를 사용하여 작성합니다.
model - Database 테이블에 매핑되는 개념입니다.
enum - 열거형 (❗ Database에서 지원하는 경우만 사용 가능합니다.)
기타 field 및 model의 동작을 변경하는 속성과 함수
Database의 테이블에 매핑되는 개념입니다.
Field (DB의 column과 동일)가 있고, Field는 Filed Type (DB의 data_type과 동일),
제약조건 (unique, realation(1:n, n:m 관계)) 등이 있습니다.
해당 부분은 추후에 model간의 관계를 설명하면서 더 자세하게 알아보도록 하겠습니다.
대략적인 구조는 아래와 같습니다.
model ModelName { Field1 FieldType @option Field2 FieldType Field3 FieldType }
오늘은 Prisma Schema의 구성에 대하여 알아보았습니다.
다음 포스트에서는 Model의 더욱 구체적인 예시와, 모델간의 관계에 대하여 알아보겠습니다.
좋아요