Skip to content

supabase 開発方法&ルール

ko_shiro_hap edited this page Dec 19, 2023 · 5 revisions

主に使用するコマンド

起動

npx supabase start

停止

npx supabase stop

マイグレーションリストの表示

passwordは管理者より配布。

npx supabase migration list -p ************

マイグレーションファイルの作成

  • SQLを自作する方法
npx supabase migration new ********

********は作りたいファイルの名前。なお本開発では基本的にこの方法は使わない。

  • ローカルのダッシュボードで作成した差分をコードとして取り込む方法

http://localhost:54323 にアクセス。ローカル用のダッシュボードが開くのでそこでテーブル作成などの操作を実行。その後以下のコマンドを叩く。

npx supabase db diff -f ********

********は作りたいファイルの名前。本開発ではこの方法を使用する。

マイグレーションのロールバック&実行

npx supabase db reset

ローカルDBの変更をリモートDBに反映

npx supabase db push

反映されるのはmigrationファイルの内容。レコードなどは反映されない。

リモートDBの差分をローカルDBに取り込む

npx supabase db pull

他の開発者がリモートDBを更新した際に使用する。基本的にリモートDBを直接操作することはありえないため、他の開発者から連絡があった場合に実行する。

types・型生成

DB変更後は基本的に以下のコマンドを叩いて都度型情報を更新する。

npx supabase gen types typescript --local > src/types/database.types.ts

状態確認

npx supabase status

表示されるStudio URLのダッシュボードでDB操作を行う。また、 Inbucket URLではローカルで送信したメールなどの受信を行う。

利用するページ&使い方

以下は全てsupabase statusにて確認できる。

ローカルのダッシュボード

http://localhost:54323/

ローカル環境のダッシュボードであり、これを使用してDB周りの開発を行う。テーブルの作成・更新・削除などの操作を行なった場合は必ずsupabase db diff -f ********コマンドを叩いてマイグレーションファイルを作成し、ダッシュボードでの操作とマイグレーションファイルとの整合性を保つことを徹底する。

メールサーバー

http://localhost:54324/

ローカルでサインアップなどを行った場合、実際にメールが送信されることはない。しかし、それらのメールは以上のURLでアクセスできる@inbuketで確認することができる。サインアップの認証もここで受け取ったメールのURLを踏むことで可能である。

開発ルール

リモートに反映させる場合

  • 必ず破壊的変更がないかを確認する。
  • developにマージされる際にpushする。approveをもらっていないのにpushしてはならない。
  • push完了後はリモートの変更を全開発者に報告し、pullを促す。

DB構造を変更する場合(テーブルの作成・更新・削除)

  • そのテーブルやカラムが存在しないとエラーが起こるなどといった破壊的な変更があってはならない。 なぜならpushのタイミングはデプロイのタイミングと完全に合わせることが不可能なため、本番環境が動作しなくなる時間が発生してしまう。
  • 必ずsupabase db diff -f ********コマンドを叩いてマイグレーションファイルを作成する。
  • supabase migration new ********のコマンドでマイグレーションファイルを作ることを禁止する。 なぜなら手書きのSQLはエラーの原因となる可能性が高くなることと、コードの書き方がバラつくためである。ダッシュボードを使用したGUIによる操作なら未然にエラーを防ぐことも可能なため上記コマンドでのマイグレーション操作よりも健全な開発が可能である。

参考