[server][core][sql] Manual TrashCompact query

This commit is contained in:
Abhishek Shroff
2025-03-21 13:39:18 +05:30
parent 570285353d
commit bb45d8b9ce
2 changed files with 7 additions and 88 deletions
-37
View File
@@ -1,40 +1,3 @@
-- name: SoftDelete :exec
WITH RECURSIVE nodes(id, parent) AS (
SELECT r.id, r.parent
FROM resources r
WHERE
CASE @preserve_root::boolean
WHEN TRUE THEN r.parent = @id::uuid
ELSE r.id = @id::uuid
END
UNION ALL
SELECT r.id, r.parent
FROM resources r JOIN nodes n on r.parent = n.id
WHERE deleted IS NULL
)
UPDATE resources
SET modified = NOW(), deleted = NOW()
FROM nodes
WHERE nodes.id = resources.id;
-- name: HardDelete :many
WITH RECURSIVE nodes(id, parent) AS (
SELECT r.id, r.parent
FROM resources r
WHERE
CASE @preserve_root::boolean
WHEN TRUE THEN r.parent = @id::uuid
ELSE r.id = @id::uuid
END
UNION ALL
SELECT r.id, r.parent
FROM resources r JOIN nodes n on r.parent = n.id
WHERE deleted IS NULL
)
DELETE FROM resources
WHERE id IN (SELECT id FROM nodes)
RETURNING id, dir;
-- name: TrashCompact :many
DELETE FROM resources WHERE deleted < @t::TIMESTAMP RETURNING id, dir;