はじめに
JavaScript(TypeScript)
のORM
であるPrisma
とSupabase
間のマイグレーションまでの実装手順について少しまとめます。
SupabaseでのDB登録
New ProjectからDB
を作成します。
DB名
、Password(後に使用します)
、Region
を選択し作成します。
Prismaの導入
Prisma
を--save-dev
でローカルにインストールします。
npm i prisma --save-dev
次にPrisma
を初期化します。
npx prisma init
初期化した際に、.env
とschema.prisma
が作られます。
.env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
この際、.env
の値には一意に作成されたURIを基にDATABASE_URL
を設定する必要があります。
Project Settings
> Database
> Connection string
に一意のURI
が作成されているので、こちらを使用します。
[YOUR-PASSWORD]
にDB作成時のパスワードを設定します。
.env
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.xxxxxxxxxxxxxxxx.supabase.co:5432/postgres"
prisma migarate dev --name init
コマンドを実行し、テーブルを反映します。
--name init
は作成されたマイグレーションファイルの接尾辞として付与されます。
日時_--nameで指定したテキストなので20231112042642_init
のディレクトリが作成されます。
npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "postgres", schema "public" at "db.rnrucpiiaizlmywkticf.supabase.co:5432"
Applying migration `20231112042642_init`
The following migration(s) have been created and applied from new schema changes:
migrations/
└─ 20231112042642_init/
└─ migration.sql
Your database is now in sync with your schema.