マジでただのメモ。

ローカル開発用の supabase

ローカルに supabase を立ち上げて開発できる。

npx supabase start

上記を実行した際の出力に各種 URL やキーなどが含まれている。

テーブル定義の追加修正

  1. ./server/database/schema.ts を修正する
  2. npm run gen-ddlを実行する
    • ./supabase/migrations/にマイグレーションファイルが生成される
  3. (必要に応じて) npm run gen-ddl:customを実行して追加のマイグレーションファイルを作成する
    • ./supabase/migrations/に空のマイグレーションファイルが生成されるため、中身を追記する
    • RLS など Drizzle が対応していない内容を実装する
  4. 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"] # <- ここにカスタムスキーマを追加する

デプロイ

参考