Started work on permissions
This commit is contained in:
8
sql/get_all_permissions_for_folder.sql
Normal file
8
sql/get_all_permissions_for_folder.sql
Normal file
@ -0,0 +1,8 @@
|
||||
SELECT
|
||||
username,
|
||||
permission_type as "permission_type: PermissionRaw"
|
||||
FROM
|
||||
permissions
|
||||
INNER JOIN users ON permissions.user_id = users.user_id
|
||||
WHERE
|
||||
folder_id = $1
|
15
sql/get_permissions_for_folder.sql
Normal file
15
sql/get_permissions_for_folder.sql
Normal file
@ -0,0 +1,15 @@
|
||||
SELECT
|
||||
permission_type as "permission_type: PermissionRaw"
|
||||
FROM
|
||||
permissions
|
||||
WHERE
|
||||
folder_id = $1
|
||||
AND user_id = $2
|
||||
UNION
|
||||
SELECT
|
||||
'manage' as "permission_type: PermissionRaw"
|
||||
FROM
|
||||
folders
|
||||
WHERE
|
||||
folder_id = $1
|
||||
AND owner_id = $2
|
24
sql/insert_permission.sql
Normal file
24
sql/insert_permission.sql
Normal file
@ -0,0 +1,24 @@
|
||||
WITH RECURSIVE folder_hierarchy AS (
|
||||
-- Start with the given directory
|
||||
SELECT
|
||||
folder_id
|
||||
FROM
|
||||
folders
|
||||
WHERE
|
||||
folder_id = $1
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- Recursively find all subdirectories
|
||||
SELECT
|
||||
f.folder_id
|
||||
FROM
|
||||
folders f
|
||||
INNER JOIN
|
||||
folder_hierarchy fh ON f.parent_folder_id = fh.folder_id
|
||||
)
|
||||
INSERT INTO permissions(user_id, folder_id, permission_type)
|
||||
SELECT $2::integer as user_id, fh.folder_id::UUID as folder_id, $3
|
||||
FROM folder_hierarchy fh
|
||||
ON CONFLICT (user_id, folder_id) DO UPDATE
|
||||
SET permission_type = $3
|
Reference in New Issue
Block a user