Simplify processing (no context, based on name, no ROWID)

This commit is contained in:
Jan Kvetina 2021-12-30 19:02:54 +01:00
parent 2103fda90f
commit 6333047257
2 changed files with 37 additions and 33 deletions

View File

@ -154,15 +154,15 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- Store/update settings -- Store/update settings
-- --
PROCEDURE set_setting ( PROCEDURE set_setting (
in_action CHAR, in_action CHAR,
in_out_rowid IN OUT NOCOPY VARCHAR2, in_setting_name_old settings.setting_name%TYPE,
in_name settings.setting_name%TYPE, in_setting_name settings.setting_name%TYPE,
in_context settings.setting_context%TYPE := NULL, in_setting_group settings.setting_group%TYPE := NULL,
in_group settings.setting_group%TYPE := NULL, in_setting_value settings.setting_value%TYPE := NULL,
in_value settings.setting_value%TYPE := NULL, in_is_numeric settings.is_numeric%TYPE := NULL,
in_description settings.description_%TYPE := NULL, in_is_date settings.is_date%TYPE := NULL,
in_is_numeric settings.is_numeric%TYPE := NULL, in_description settings.description_%TYPE := NULL
in_is_date settings.is_date%TYPE := NULL );
); );
@ -175,7 +175,7 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- --
-- -- Prepare pivot for Settings page
-- --
PROCEDURE prep_settings_pivot ( PROCEDURE prep_settings_pivot (
in_page_id apex_application_pages.page_id%TYPE in_page_id apex_application_pages.page_id%TYPE

View File

@ -370,37 +370,36 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
PROCEDURE set_setting ( PROCEDURE set_setting (
in_action CHAR, in_action CHAR,
in_out_rowid IN OUT NOCOPY VARCHAR2, in_setting_name_old settings.setting_name%TYPE,
in_name settings.setting_name%TYPE, in_setting_name settings.setting_name%TYPE,
in_context settings.setting_context%TYPE := NULL, in_setting_group settings.setting_group%TYPE := NULL,
in_group settings.setting_group%TYPE := NULL, in_setting_value settings.setting_value%TYPE := NULL,
in_value settings.setting_value%TYPE := NULL, in_is_numeric settings.is_numeric%TYPE := NULL,
in_description settings.description_%TYPE := NULL, in_is_date settings.is_date%TYPE := NULL,
in_is_numeric settings.is_numeric%TYPE := NULL, in_description settings.description_%TYPE := NULL
in_is_date settings.is_date%TYPE := NULL
) )
AS AS
rec settings%ROWTYPE; rec settings%ROWTYPE;
BEGIN BEGIN
app.log_module(app.get_json_object( app.log_module(in_args => app.get_json_object(
'in_action', in_action, 'in_action', in_action,
'in_rowid', in_out_rowid, 'in_name_old', in_setting_name_old,
'in_name', in_name, 'in_name', in_setting_name,
'in_context', in_context, 'in_value', in_setting_value,
'in_value', in_value, 'in_group', in_setting_group,
'in_is_numeric', in_is_numeric, 'in_is_numeric', in_is_numeric,
'in_is_date', in_is_date 'in_is_date', in_is_date
)); ));
-- --
rec.app_id := app.get_app_id(); rec.app_id := app.get_app_id();
rec.setting_name := RTRIM(RTRIM(UPPER(in_name))); rec.setting_name := UPPER(in_setting_name);
rec.setting_context := RTRIM(RTRIM(in_context)); rec.setting_value := in_setting_value;
rec.setting_group := in_group; rec.setting_context := NULL;
rec.setting_value := in_value; rec.setting_group := in_setting_group;
rec.description_ := in_description;
rec.is_numeric := in_is_numeric; rec.is_numeric := in_is_numeric;
rec.is_date := in_is_date; rec.is_date := in_is_date;
rec.description_ := in_description;
rec.updated_by := app.get_user_id(); rec.updated_by := app.get_user_id();
rec.updated_at := SYSDATE; rec.updated_at := SYSDATE;
-- --
@ -408,22 +407,27 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
WHEN 'D' THEN WHEN 'D' THEN
DELETE FROM settings s DELETE FROM settings s
WHERE s.app_id = rec.app_id WHERE s.app_id = rec.app_id
AND ROWID = in_out_rowid; AND s.setting_name = in_setting_name_old;
-- --
WHEN 'U' THEN WHEN 'U' THEN
UPDATE settings s UPDATE settings s
SET ROW = rec SET ROW = rec
WHERE s.app_id = rec.app_id 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 IF SQL%ROWCOUNT = 0 THEN
app.raise_error('SETTINGS_UPDATE_FAILED'); app.raise_error('SETTINGS_UPDATE_FAILED');
END IF; 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 ELSE
BEGIN BEGIN
INSERT INTO settings VALUES rec INSERT INTO settings VALUES rec;
RETURNING ROWID INTO in_out_rowid;
EXCEPTION EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN WHEN DUP_VAL_ON_INDEX THEN
app.raise_error('SETTINGS_EXISTS'); app.raise_error('SETTINGS_EXISTS');