私はテーブルの「許可」を持っています
| user_id | object_id | readable | writable |
次のルールを使用して、指定されたobject_idが現在のuser_idからアクセスできるかどうかを確認する必要があります。
- object_idのレコードがまったくない場合は、true を返します
- 指定されたuser_idのレコードがなくても、object_idのレコードはあるが異なるuser_idのレコードがある場合は、 false を返します。
- 指定されたuser_idおよびobject_idのレコードがある場合は、指定された読み取りおよび書き込み可能な条件を再度確認します
ネストされたクエリを含まないSQLクエリを構築できるかどうかはわかりませんが、今のところ
select (
select count(*)
from permission
where
object_id = 123456
) == 0 OR (
select readable=true, writable=false
from permission
where user_id=1 and object_id=123456
)
よりエレガントなソリューションはありますか?
ありがとう!