Files
thrilltrack-explorer/supabase/migrations/20251012174240_5310dfde-5bd5-4fc0-82ce-93a8fac99807.sql
2025-10-12 17:42:55 +00:00

52 lines
1.9 KiB
PL/PgSQL

-- Fix the trigger function to use the anon key directly
CREATE OR REPLACE FUNCTION public.notify_moderators_on_new_submission()
RETURNS TRIGGER
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = public
AS $$
DECLARE
submitter_profile record;
function_url text;
anon_key text;
BEGIN
-- Get submitter's username or display name
SELECT username, display_name INTO submitter_profile
FROM public.profiles
WHERE user_id = NEW.user_id;
-- Build the function URL
function_url := 'https://ydvtmnrszybqnbcqbdcy.supabase.co/functions/v1/notify-moderators-submission';
-- Use the public anon key (this is safe, it's already public in the frontend)
anon_key := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InlkdnRtbnJzenlicW5iY3FiZGN5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTgzMjYzNTYsImV4cCI6MjA3MzkwMjM1Nn0.DM3oyapd_omP5ZzIlrT0H9qBsiQBxBRgw2tYuqgXKX4';
-- Call edge function asynchronously (doesn't block submission)
-- Using pg_net to make HTTP request without blocking
PERFORM net.http_post(
url := function_url,
headers := jsonb_build_object(
'Content-Type', 'application/json',
'Authorization', 'Bearer ' || anon_key,
'apikey', anon_key
),
body := jsonb_build_object(
'submission_id', NEW.id,
'submission_type', NEW.submission_type,
'submitter_name', COALESCE(submitter_profile.display_name, submitter_profile.username, 'Anonymous'),
'action', COALESCE((NEW.content->>'action')::text, 'create')
)
);
RETURN NEW;
EXCEPTION
WHEN OTHERS THEN
-- Log error but don't fail the submission
RAISE WARNING 'Failed to notify moderators: %', SQLERRM;
RETURN NEW;
END;
$$;
-- Add comment
COMMENT ON FUNCTION public.notify_moderators_on_new_submission() IS
'Automatically notifies all moderators via Novu when a new submission enters the moderation queue. Fixed to use anon key directly.';