mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 06:11:11 -05:00
Fix: Resolve audit log constraint violation
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
-- Fix auto_create_entity_version function to handle system updates without user context
|
||||
CREATE OR REPLACE FUNCTION public.auto_create_entity_version()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path TO 'public'
|
||||
AS $function$
|
||||
DECLARE
|
||||
v_entity_type TEXT;
|
||||
v_change_type version_change_type;
|
||||
v_user_id UUID;
|
||||
v_version_data JSONB;
|
||||
BEGIN
|
||||
-- Determine entity type from table name
|
||||
v_entity_type := CASE TG_TABLE_NAME
|
||||
WHEN 'parks' THEN 'park'
|
||||
WHEN 'rides' THEN 'ride'
|
||||
WHEN 'companies' THEN 'company'
|
||||
WHEN 'ride_models' THEN 'ride_model'
|
||||
WHEN 'photos' THEN 'photo'
|
||||
ELSE substring(TG_TABLE_NAME from 1 for length(TG_TABLE_NAME) - 1)
|
||||
END;
|
||||
|
||||
-- Determine change type
|
||||
v_change_type := CASE TG_OP
|
||||
WHEN 'INSERT' THEN 'created'::version_change_type
|
||||
WHEN 'UPDATE' THEN 'updated'::version_change_type
|
||||
ELSE 'updated'::version_change_type
|
||||
END;
|
||||
|
||||
-- Get user from session or auth context
|
||||
BEGIN
|
||||
v_user_id := current_setting('app.current_user_id', true)::UUID;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
v_user_id := auth.uid();
|
||||
END;
|
||||
|
||||
-- Convert NEW record to JSONB
|
||||
v_version_data := to_jsonb(NEW);
|
||||
|
||||
-- Only create version if we have a user context
|
||||
-- Skip versioning for system migrations/updates
|
||||
IF v_user_id IS NOT NULL THEN
|
||||
PERFORM public.create_entity_version(
|
||||
v_entity_type,
|
||||
NEW.id,
|
||||
v_version_data,
|
||||
v_user_id,
|
||||
CASE TG_OP
|
||||
WHEN 'INSERT' THEN 'Entity created'
|
||||
WHEN 'UPDATE' THEN 'Entity updated'
|
||||
ELSE 'Entity modified'
|
||||
END,
|
||||
NULL,
|
||||
v_change_type
|
||||
);
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$function$;
|
||||
Reference in New Issue
Block a user