iamkanguk.dev

[ORM] Prisma Multiple Schema File 본문

ORM

[ORM] Prisma Multiple Schema File

iamkanguk 2024. 9. 5. 22:30

개요

지금까지 Prisma에서는 schema 파일을 분리하지 못하는 줄 알았다. 그런데 이번년도 6월 경에 Prisma 공식 사이트에서 schema 파일 분리가 가능하다는 공지가 나왔었다.

 

아무 생각없이 나는 schema.prisma 파일에 모든 테이블을 설계해서 코드를 작성하고 있었다. 심지어 Prisma-Markdown을 사용하여 ERD 시각화를 수행하고 있었는데 model 부분에 주석을 생성하면서 코드가 길어지면서 가시성이 떨어지는 것을 느꼈다.

 

그런데 갑자기 NestJS 카카오 오픈채팅방에서 다른 선배 개발자분들이 Prisma에서 schema 파일 분리가 가능해져서 좋아하시는게 확 떠올랐다. 그래서 생각난 김에 분리를 해봤는데 이게 뭐라고.... 이렇게 좋은지! 확실히 편하다고 느꼈다.

 

필자가 올려주는 사이트만 봐도 누구나 따라할 수 있는데 그래도 그냥 간단하게 작성해보려고 한다.

(prisma 기본 세팅이 되어있다고 가정한다)

1.  prismaSchemaFolder 활성화

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["prismaSchemaFolder"]   <<< 여기!
}

 

공식문서에서는 다중 파일로 분리를 하기 위해서는 generator 부분에 previewFeatures 필드에 prismaSchemaFolder를 활성화 시켜야한다고 한다.

2.  prisma 디렉토리에 서브 디렉토리 생성

 

위와 같이 prisma 디렉토리 밑에 schema 라는 이름의 서브디렉토리를 생성한다.

궁금해서 다른 이름의 디렉토리로 생성해봤는데 무조건 schema 라는 이름의 서브 디렉토리를 생성해야 한다.

3.  입맛에 맞게 스키마를 분리한다

필자는 위 사진처럼 도메인으로 크게 나눠 분리했다. 확실히 하나의 파일보다 여러 개의 파일로 분리해서 관리적인 측면에서도 좋아졌다고 느낀 것 같다.

 

실제로 필자가 작성한 schema 파일인데 이렇게 파일을 분리해서 Relation 설정해도 하나의 파일에서 작업하던 것처럼 동일한 환경에서 깔끔하게 소스코드를 작성할 수 있다. 그리고 아래 사진과 같이 Prisma-Markdown도 분리된 스키마를 인식하기 때문에 정상적으로 ERD를 그릴 수 있어서 좋다.

 

되게 간단한 내용의 블로그 글이었는데 오늘 오랜만에 블로그를 쓰고 싶다는 생각이 들었고 마침 쓸만한 소재가 하나 생긴 것 같아서 작성했다. 필자의 글을 보는 다른 개발자 분들도 schema를 하나의 파일에 모두 작성했었다면 이번 기회에 schema를 분리해서 더욱 편안한 환경에서 개발을 했으면 좋을 것 같다.

 

참고자료 

https://www.prisma.io/blog/organize-your-prisma-schema-with-multi-file-support

 

Organize your Prisma Schema into multiple files with Prisma ORM version 5.15.0

With Prisma ORM 5.15.0 you can now use multiple Prisma Schema files instead of just one. Learn how to enable this Preview feature and check out a real-world example.

www.prisma.io

https://github.com/samchon/prisma-markdown

 

GitHub - samchon/prisma-markdown: Markdown generator of Prisma, including ERD and descriptions

Markdown generator of Prisma, including ERD and descriptions - samchon/prisma-markdown

github.com