マジでただのメモ。
ローカル開発用の supabase
ローカルに supabase を立ち上げて開発できる。
npx supabase start
上記を実行した際の出力に各種 URL やキーなどが含まれている。
テーブル定義の追加修正
- ./server/database/schema.ts を修正する
npm run gen-ddlを実行する- ./supabase/migrations/にマイグレーションファイルが生成される
- (必要に応じて)
npm run gen-ddl:customを実行して追加のマイグレーションファイルを作成する- ./supabase/migrations/に空のマイグレーションファイルが生成されるため、中身を追記する
- RLS など Drizzle が対応していない内容を実装する
npx supabase migration upを実行してマイグレーションを適用する
ローカル Supabase DB のリセット
https://supabase.com/docs/reference/cli/supabase-db-reset
npx supabase db reset
DB 定義の型生成
npx supabase gen types --lang=typescript --local --schema r_todo_app > ./app/types/database.types.ts
Nuxt Supabase 側で、app/types/database.types.ts に定義を置くとそれをクライアントに自動で渡してくれる。型安全に supabaseclient を使うことができる。
ローカル supabase におけるスキーマの expose
カスタムスキーマを作成してデータを取得しようとすると、↓ のようなエラーが発生する。
Only the following schemas are exposed: public, graphql_public
これは、カスタムスキーマはデフォルトでは API に公開されていないため。
↓ の手順には supabase コンソールからスキーマを expose する手順が記載されているが、ローカルの supabase では、その設定がない。
https://supabase.com/docs/guides/api/using-custom-schemas
代わりに、ローカル supabase におけるキューの expose 手順を参照して、config.toml の[api]に追加する。
https://supabase.com/docs/guides/queues/expose-self-hosted-queues
[api]
enabled = true
# Port to use for the API URL.
port = 54321
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
# endpoints. `public` and `graphql_public` schemas are included by default.
schemas = ["public", "graphql_public", "r_todo_app"] # <- ここにカスタムスキーマを追加する