mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-12 15:18:38 -05:00
WIP: AFilesystem
This commit is contained in:
@@ -1,13 +1,26 @@
|
||||
|
||||
-- name: PermissionsForResource :one
|
||||
-- name: ResourceByIdWithPermissions :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.user_id = @user_id::int
|
||||
FROM resources r
|
||||
LEFT JOIN permissions p
|
||||
on r.id = p.resource_id
|
||||
AND p.user_id = @user_id::int
|
||||
WHERE r.id = @resource_id::uuid
|
||||
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.user_id = @user_id::int
|
||||
FROM resources r
|
||||
JOIN nodes n
|
||||
ON r.id = n.parent
|
||||
LEFT JOIN permissions p
|
||||
ON r.id = p.resource_id AND p.user_id = @user_id::int
|
||||
WHERE r.parent = @root::uuid
|
||||
OR r.parent = '00000000-0000-0000-0000-000000000000'
|
||||
)
|
||||
SELECT * FROM nodes WHERE parent IS NULL;
|
||||
SELECT * FROM nodes n
|
||||
JOIN resources r
|
||||
ON n.id = r.id
|
||||
WHERE n.parent = @root::uuid;
|
||||
|
||||
-- name: UpdatePermissionsForResource :exec
|
||||
INSERT INTO permissions(resource_id, user_id, permission)
|
||||
|
||||
Reference in New Issue
Block a user