У меня есть база данных postgreSQL с таблицей entities
со столбцом permissions
типа jsonb
. permissions
- это массив разрешений. Каждое разрешение имеет массив principals
и operation
. Фактический JSON столбца permissions
для конкретной сущности может выглядеть, например, следующим образом:
[
{
"principals": [
"Administrators",
"Users"
],
"operation": "read"
},
{
"principals": [
"Administrators"
],
"operation": "write"
}
]
Теперь я хочу получить все сущности, которые имеют «Редакторы» или «Гости» читать "разрешение. Но единственный синтаксис, который я могу придумать, это приведенный ниже, где я запрашиваю только first разрешение (индекс = 0) сущностей:
SELECT * FROM entities WHERE permissions->0->'principals' ?| array['Editors', 'Guests'] and permissions->0->>'operation' = 'read'
Как изменить этот запрос содержать все разрешения организации?