Open4

Supabase で DB の型情報を自動生成する

出力されるファイルの中の definitions にテーブル情報が格納されている

例えば Users テーブルなら以下。not nullを指定していないカラムは optional になる

export interface definitions {
  users: {
    /**
     * Note:
     * This is a Primary Key.<pk/>
     */
    id: number
    username: string
    avatar: string
    created_at?: string
    updated_at?: string
  }
}

なお、DB からの返り値(supabase.from(table).select())のオブジェクトのキー名を camel case に変換したい場合、camelcase-keysを使えばいい。

https://www.npmjs.com/package/camelcase-keys

なお、ネスト内も変換したい場合は、以下のような便利関数を作れば良い

import camelcaseKeys from 'camelcase-keys'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const camelizeDeeply = <T extends Record<string, any> | readonly any[]>(arg: T) =>
  camelcaseKeys(arg, { deep: true })
ログインするとコメントできます