From 6333047257b235363138c88fa186d668b4d1b324 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Thu, 30 Dec 2021 19:02:54 +0100 Subject: [PATCH] Simplify processing (no context, based on name, no ROWID) --- packages/app_actions.spec.sql | 20 +++++++------- packages/app_actions.sql | 50 +++++++++++++++++++---------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/packages/app_actions.spec.sql b/packages/app_actions.spec.sql index b7ef0b8..1eb2b54 100644 --- a/packages/app_actions.spec.sql +++ b/packages/app_actions.spec.sql @@ -154,15 +154,15 @@ CREATE OR REPLACE PACKAGE app_actions AS -- Store/update settings -- PROCEDURE set_setting ( - in_action CHAR, - in_out_rowid IN OUT NOCOPY VARCHAR2, - in_name settings.setting_name%TYPE, - in_context settings.setting_context%TYPE := NULL, - in_group settings.setting_group%TYPE := NULL, - in_value settings.setting_value%TYPE := NULL, - in_description settings.description_%TYPE := NULL, - in_is_numeric settings.is_numeric%TYPE := NULL, - in_is_date settings.is_date%TYPE := NULL + in_action CHAR, + in_setting_name_old settings.setting_name%TYPE, + in_setting_name settings.setting_name%TYPE, + in_setting_group settings.setting_group%TYPE := NULL, + in_setting_value settings.setting_value%TYPE := NULL, + in_is_numeric settings.is_numeric%TYPE := NULL, + in_is_date settings.is_date%TYPE := NULL, + in_description settings.description_%TYPE := NULL + ); ); @@ -175,7 +175,7 @@ CREATE OR REPLACE PACKAGE app_actions AS -- - -- + -- Prepare pivot for Settings page -- PROCEDURE prep_settings_pivot ( in_page_id apex_application_pages.page_id%TYPE diff --git a/packages/app_actions.sql b/packages/app_actions.sql index 405ee87..9977353 100644 --- a/packages/app_actions.sql +++ b/packages/app_actions.sql @@ -370,37 +370,36 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS PROCEDURE set_setting ( - in_action CHAR, - in_out_rowid IN OUT NOCOPY VARCHAR2, - in_name settings.setting_name%TYPE, - in_context settings.setting_context%TYPE := NULL, - in_group settings.setting_group%TYPE := NULL, - in_value settings.setting_value%TYPE := NULL, - in_description settings.description_%TYPE := NULL, - in_is_numeric settings.is_numeric%TYPE := NULL, - in_is_date settings.is_date%TYPE := NULL + in_action CHAR, + in_setting_name_old settings.setting_name%TYPE, + in_setting_name settings.setting_name%TYPE, + in_setting_group settings.setting_group%TYPE := NULL, + in_setting_value settings.setting_value%TYPE := NULL, + in_is_numeric settings.is_numeric%TYPE := NULL, + in_is_date settings.is_date%TYPE := NULL, + in_description settings.description_%TYPE := NULL ) AS rec settings%ROWTYPE; BEGIN - app.log_module(app.get_json_object( + app.log_module(in_args => app.get_json_object( 'in_action', in_action, - 'in_rowid', in_out_rowid, - 'in_name', in_name, - 'in_context', in_context, - 'in_value', in_value, + 'in_name_old', in_setting_name_old, + 'in_name', in_setting_name, + 'in_value', in_setting_value, + 'in_group', in_setting_group, 'in_is_numeric', in_is_numeric, 'in_is_date', in_is_date )); -- rec.app_id := app.get_app_id(); - rec.setting_name := RTRIM(RTRIM(UPPER(in_name))); - rec.setting_context := RTRIM(RTRIM(in_context)); - rec.setting_group := in_group; - rec.setting_value := in_value; - rec.description_ := in_description; + rec.setting_name := UPPER(in_setting_name); + rec.setting_value := in_setting_value; + rec.setting_context := NULL; + rec.setting_group := in_setting_group; rec.is_numeric := in_is_numeric; rec.is_date := in_is_date; + rec.description_ := in_description; rec.updated_by := app.get_user_id(); rec.updated_at := SYSDATE; -- @@ -408,22 +407,27 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS WHEN 'D' THEN DELETE FROM settings s WHERE s.app_id = rec.app_id - AND ROWID = in_out_rowid; + AND s.setting_name = in_setting_name_old; -- WHEN 'U' THEN UPDATE settings s SET ROW = rec WHERE s.app_id = rec.app_id - AND ROWID = in_out_rowid; + AND s.setting_name = in_setting_name_old + AND s.setting_context IS NULL; -- IF SQL%ROWCOUNT = 0 THEN app.raise_error('SETTINGS_UPDATE_FAILED'); END IF; + -- + UPDATE settings s + SET s.setting_name = rec.setting_name + WHERE s.app_id = rec.app_id + AND s.setting_name = in_setting_name_old; -- ELSE BEGIN - INSERT INTO settings VALUES rec - RETURNING ROWID INTO in_out_rowid; + INSERT INTO settings VALUES rec; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN app.raise_error('SETTINGS_EXISTS');