This repository has been archived on 2024-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
project/sql/delete_folder.sql

40 lines
805 B
MySQL
Raw Permalink Normal View History

2024-06-27 12:04:57 +00:00
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;