mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-25 00:51:12 -05:00
Refactor: Update audit log functions
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
-- Update log_admin_action to write to relational admin_audit_details table
|
||||
CREATE OR REPLACE FUNCTION public.log_admin_action(
|
||||
_admin_user_id uuid,
|
||||
_target_user_id uuid,
|
||||
_action text,
|
||||
_details jsonb DEFAULT NULL
|
||||
)
|
||||
RETURNS void
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
SET search_path TO 'public'
|
||||
AS $$
|
||||
DECLARE
|
||||
v_audit_log_id uuid;
|
||||
v_detail_record record;
|
||||
BEGIN
|
||||
-- Insert into admin_audit_log (without details JSONB)
|
||||
INSERT INTO public.admin_audit_log (
|
||||
admin_user_id,
|
||||
target_user_id,
|
||||
action
|
||||
) VALUES (
|
||||
_admin_user_id,
|
||||
_target_user_id,
|
||||
_action
|
||||
)
|
||||
RETURNING id INTO v_audit_log_id;
|
||||
|
||||
-- Write details to relational admin_audit_details table
|
||||
IF _details IS NOT NULL AND jsonb_typeof(_details) = 'object' THEN
|
||||
FOR v_detail_record IN
|
||||
SELECT key, value::text as text_value
|
||||
FROM jsonb_each_text(_details)
|
||||
LOOP
|
||||
INSERT INTO public.admin_audit_details (
|
||||
audit_log_id,
|
||||
detail_key,
|
||||
detail_value
|
||||
) VALUES (
|
||||
v_audit_log_id,
|
||||
v_detail_record.key,
|
||||
v_detail_record.text_value
|
||||
);
|
||||
END LOOP;
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
Reference in New Issue
Block a user