Open1

Prisma+MySQLの構成をPrisma+Supabaseに変更する。

MygMyg

Nest.js+Prisma+MySQLでバックエンドを構成したが、認証機能の追加が必要になったため、認証機能を提供している、Supabaseを使用できるようにする。

Supabaseプロジェクトの作成

Supabaseへサインアップし、新規のプロジェクトを作成する。
設定したパスワードを控えておく。

接続情報の取得

下図のConnectを押下する

ORMsを押下し、「Connect to Supabase via connection pooling with Supavisor.」のURLをコピーしておく

.envファイルの設定

下記を.envファイルに記載しておく
DATABASE_URL="postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres?pgbouncer=true"

YOUR-PASSWORDには最初に控えておいたパスワードを入れる

※コネクションプーリング: Supabaseを使用する際は、コネクションプーリングの設定が推奨されます。これにより、接続の効率が向上します。接続URIの末尾に?pgbouncer=trueを追加することで、コネクションプーリングを有効にできます。

マイグレーションの実行

dockerで環境構築をしているので、下記のコマンドでマイグレーションを実行し、Supabaseにテーブルを作成する。

docker-compose exec nest npx prisma migrate dev --name init

ここで、すでにマイグレーションファイルがある場合、下記のエラーが出る場合がある

Error: P3019

The datasource provider `postgresql` specified in your schema does not match the one specified in the migration_lock.toml, `mysql`. Please remove your current migration directory and start a new migration history with prisma migrate dev. Read more: https://pris.ly/d/migrate-provider-switch

上記が出た場合、prisma/migrationsを削除し、再度マイグレーションを実行する。

Prisma Clientの生成

Prisma Clientを生成するために、以下のコマンドを実行する

docker-compose exec nest npx prisma generate

Prisma Clientとは
https://www.prisma.io/docs/orm/prisma-client/setup-and-configuration/generating-prisma-client