platform-db/changesets/registry/procedures/p_format_sys_columns.sql (73 lines of code) (raw):

--liquibase formatted sql /* * Copyright 2021 EPAM Systems. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --changeset platform:p_format_sys_columns splitStatements:false stripComments:false runOnChange:true CREATE OR REPLACE PROCEDURE public.p_format_sys_columns(p_sys_key_val hstore, INOUT op_sys_hist hstore, INOUT op_sys_rcnt hstore) LANGUAGE plpgsql AS $procedure$ DECLARE l_curr_time TIMESTAMPTZ; -- l_curr_user TEXT; l_source_system TEXT; l_source_application TEXT; l_source_process TEXT; l_source_business_process_definition_id TEXT; l_source_business_process_instance_id TEXT; l_source_business_activity TEXT; l_source_business_activity_instance_id TEXT; l_digital_sign TEXT; l_digital_sign_derived TEXT; l_digital_sign_checksum TEXT; l_digital_sign_derived_checksum TEXT; -- l_source_system_id UUID; l_source_application_id UUID; l_source_process_id UUID; BEGIN -- IF NOT (p_sys_key_val ? 'curr_user') THEN RAISE EXCEPTION 'ERROR: Parameter "curr_user" doesn''t defined correctly' USING ERRCODE = '20001'; END IF; -- IF NOT (p_sys_key_val ? 'source_system') THEN RAISE EXCEPTION 'ERROR: Parameter "source_system" doesn''t defined correctly' USING ERRCODE = '20001'; END IF; -- IF NOT (p_sys_key_val ? 'source_application') THEN RAISE EXCEPTION 'ERROR: Parameter "source_application" doesn''t defined correctly' USING ERRCODE = '20001'; END IF; -- l_curr_time := now(); l_curr_user := p_sys_key_val -> 'curr_user'; --RAISE NOTICE '%, %', p_sys_key_val, l_curr_user; -- l_source_system := p_sys_key_val -> 'source_system'; l_source_application := p_sys_key_val -> 'source_application'; l_source_process := p_sys_key_val -> 'source_process'; l_source_business_process_definition_id := p_sys_key_val -> 'source_process_definition_id'; l_source_business_process_instance_id := p_sys_key_val -> 'source_process_instance_id'; l_source_business_activity := p_sys_key_val -> 'business_activity'; l_source_business_activity_instance_id := p_sys_key_val -> 'source_activity_instance_id'; -- l_digital_sign := p_sys_key_val -> 'digital_sign'; l_digital_sign_derived := p_sys_key_val -> 'digital_sign_derived'; -- l_digital_sign_checksum := p_sys_key_val -> 'ddm_digital_sign_checksum'; l_digital_sign_derived_checksum := p_sys_key_val -> 'ddm_digital_sign_derived_checksum'; -- l_source_system_id := f_get_source_data_id('ddm_source_system','system_id','system_name',l_source_system,true,l_curr_user); l_source_application_id := f_get_source_data_id('ddm_source_application','application_id','application_name',l_source_application,true,l_curr_user); -- IF l_source_process IS NOT NULL THEN l_source_process_id := f_get_source_data_id('ddm_source_business_process','business_process_id','business_process_name',l_source_process,true,l_curr_user); END IF; -- op_sys_hist := ( 'ddm_created_at=>"' || l_curr_time::text || '"' || ', ddm_created_by=>"' || l_curr_user || '"' || ', ddm_system_id=>"' || l_source_system_id || '"' || ', ddm_application_id=>"' || l_source_application_id || '"' || CASE WHEN l_source_process IS NOT NULL THEN ', ddm_business_process_id=>"' || l_source_process_id || '"' ELSE '' END || CASE WHEN l_source_business_process_definition_id IS NOT NULL THEN ', ddm_business_process_definition_id=>"' || l_source_business_process_definition_id || '"' ELSE '' END || CASE WHEN l_source_business_process_instance_id IS NOT NULL THEN ', ddm_business_process_instance_id=>"' || l_source_business_process_instance_id || '"' ELSE '' END || CASE WHEN l_source_business_activity IS NOT NULL THEN ', ddm_business_activity=>"' || l_source_business_activity || '"' ELSE '' END || CASE WHEN l_source_business_activity_instance_id IS NOT NULL THEN ', ddm_business_activity_instance_id=>"' || l_source_business_activity_instance_id || '"' ELSE '' END || CASE WHEN l_digital_sign IS NOT NULL THEN ', ddm_digital_sign=>"' || l_digital_sign || '"' ELSE '' END || CASE WHEN l_digital_sign_derived IS NOT NULL THEN ', ddm_digital_sign_derived=>"' || l_digital_sign_derived || '"' ELSE '' END || CASE WHEN l_digital_sign_checksum IS NOT NULL THEN ', ddm_digital_sign_checksum=>"' || l_digital_sign_checksum || '"' ELSE '' END || CASE WHEN l_digital_sign_derived_checksum IS NOT NULL THEN ', ddm_digital_sign_derived_checksum=>"' || l_digital_sign_derived_checksum || '"' ELSE '' END )::hstore; op_sys_rcnt := ( 'ddm_created_at=>"' || l_curr_time::text || '"' || ', ddm_created_by=>"' || l_curr_user || '"' || ', ddm_updated_at=>"' || l_curr_time::text || '"' || ', ddm_updated_by=>"' || l_curr_user || '"' )::hstore; CALL p_raise_notice(op_sys_hist::text); CALL p_raise_notice(op_sys_rcnt::text); END; $procedure$ SECURITY DEFINER SET search_path = registry, public, pg_temp;