Merged in feature/add-deletes (pull request #214)
support delete for client, document and folder * support delete for client, document and folder * remove batch cancel conflict not used Approved-by: Jacob Mathison
This commit is contained in:
@@ -100,3 +100,56 @@ SELECT
|
||||
FROM documents d
|
||||
WHERE d.folderId = $1
|
||||
ORDER BY d.id;
|
||||
|
||||
-- name: GetFolderTreeIDs :many
|
||||
-- Get all folder IDs in a folder tree (recursive) for cascade delete operations
|
||||
WITH RECURSIVE folder_tree AS (
|
||||
SELECT id, path FROM folders WHERE id = @folder_id
|
||||
UNION ALL
|
||||
SELECT f.id, f.path FROM folders f
|
||||
JOIN folder_tree ft ON f.parentId = ft.id
|
||||
)
|
||||
SELECT id, path FROM folder_tree;
|
||||
|
||||
-- name: CountDocumentsInFolderTree :one
|
||||
-- Count documents in a folder tree to check before deletion without include_documents
|
||||
WITH RECURSIVE folder_tree AS (
|
||||
SELECT id FROM folders WHERE id = @folder_id
|
||||
UNION ALL
|
||||
SELECT f.id FROM folders f
|
||||
JOIN folder_tree ft ON f.parentId = ft.id
|
||||
)
|
||||
SELECT COUNT(*) FROM documents WHERE folderId IN (SELECT id FROM folder_tree);
|
||||
|
||||
-- name: GetDocumentIDsInFolderTree :many
|
||||
-- Get all document IDs in a folder tree for cascade deletion
|
||||
WITH RECURSIVE folder_tree AS (
|
||||
SELECT id FROM folders WHERE id = @folder_id
|
||||
UNION ALL
|
||||
SELECT f.id FROM folders f
|
||||
JOIN folder_tree ft ON f.parentId = ft.id
|
||||
)
|
||||
SELECT id FROM documents WHERE folderId IN (SELECT id FROM folder_tree);
|
||||
|
||||
-- name: DeleteDocumentUploadsInFolderTree :exec
|
||||
-- @sqlc-vet-disable
|
||||
-- Delete documentUploads rows that reference folders in the tree
|
||||
WITH RECURSIVE folder_tree AS (
|
||||
SELECT id FROM folders WHERE id = @folder_id
|
||||
UNION ALL
|
||||
SELECT f.id FROM folders f
|
||||
JOIN folder_tree ft ON f.parentId = ft.id
|
||||
)
|
||||
DELETE FROM documentUploads WHERE folder_id IN (SELECT id FROM folder_tree);
|
||||
|
||||
-- name: HardDeleteFolderTree :execrows
|
||||
-- @sqlc-vet-disable
|
||||
-- Delete all folders in the tree. PostgreSQL handles ordering within the CTE.
|
||||
-- Returns the number of rows deleted.
|
||||
WITH RECURSIVE folder_tree AS (
|
||||
SELECT id FROM folders WHERE id = @folder_id
|
||||
UNION ALL
|
||||
SELECT f.id FROM folders f
|
||||
JOIN folder_tree ft ON f.parentId = ft.id
|
||||
)
|
||||
DELETE FROM folders WHERE id IN (SELECT id FROM folder_tree);
|
||||
|
||||
Reference in New Issue
Block a user