概要
Prisma は、リバースエンジニアリングによるスキーマ生成と、マイグレーションファイルによるスキーマ更新の、両方をサポートしている。
通常は、スキーマ定義ファイルからマイグレーションファイルを生成して、DB スキーマを更新するが、逆に既存の DB からスキーマ定義を生成(リバースエンジニアリング)する方法を記載する。
例えば、既存の DB に影響を与えずに、 Prisma を仕様した DB 処理をプロジェクトで書ける様にしたい場合は今回の手順を実行すればよい。
前提
prisma
コマンドをグローバルインストールしていないため、npx
をつけて利用する。
事前準備
※ 既にschema.prisma
、.env
があれば、本手順は不要。
Prisma の初期設定コマンドをする。
npx prisma init
リバースエンジニアリング
以下の2つの手順で実現する。
まず、.env
の DATABASE_URL
の接続先が間違いないか確認しておくこと。
スキーマ定義ファイルの更新
prisma の場合、通常実行すると、スキーマ定義ファイル(schema.prisma
)を上書きしてしまうため、まずは更新内容をコンソールで確認する。
npx prisma db pull --print
--print
オプションを付けると、ファイルに書き込まれずコンソールに標準出力される。
正常動作し、内容も問題なければ、スキーマ定義ファイルの更新をする
npx prisma db pull
→ prisma/schema.prisma
に最新のスキーマ定義が出力される。
Prisma クライアントツールを更新する
次に、各バックエンド処理で呼び出すモデルに内容を反映させるために、以下のコマンドを実行する。
npx prisma generate
prisma generate
を実行することで、node_modules/.prisma/client
が更新される。
以上で、DB 処理が実装可能となる。