WIP: Permissions

This commit is contained in:
Abhishek Shroff
2024-08-03 08:07:49 +05:30
parent 58b52feefa
commit ada63198a1
7 changed files with 96 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
-- name: PermissionsForResource :one
WITH RECURSIVE nodes(id, parent, permission) AS (
SELECT r.id, r.parent, p.permission
FROM resources r LEFT JOIN permissions p on r.id = p.resource_id WHERE r.id = @resource_id::uuid AND p.username = @username::text
UNION ALL
SELECT r.id, r.parent, CASE WHEN (n.permission IS NULL OR p.permission > n.permission) THEN p.permission ELSE n.permission END
FROM resources r JOIN nodes n ON r.id = n.parent LEFT JOIN permissions p ON r.id = p.resource_id AND p.username = @username::text
)
SELECT * FROM nodes WHERE parent IS NULL;

View File

@@ -80,4 +80,4 @@ WITH RECURSIVE nodes(id, parent) AS (
)
DELETE FROM resources
WHERE id in (SELECT id FROM nodes)
RETURNING id, dir;
RETURNING id, dir;