supabaseとFlutterFLow色々

FlutterFlowでAPIコールを設定するときに、クエリパラメーターを渡すタブはあるが、パスパラメーターはどうやって埋め込むねん。
と思っていたら既にAPI URLを入れる箇所のプレースホルダーに記載のサンプルがあった。
url/[path_parameter] でよさげらしい。
そしてpath_parameter をVariablesに登録しておいてやればよい。

FlutterFlowでsupabaseのEdge Functionsを呼び出すとき
ヘッダーにAuthorization : Bearer [anon_key] 入れるとapikeyがヘッダーにないよ!というエラーが返ってきた。
chatGPTになんで?と聞くとapikey: [anon_key] という形でヘッダーに入れろと言われたので言う通りにしたら通った。
============
追記 どうやらAuthorizationヘッダーもいるようである。
apikeyにはsupabaseの認証キー(anon key)、Authorization Headerにはユーザーの認証キーを入れるとのこと。

supabase edge functionでAPIを作ったものの、FlutterFlowから叩くと200にはなるが、データが返ってこないと思ったらRLSがtrueになっていたのでデータが返って来てなかった。
selectができるようポリシーを作成したら通るようになった。

メモ
DataTableウィジェットに対してAPIから取得したデータを入れたいのだが、やり方がわからんので調査する。

画像をFlutterFlowからsupabase strageに対してアップロードしたいのだが、うまく動作しないので要調査。
==追記============
バケットポリシーをinsert設定していないだけだった。

FlutterFlowからsupabaseに対してテーブルをジョインしてデータを引き出したいのだが、Edge FunctionかDatabase functionを使うしかないのだろうか。。もっと手軽にやりたいのだが、、、
Database functionは上手く扱えなかったのでしゃーなしでEdge functionを使っている。

supabase-jsでテーブルをjoinしてデータを取得する方法
ちょっと困ったのでメモ
const { data, error } = await supabase
.from('table')
.select(`
colummn_name,
joined_table (
colummn_name
)
`)
という具合にすればよいのだが、joinしたテーブルから2個以上カラム指定するとエラーになる。何故。
追記
const { data, error } = await supabase
.from('table')
.select(`
colummn_name,
joined_table (
column_name_1,
column_name_2
)
`)
という具合に書いたら通った。
const { data, error } = await supabase
.from('table')
.select(`
colummn_name,
joined_table (
column_name_1
),
joined_table (
column_name_2
)
`)
という感じでjoinしたテーブル2回書いてしまっていたので動かなかった模様。
発行されるクエリを考えればそれはそうである。

supbase edge functionsの環境変数名
supabase edge functionsを使っていて、stripeでの決済処理を作っているのだが、stripeのAPIキーを環境変数から読み込めず困っていた。
どうやらenvファイルを置く場所を間違えていたようで、supabase/functions/.env に置くと、supabase startしたときにロードしてくれるらしい。
トップレベルにおいていたので、どうやら読み込んでくれていなかった模様。
ちなみに、
SUPABASE_URL、SUPABASE_ANON_KEY、SUPABASE_SERVICE_ROLE_KEY、SUPABASE_DB_URL
などはデフォルトでアクセス可能らしいので、envをどこに置くとか関係ないっぽい。
ちなみに、変数名をSUPABASE_で始めると怒られるので注意。エンドポイントのURLをSUPABASE_URLのようにしていたら起動できなかった。

FlutteFlowでアラートを出す
FlutterFlowで管理画面を作っており、データの作成などした際に何の反応もないとまずいのでアラートを出す。
Action Flow Editorを開き
Insert Rowのブロック下の+ボタンを押し、Add Actionを選びInoformation Dialogを選択する
Titile ValueをInsert時の名前など(Widget StateのText Fieldなど)好きなデータを入れ、Message Valueに「作成しました」などを入れると
こういうアラートが出るようになる。
おそらくAction Blockの順番を入れ替えることで、「作成しますか?」系のダイアログを表示し、ユーザーがはいを押すと、Insert Rowするようなものも作れると思われる。
できることなら、Backend CallのInsert Rowが成功した場合は正常系のアラート、失敗した場合は異常系アラートを出す。ようなことがしたいがその方法はわからなかった。(そもそもそんな分岐を作れるかも不明)

supabaseでauth.usersにroleを付与したい
管理画面を作る必要があり、ユーザーにroleを付与したい。
custom-claimにroleをadminなりmanagerなりで登録して、tableのRLSでその権限を見るようにすればOK。
でもよく見たら、auth.usersテーブルにroleってカラムもあるのでどちらを使えばいいのかはなぞ。