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;
