aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_save_consent_master
Parameters
Name
Type
Mode
data
jsonb
IN
Definition
DECLARE v_state TEXT; v_message TEXT; v_detail TEXT; v_hint TEXT; v_context TEXT; v_c record; v_id int; BEGIN SELECT * INTO v_c FROM jsonb_to_record(data) AS c( id int, consent_key text, is_required bool, is_active bool, version text ); IF v_c.consent_key IS NULL OR btrim(v_c.consent_key) = '' THEN RETURN fn_result_error('60301', sys_msg('60301', 'consent_key is required')); END IF; IF v_c.id IS NULL OR v_c.id < 1 THEN IF EXISTS (SELECT 1 FROM public.consent_master WHERE consent_key = v_c.consent_key) THEN RETURN fn_result_error('60302', sys_msg('60302', 'consent_key already exists')); END IF; INSERT INTO public.consent_master (consent_key, is_required, is_active, version) VALUES (v_c.consent_key, COALESCE(v_c.is_required, false), COALESCE(v_c.is_active, true), COALESCE(v_c.version, '1.0')) RETURNING id INTO v_id; ELSE IF EXISTS ( SELECT 1 FROM public.consent_master WHERE consent_key = v_c.consent_key AND id <> v_c.id ) THEN RETURN fn_result_error('60302', sys_msg('60302', 'consent_key already exists')); END IF; UPDATE public.consent_master SET consent_key = v_c.consent_key, is_required = COALESCE(v_c.is_required, is_required), is_active = COALESCE(v_c.is_active, is_active), version = COALESCE(v_c.version, version) WHERE id = v_c.id RETURNING id INTO v_id; IF v_id IS NULL THEN RETURN fn_result_error('60303', sys_msg('60303', 'Consent item not found')); END IF; END IF; RETURN fn_result_success( (SELECT row_to_json(c) FROM public.consent_master c WHERE c.id = v_id) ); EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS v_state = RETURNED_SQLSTATE, v_message = MESSAGE_TEXT, v_detail = PG_EXCEPTION_DETAIL, v_hint = PG_EXCEPTION_HINT, v_context = PG_EXCEPTION_CONTEXT; RETURN fn_handle_error(v_state, v_message, v_detail, v_hint, v_context, 'sp_save_consent_master', data); END