🦁

Prisma単体でschemaファイルを分割して定義する

2024/06/05に公開

概要

Prismaではマルチファイルを実現したい場合、長らくprisma-importなどのライブラリが必要でした。長年起票されていたIssueのようで、達成感が伝わってくるような気がします(笑)

今回は、Prisma 5.15.0よりプレビューでマルチファイルPrismaスキーマをサポートされたのでその実現方法をメモに残しておきます。

実現方法

  1. schema.prismaに変更を加える
prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["prismaSchemaFolder"] ←追加
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}
  1. prismaディレクトリ以下にschemaディレクトリを作成
  2. schema.prismaをprisma/schemaディレクトリ以下に移動
  3. schema以下で xxx.schema を定義する
prisma/schema/account.prisma
model Account {
  id Int @id @default(autoincrement())
  email String @unique @db.VarChar(255)
  password String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  profile Profile?
}
prisma/schema/prifle.prisma
model Profile {
  id Int @id @default(autoincrement())
  name String
  accountId Int @unique
  account Account @relation(fields: [accountId], references: [id])
}

実行コマンドを叩く

$ npx prisma migrate dev

無事にテーブルが作成されています。

参考

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

Discussion