Open2

Prismaあれこれ

大波 誠(Makoto Ohnami)大波 誠(Makoto Ohnami)

既存のDBがあって、データも入っている状況でPrismaを使い出す場合。
まず、既存のスキーマ情報をPrismaの設定情報をとして落とし込む必要がある。

$ npx prisma db pull

その上で、prisma/schema.presmaを編集してnpx prisma db migrate devしようとするとデータがリセットされるけど本当に大丈夫?と聞かれる。いかんいかん

Do you want to continue? All data will be lost.

とりあえず、Prismaからの新規追加分や修正分をprisma/schema.presmaから消して一旦元に戻す。

そして、既存分のスキーマについてマイグレーションファイルを作成して、それを適用済みのステータスに更新する必要がある。

$ npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/00_initial_state/migration.sql

$ npx prisma migrate resolve --applied 00_initial_state

こうすることで、_prisma_migrationsという制御テーブルにprismaを使う前の初期状態のテーブル情報が適用済みとして登録される。

あとは、通常のPrismaの使い方でやっていけばOK。
基本の仕組みはrailsのActive recordとほぼ同じか。後発なだけに洗練されていそうな印象。

参考文献

https://zenn.dev/nori_maki/articles/75add720c38f24
https://note.shiftinc.jp/n/n800e789c6984

大波 誠(Makoto Ohnami)大波 誠(Makoto Ohnami)

Prismaの入門コンテンツを読んでテーブル作ると、キャメルケースでテーブル名やカラム名が作られるんだけど、それがスタンダードなんだろうか。railsから来た人間からすると変な感じがするが、慣れの問題なのかもしれない。