Update function to bypass RLS

This commit is contained in:
gpt-engineer-app[bot]
2025-11-04 01:12:12 +00:00
parent 71b174fe16
commit dbe5ec2a07

View File

@@ -0,0 +1,57 @@
-- Update claim_specific_submission function to bypass RLS
CREATE OR REPLACE FUNCTION public.claim_specific_submission(
p_submission_id UUID,
p_moderator_id UUID,
p_lock_duration INTERVAL DEFAULT '15 minutes'
) RETURNS BOOLEAN
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = public
AS $$
DECLARE
rows_updated INTEGER;
BEGIN
-- Temporarily disable RLS for this transaction
SET LOCAL row_security = off;
-- Atomically update the submission if it's unclaimed or lock expired
UPDATE content_submissions
SET
assigned_to = p_moderator_id,
assigned_at = NOW(),
locked_until = NOW() + p_lock_duration,
first_reviewed_at = COALESCE(first_reviewed_at, NOW())
WHERE id = p_submission_id
AND (
assigned_to IS NULL
OR locked_until < NOW()
)
AND status = 'pending';
GET DIAGNOSTICS rows_updated = ROW_COUNT;
-- Re-enable RLS (will auto-reset at end of transaction anyway)
SET LOCAL row_security = on;
-- Log the action if successful
IF rows_updated > 0 THEN
BEGIN
PERFORM log_admin_action(
p_moderator_id,
(SELECT user_id FROM content_submissions WHERE id = p_submission_id),
'submission_claimed',
jsonb_build_object(
'submission_id', p_submission_id,
'claim_type', 'specific'
)
);
EXCEPTION WHEN OTHERS THEN
RAISE WARNING 'Failed to log submission claim audit: %', SQLERRM;
END;
RETURN TRUE;
END IF;
RETURN FALSE;
END;
$$;