Initial commit
This commit is contained in:
39
sql/delete_folder.sql
Normal file
39
sql/delete_folder.sql
Normal file
@ -0,0 +1,39 @@
|
||||
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
|
||||
),
|
||||
deleted_files AS (
|
||||
-- Delete the files and return their IDs
|
||||
DELETE FROM
|
||||
files
|
||||
WHERE
|
||||
folder_id IN (SELECT folder_id FROM folder_hierarchy)
|
||||
RETURNING file_id
|
||||
),
|
||||
deleted_folders AS (
|
||||
-- Delete the directories
|
||||
DELETE FROM
|
||||
folders
|
||||
WHERE
|
||||
folder_id IN (SELECT folder_id FROM folder_hierarchy)
|
||||
)
|
||||
-- Return the IDs of deleted files
|
||||
SELECT
|
||||
file_id
|
||||
FROM
|
||||
deleted_files;
|
Reference in New Issue
Block a user