Open2
Prismaあれこれ
既存の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とほぼ同じか。後発なだけに洗練されていそうな印象。
参考文献
Prismaの入門コンテンツを読んでテーブル作ると、キャメルケースでテーブル名やカラム名が作られるんだけど、それがスタンダードなんだろうか。railsから来た人間からすると変な感じがするが、慣れの問題なのかもしれない。