本記事は「Multi-file Prisma Schema」の紹介記事です。
本機能はpreview機能となります。導入の検討は慎重にお願いします。
経緯
テーブルが増えてきてschema.prismaが何百行となってしまい、可読性が悪いなぁと感じるようになりました。schema.prismaをある程度のグループで管理できるようにしたいと方法を探していたら、preview機能を見つけました。
導入
prismaディレクトリにschemaディレクトリを作成します。
schemaディレクトリ内に、schema.prismaを移動します。
my-app/
├─ ...
├─ prisma/
│ ├─ schema/
│ │ ├─ schema.prisma
├─ ...
schema.prisma
のclientに以下を追加します。
generator client {
provider = "prisma-client-js"
+ previewFeatures = ["prismaSchemaFolder"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
あとは、schema.prismaにあったテーブル定義を自由に分割してください。
公式だとこんな感じのファイル構成になっていました。
my-app/
├─ ...
├─ prisma/
│ ├─ schema/
│ │ ├─ post.prisma
│ │ ├─ schema.prisma
│ │ ├─ user.prisma
├─ ...
TIPS
prismaSchemaFolderを有効にしたら、migrationコマンドを見直しましょう。
prismaSchemaFolderを有効にしたら、schemaオプションに指定するのはschema.prismaではなく、schemaディレクトリになります。
- npx prisma migrate deploy --schema=./prisma/schema.prisma
+ npx prisma migrate deploy --schema=./prisma/schema
--schemaオプションをディレクトリに変更するのを忘れないようにしましょう
私はこれをせずに結構悩みました。(ドキュメントをちゃんと読むの大事)