Files
thrilltrack-explorer/supabase/migrations/20251104022431_fbf4dd7a-da9e-4207-b988-ce85c04ff627.sql
2025-11-04 02:24:46 +00:00

62 lines
1.6 KiB
PL/PgSQL

-- Fix log_moderation_action to write to relational moderation_audit_metadata table
-- Removes reference to non-existent metadata column
CREATE OR REPLACE FUNCTION public.log_moderation_action(
_submission_id UUID,
_action TEXT,
_previous_status TEXT DEFAULT NULL,
_new_status TEXT DEFAULT NULL,
_notes TEXT DEFAULT NULL,
_metadata JSONB DEFAULT '{}'::jsonb
)
RETURNS UUID
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = public
AS $$
DECLARE
_log_id UUID;
_metadata_record record;
BEGIN
-- Insert into moderation_audit_log (without metadata JSONB column)
INSERT INTO public.moderation_audit_log (
submission_id,
moderator_id,
action,
previous_status,
new_status,
notes
) VALUES (
_submission_id,
auth.uid(),
_action,
_previous_status,
_new_status,
_notes
)
RETURNING id INTO _log_id;
-- Write metadata to relational moderation_audit_metadata table
IF _metadata IS NOT NULL AND jsonb_typeof(_metadata) = 'object' THEN
FOR _metadata_record IN
SELECT key, value::text as text_value
FROM jsonb_each_text(_metadata)
LOOP
INSERT INTO public.moderation_audit_metadata (
audit_log_id,
metadata_key,
metadata_value
) VALUES (
_log_id,
_metadata_record.key,
_metadata_record.text_value
);
END LOOP;
END IF;
RETURN _log_id;
END;
$$;
COMMENT ON FUNCTION public.log_moderation_action(UUID, TEXT, TEXT, TEXT, TEXT, JSONB) IS
'Logs moderation actions with metadata stored relationally in moderation_audit_metadata table';