Open3

SupabaseのPosgreSQL 初心者備忘録 View ストアドプロシージャ

kazy_developerkazy_developer

まえおき

Supabaseを使用してflutterアプリを作ってます。
モバイル経験は少しばかりありますが、どうやら今までバックエンドを触る経験がなくDB周りは全くの初心者です。
アプリを作りながらSupabase触ってPostgreSQLも学ぶという開発駆動学習の独り言多めの振り返り用備忘録です。

kazy_developerkazy_developer

ビューとストアドプロシージャ

あるテーブルを作成したけど、一部のカラムをクライアント側に返したくないので非公開にしたいと思って調べてたらビューという仮想テーブルを作って公開するカラムを設定できるらしいというのを知った。

調べまくっても適材適所的な話で今の自分では判断しづらい。
きっとこういう問題は、後々運用後に現れるジワジワ系なのだと感じるが、
複雑なクエリや大規模なデータセットを扱わない場合、ビューを使用してもパフォーマンスに大きな影響はなさそうな気がするので一旦ビューで設定してみようと思う。

kazy_developerkazy_developer

ビューを作成

DROP VIEW IF EXISTS hoge_schema.hoge_view; -- 既存のビューがあれば削除
CREATE OR REPLACE VIEW hoge_schema.hoge_view AS
SELECT 
    NULL AS hidden1,      -- 一般ユーザーにはhidden1を隠蔽
    NULL AS hidden2,     -- 一般ユーザーにはhidden2を隠蔽
    id,
    huga,
    hoge,
FROM 
    hoge_schema.hoge_table
WHERE 
    id = auth.uid() -- 一般ユーザーは自分のデータのみ

ビューの名前を変更する

ALTER VIEW hoge_schema.hoge_view RENAME TO new_hoge_view;

作成→名前ミス→修正するところまではいけた。