Get_setting moved + removed hardcoding from view
This commit is contained in:
parent
272eff371f
commit
cb3389109c
@ -73,6 +73,10 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
logs_table_name CONSTANT VARCHAR2(30) := 'LOGS'; -- used in purge_old
|
logs_table_name CONSTANT VARCHAR2(30) := 'LOGS'; -- used in purge_old
|
||||||
logs_max_age CONSTANT PLS_INTEGER := 7; -- max logs age in days
|
logs_max_age CONSTANT PLS_INTEGER := 7; -- max logs age in days
|
||||||
|
|
||||||
|
-- settings
|
||||||
|
settings_package CONSTANT VARCHAR2(30) := 'S'; -- S### (app_id)
|
||||||
|
settings_prefix CONSTANT VARCHAR2(30) := 'GET_';
|
||||||
|
|
||||||
-- owner of DML error tables
|
-- owner of DML error tables
|
||||||
dml_tables_owner CONSTANT VARCHAR2(30) := NULL; -- NULL = same as current owner
|
dml_tables_owner CONSTANT VARCHAR2(30) := NULL; -- NULL = same as current owner
|
||||||
dml_tables_prefix CONSTANT VARCHAR2(30) := ''; -- ERR$
|
dml_tables_prefix CONSTANT VARCHAR2(30) := ''; -- ERR$
|
||||||
@ -276,6 +280,33 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Get value from Settings table
|
||||||
|
--
|
||||||
|
FUNCTION get_setting (
|
||||||
|
in_name settings.setting_name%TYPE,
|
||||||
|
in_context settings.setting_context%TYPE := NULL
|
||||||
|
)
|
||||||
|
RETURN settings.setting_value%TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Get settings package name
|
||||||
|
--
|
||||||
|
FUNCTION get_settings_package
|
||||||
|
RETURN VARCHAR2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Get settings function prefix
|
||||||
|
--
|
||||||
|
FUNCTION get_settings_prefix
|
||||||
|
RETURN VARCHAR2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -369,6 +369,69 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
APEX_APPLICATION.G_DEBUG := in_status;
|
APEX_APPLICATION.G_DEBUG := in_status;
|
||||||
|
DBMS_OUTPUT.PUT_LINE('DEBUG: ' || CASE WHEN app.is_debug_on() THEN 'ON' ELSE 'OFF' END);
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION get_setting (
|
||||||
|
in_name settings.setting_name%TYPE,
|
||||||
|
in_context settings.setting_context%TYPE := NULL
|
||||||
|
)
|
||||||
|
RETURN settings.setting_value%TYPE
|
||||||
|
AS
|
||||||
|
out_value settings.setting_value%TYPE;
|
||||||
|
BEGIN
|
||||||
|
SELECT s.setting_value INTO out_value
|
||||||
|
FROM settings s
|
||||||
|
WHERE s.app_id = app.get_app_id()
|
||||||
|
AND s.setting_name = in_name
|
||||||
|
AND (s.setting_context = in_context
|
||||||
|
OR (
|
||||||
|
s.setting_context IS NULL
|
||||||
|
AND in_context IS NULL
|
||||||
|
)
|
||||||
|
);
|
||||||
|
--
|
||||||
|
RETURN out_value;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
BEGIN
|
||||||
|
SELECT s.setting_value INTO out_value
|
||||||
|
FROM settings s
|
||||||
|
JOIN setting_contexts c
|
||||||
|
ON c.app_id = s.app_id
|
||||||
|
AND c.context_id = in_context
|
||||||
|
WHERE s.app_id = app.get_app_id()
|
||||||
|
AND s.setting_name = in_name
|
||||||
|
AND s.setting_context IS NULL;
|
||||||
|
--
|
||||||
|
RETURN out_value;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION get_settings_package
|
||||||
|
RETURN VARCHAR2
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
RETURN CASE
|
||||||
|
WHEN app.get_app_id() > 0
|
||||||
|
THEN UPPER(app.settings_package) || app.get_app_id()
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION get_settings_prefix
|
||||||
|
RETURN VARCHAR2
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
RETURN UPPER(app.settings_prefix);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -29,9 +29,6 @@ CREATE OR REPLACE PACKAGE app_actions AS
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
settings_package CONSTANT VARCHAR2(30) := 'SETT';
|
|
||||||
settings_prefix CONSTANT VARCHAR2(30) := 'get_';
|
|
||||||
|
|
||||||
-- for sending emails
|
-- for sending emails
|
||||||
smtp_from CONSTANT VARCHAR2(200) := '';
|
smtp_from CONSTANT VARCHAR2(200) := '';
|
||||||
smtp_username CONSTANT VARCHAR2(50) := NULL;
|
smtp_username CONSTANT VARCHAR2(50) := NULL;
|
||||||
@ -196,17 +193,6 @@ CREATE OR REPLACE PACKAGE app_actions AS
|
|||||||
-- ### Settings page
|
-- ### Settings page
|
||||||
--
|
--
|
||||||
|
|
||||||
--
|
|
||||||
-- Get value from Settings table
|
|
||||||
--
|
|
||||||
FUNCTION get_setting (
|
|
||||||
in_name settings.setting_name%TYPE,
|
|
||||||
in_context settings.setting_context%TYPE := NULL
|
|
||||||
)
|
|
||||||
RETURN settings.setting_value%TYPE;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Store/update settings
|
-- Store/update settings
|
||||||
--
|
--
|
||||||
|
|||||||
@ -412,47 +412,6 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
FUNCTION get_setting (
|
|
||||||
in_name settings.setting_name%TYPE,
|
|
||||||
in_context settings.setting_context%TYPE := NULL
|
|
||||||
)
|
|
||||||
RETURN settings.setting_value%TYPE
|
|
||||||
AS
|
|
||||||
out_value settings.setting_value%TYPE;
|
|
||||||
BEGIN
|
|
||||||
SELECT s.setting_value INTO out_value
|
|
||||||
FROM settings s
|
|
||||||
WHERE s.app_id = app.get_app_id()
|
|
||||||
AND s.setting_name = in_name
|
|
||||||
AND (s.setting_context = in_context
|
|
||||||
OR (
|
|
||||||
s.setting_context IS NULL
|
|
||||||
AND in_context IS NULL
|
|
||||||
)
|
|
||||||
);
|
|
||||||
--
|
|
||||||
RETURN out_value;
|
|
||||||
EXCEPTION
|
|
||||||
WHEN NO_DATA_FOUND THEN
|
|
||||||
BEGIN
|
|
||||||
SELECT s.setting_value INTO out_value
|
|
||||||
FROM settings s
|
|
||||||
JOIN setting_contexts c
|
|
||||||
ON c.app_id = s.app_id
|
|
||||||
AND c.context_id = in_context
|
|
||||||
WHERE s.app_id = app.get_app_id()
|
|
||||||
AND s.setting_name = in_name
|
|
||||||
AND s.setting_context IS NULL;
|
|
||||||
--
|
|
||||||
RETURN out_value;
|
|
||||||
EXCEPTION
|
|
||||||
WHEN NO_DATA_FOUND THEN
|
|
||||||
RETURN NULL;
|
|
||||||
END;
|
|
||||||
END;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE set_setting (
|
PROCEDURE set_setting (
|
||||||
in_action CHAR,
|
in_action CHAR,
|
||||||
in_setting_name_old settings.setting_name%TYPE,
|
in_setting_name_old settings.setting_name%TYPE,
|
||||||
@ -692,10 +651,14 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
BEGIN
|
BEGIN
|
||||||
app.log_module();
|
app.log_module();
|
||||||
--
|
--
|
||||||
|
IF app.get_settings_package() IS NULL THEN
|
||||||
|
RETURN;
|
||||||
|
END IF;
|
||||||
|
--
|
||||||
app.refresh_user_source_views();
|
app.refresh_user_source_views();
|
||||||
--
|
--
|
||||||
q := 'CREATE OR REPLACE PACKAGE ' || LOWER(settings_package) || ' AS' || CHR(10);
|
q := 'CREATE OR REPLACE PACKAGE ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10);
|
||||||
b := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(settings_package) || ' AS' || CHR(10);
|
b := 'CREATE OR REPLACE PACKAGE BODY ' || LOWER(app.get_settings_package()) || ' AS' || CHR(10);
|
||||||
--
|
--
|
||||||
FOR c IN (
|
FOR c IN (
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
@ -703,12 +666,13 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
s.is_numeric,
|
s.is_numeric,
|
||||||
s.is_date
|
s.is_date
|
||||||
FROM settings s
|
FROM settings s
|
||||||
WHERE s.setting_context IS NULL
|
WHERE s.app_id = app.get_app_id()
|
||||||
|
AND s.setting_context IS NULL
|
||||||
ORDER BY s.setting_name
|
ORDER BY s.setting_name
|
||||||
) LOOP
|
) LOOP
|
||||||
-- create specification
|
-- create specification
|
||||||
q := q || CHR(10);
|
q := q || CHR(10);
|
||||||
q := q || ' FUNCTION ' || LOWER(settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
q := q || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
||||||
q := q || ' in_context settings.setting_context%TYPE := NULL' || CHR(10);
|
q := q || ' in_context settings.setting_context%TYPE := NULL' || CHR(10);
|
||||||
q := q || ' )' || CHR(10);
|
q := q || ' )' || CHR(10);
|
||||||
q := q || ' RETURN ' || CASE
|
q := q || ' RETURN ' || CASE
|
||||||
@ -719,7 +683,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
|
|
||||||
-- create package body
|
-- create package body
|
||||||
b := b || CHR(10);
|
b := b || CHR(10);
|
||||||
b := b || ' FUNCTION ' || LOWER(settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
b := b || ' FUNCTION ' || LOWER(app.settings_prefix) || LOWER(c.setting_name) || ' (' || CHR(10);
|
||||||
b := b || ' in_context settings.setting_context%TYPE := NULL' || CHR(10);
|
b := b || ' in_context settings.setting_context%TYPE := NULL' || CHR(10);
|
||||||
b := b || ' )' || CHR(10);
|
b := b || ' )' || CHR(10);
|
||||||
b := b || ' RETURN ' || CASE
|
b := b || ' RETURN ' || CASE
|
||||||
@ -731,7 +695,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
b := b || ' RETURN ' || CASE
|
b := b || ' RETURN ' || CASE
|
||||||
WHEN c.is_numeric = 'Y' THEN 'TO_NUMBER('
|
WHEN c.is_numeric = 'Y' THEN 'TO_NUMBER('
|
||||||
WHEN c.is_date = 'Y' THEN 'app.get_date('
|
WHEN c.is_date = 'Y' THEN 'app.get_date('
|
||||||
END || 'app_actions.get_setting (' || CHR(10);
|
END || 'app.get_setting (' || CHR(10);
|
||||||
b := b || ' in_name => ''' || c.setting_name || ''',' || CHR(10);
|
b := b || ' in_name => ''' || c.setting_name || ''',' || CHR(10);
|
||||||
b := b || ' in_context => in_context' || CHR(10);
|
b := b || ' in_context => in_context' || CHR(10);
|
||||||
b := b || ' ' || CASE
|
b := b || ' ' || CASE
|
||||||
@ -750,7 +714,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
EXECUTE IMMEDIATE b;
|
EXECUTE IMMEDIATE b;
|
||||||
--
|
--
|
||||||
recompile (
|
recompile (
|
||||||
in_name => 'SETT',
|
in_name => app.get_settings_package(),
|
||||||
in_force => TRUE
|
in_force => TRUE
|
||||||
);
|
);
|
||||||
--
|
--
|
||||||
@ -764,6 +728,9 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
WHEN app.app_exception THEN
|
WHEN app.app_exception THEN
|
||||||
RAISE;
|
RAISE;
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
|
app.log_debug(q); -- trimmed
|
||||||
|
app.log_debug(b); -- trimmed
|
||||||
|
--
|
||||||
app.raise_error();
|
app.raise_error();
|
||||||
END;
|
END;
|
||||||
|
|
||||||
@ -785,7 +752,6 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
|||||||
v_query := v_query || 'SELECT' || CHR(10);
|
v_query := v_query || 'SELECT' || CHR(10);
|
||||||
v_query := v_query || ' s.setting_name,' || CHR(10);
|
v_query := v_query || ' s.setting_name,' || CHR(10);
|
||||||
v_query := v_query || ' MAX(s.setting_group) AS setting_group,' || CHR(10);
|
v_query := v_query || ' MAX(s.setting_group) AS setting_group,' || CHR(10);
|
||||||
--
|
|
||||||
v_query := v_query || ' MAX(CASE WHEN s.setting_context IS NULL THEN s.setting_value END) AS null__,' || CHR(10);
|
v_query := v_query || ' MAX(CASE WHEN s.setting_context IS NULL THEN s.setting_value END) AS null__,' || CHR(10);
|
||||||
--
|
--
|
||||||
FOR c IN (
|
FOR c IN (
|
||||||
|
|||||||
@ -38,7 +38,7 @@ COMPOUND TRIGGER
|
|||||||
:NEW.updated_at := curr_updated_at;
|
:NEW.updated_at := curr_updated_at;
|
||||||
|
|
||||||
-- check name
|
-- check name
|
||||||
IF NOT REGEXP_LIKE(:NEW.setting_name, '^[A-Z0-9_]{1,' || TO_CHAR(30 - NVL(LENGTH(app_actions.settings_prefix), 0)) || '}$') THEN
|
IF NOT REGEXP_LIKE(:NEW.setting_name, '^[A-Z0-9_]{1,' || TO_CHAR(30 - NVL(LENGTH(app.settings_prefix), 0)) || '}$') THEN
|
||||||
app.raise_error('WRONG_NAME', :NEW.setting_name);
|
app.raise_error('WRONG_NAME', :NEW.setting_name);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
CREATE OR REPLACE VIEW settings_overview AS
|
CREATE OR REPLACE VIEW settings_overview AS
|
||||||
WITH x AS (
|
WITH x AS (
|
||||||
SELECT /*+ MATERIALIZE */
|
SELECT /*+ MATERIALIZE */
|
||||||
UPPER('SETT') AS package_name, -- @TODO: app_actions spec
|
app.get_settings_package() AS package_name,
|
||||||
UPPER('GET_') AS prefix,
|
app.get_settings_prefix() AS prefix,
|
||||||
app.get_item('$SETTING_NAME') AS setting_name,
|
app.get_item('$SETTING_NAME') AS setting_name,
|
||||||
app.get_app_id() AS app_id
|
app.get_app_id() AS app_id
|
||||||
FROM DUAL
|
FROM DUAL
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user