40 lines
842 B
PL/PgSQL
Executable File
40 lines
842 B
PL/PgSQL
Executable File
-- Type: DO
|
|
-- Name: batch_delete_trash_items
|
|
-- Description: Create a function to batch delete library items in trash
|
|
|
|
BEGIN;
|
|
|
|
CREATE OR REPLACE PROCEDURE omnivore.batch_delete_trash_items(
|
|
num_days INT
|
|
)
|
|
LANGUAGE plpgsql AS $$
|
|
DECLARE
|
|
user_record RECORD;
|
|
user_cursor CURSOR FOR
|
|
SELECT
|
|
id
|
|
FROM
|
|
omnivore.user
|
|
WHERE
|
|
status = 'ACTIVE';
|
|
BEGIN
|
|
FOR user_record IN user_cursor LOOP
|
|
BEGIN
|
|
|
|
-- For Row Level Security
|
|
PERFORM omnivore.set_claims(user_record.id, 'omnivore_user');
|
|
|
|
DELETE FROM omnivore.library_item
|
|
WHERE
|
|
user_id = user_record.id
|
|
AND state = 'DELETED'
|
|
AND deleted_at < NOW() - INTERVAL '1 day' * num_days;
|
|
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
END
|
|
$$;
|
|
|
|
COMMIT;
|