リレーションシップ
テーブルの結合に関してですね。HasuraのWebコンソール上から設定できます。
- ユニークなどの外部キー制約の設定(Hasuraのリレーションでは必須になります。)
One to One(Object relationShip)
1:1の関係です。どちらのテーブルにも「Unique」制約をチェックをつけて、リレーションにて設定を行います。すると以下のGraphQL構文が使えます。
1 2 3 4 5 6 7 |
users { parent_id: uuid } parents { id: uuid } |
別テーブルのuuidを紐づけます。
One to Many(Array relationShip)
1:多の関係です。
1 2 3 4 5 6 7 |
users { parent_id: [] } parents { id: uuid } |
Many to Many
多:多の関係です。
1 2 3 4 5 6 7 8 |
users { parent_id: [] } parents { id: uuid frends: [] } |
中間テーブルを作るのが一般的です。
Permissions
admin
Hasuraでテーブル作成時にデフォルトで割り当てられているpermissionsです。フルアクセスということでCRUDが全てできるようになっています。
ユースケース
アプリケーションのユーザーの状態に応じてデータベースのテーブルをいじることができる権限を制御する目的で活用します。
- 管理者用の権限
- ログインしたユーザー用には特定テーブルのフルアクセスを許可するなど。
- ログインしていないユーザー用には一覧のselectのみを許可するなど。
設定項目
Row XXX permissions
without any checks
誰が作ったデータだとしてもCRUDできるようになります。
With custom check
CRUDできる条件を追加できます。(データを作った人しか見れないようにするなど)
Limit number of rows
また何件のみ取得させるなどの設定もできます。
Column XXX permissions
操作できるカラムを制限できます。全てのカラムを操作させたい場合は「all columns」などを選べば良いでしょう。
Column presets(INSERT、UPDATEのみ)
これは権限系というより自動操作系の処理になりますが、登録や更新された行に対して特定カラムに対して何か特殊な値を設定するというような操作をすることができます。
この記事へのコメントはありません。