Simplify Apps table

This commit is contained in:
Jan Kvetina 2022-01-25 18:37:25 +01:00
parent f5a954b8d2
commit f7a6dfd609
3 changed files with 29 additions and 55 deletions

View File

@ -296,8 +296,9 @@ CREATE OR REPLACE PACKAGE BODY app AS
AS AS
PRAGMA AUTONOMOUS_TRANSACTION; PRAGMA AUTONOMOUS_TRANSACTION;
-- --
v_is_active users.is_active%TYPE; v_app_id apps.app_id%TYPE;
v_user_login users.user_login%TYPE; v_user_login users.user_login%TYPE;
v_is_active users.is_active%TYPE;
rec sessions%ROWTYPE; rec sessions%ROWTYPE;
BEGIN BEGIN
--app.log_module(); --app.log_module();
@ -316,48 +317,33 @@ CREATE OR REPLACE PACKAGE BODY app AS
RETURN; RETURN;
END IF; END IF;
-- check app availability -- create app record if developers login
IF NOT app.is_developer() THEN BEGIN
BEGIN SELECT a.app_id INTO v_app_id
SELECT a.is_active INTO v_is_active FROM apps a
FROM apps a WHERE a.app_id = rec.app_id;
WHERE a.app_id = rec.app_id EXCEPTION
AND a.is_active = 'Y'; WHEN NO_DATA_FOUND THEN
EXCEPTION app.log_warning('CREATING_APP', rec.app_id);
WHEN NO_DATA_FOUND THEN --
app.raise_error('APPLICATION_OFFLINE'); INSERT INTO apps (app_id, updated_by, updated_at)
END; SELECT
ELSE a.application_id,
-- create app record if developers login rec.user_id,
BEGIN rec.updated_at
SELECT a.is_active INTO v_is_active FROM apex_applications a
FROM apps a WHERE a.application_id = rec.app_id;
WHERE a.app_id = rec.app_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
app.log_warning('CREATING_APP', rec.app_id);
--
INSERT INTO apps (app_id, app_name, is_active, updated_by, updated_at)
SELECT
a.application_id,
a.application_name,
'Y',
rec.user_id,
rec.updated_at
FROM apex_applications a
WHERE a.application_id = rec.app_id;
-- also add first pages into Navigation table -- also add first pages into Navigation table
app_actions.nav_autoupdate(); app_actions.nav_autoupdate();
-- --
UPDATE navigation n UPDATE navigation n
SET n.order# = CASE SET n.order# = CASE
WHEN n.page_id = 0 THEN 599 WHEN n.page_id = 0 THEN 599
ELSE TO_NUMBER(SUBSTR(TO_CHAR(n.page_id), 1, 3)) ELSE TO_NUMBER(SUBSTR(TO_CHAR(n.page_id), 1, 3))
END END
WHERE n.app_id = rec.app_id; WHERE n.app_id = rec.app_id;
END; END;
END IF;
-- adjust user_id in APEX, init session -- adjust user_id in APEX, init session
DBMS_SESSION.CLEAR_IDENTIFIER(); DBMS_SESSION.CLEAR_IDENTIFIER();

View File

@ -1,11 +1,8 @@
--DROP TABLE apps CASCADE CONSTRAINTS; --DROP TABLE apps CASCADE CONSTRAINTS;
CREATE TABLE apps ( CREATE TABLE apps (
app_id NUMBER(4) CONSTRAINT nn_apps_app_id NOT NULL, app_id NUMBER(4) CONSTRAINT nn_apps_app_id NOT NULL,
app_name VARCHAR2(32),
-- --
description_ VARCHAR2(1000), description_ VARCHAR2(1000),
message VARCHAR2(256),
is_active CHAR(1),
is_visible CHAR(1), is_visible CHAR(1),
-- --
updated_by VARCHAR2(30), updated_by VARCHAR2(30),
@ -14,9 +11,6 @@ CREATE TABLE apps (
CONSTRAINT pk_apps CONSTRAINT pk_apps
PRIMARY KEY (app_id), PRIMARY KEY (app_id),
-- --
CONSTRAINT ch_apps_is_active
CHECK (is_active = 'Y' OR is_active IS NULL),
--
CONSTRAINT ch_apps_is_visible CONSTRAINT ch_apps_is_visible
CHECK (is_visible = 'Y' OR is_visible IS NULL) CHECK (is_visible = 'Y' OR is_visible IS NULL)
) )
@ -25,9 +19,6 @@ STORAGE (BUFFER_POOL KEEP);
COMMENT ON TABLE apps IS '[CORE] List of apps'; COMMENT ON TABLE apps IS '[CORE] List of apps';
-- --
COMMENT ON COLUMN apps.app_id IS 'APEX application ID'; COMMENT ON COLUMN apps.app_id IS 'APEX application ID';
COMMENT ON COLUMN apps.app_name IS 'Application name'; COMMENT ON COLUMN apps.description_ IS 'Description, until I know how to edit documentation_banner';
COMMENT ON COLUMN apps.description_ IS 'Description';
COMMENT ON COLUMN apps.message IS 'Announcement to users when taking app for maintenance';
COMMENT ON COLUMN apps.is_active IS 'Flag to deny access to app to users (not developers)';
COMMENT ON COLUMN apps.is_visible IS 'Flag to show app in list of apps even if user dont have role there'; COMMENT ON COLUMN apps.is_visible IS 'Flag to show app in list of apps even if user dont have role there';

View File

@ -31,7 +31,6 @@ t AS (
FROM navigation n FROM navigation n
JOIN apps a JOIN apps a
ON a.app_id = n.app_id ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x CROSS JOIN x
LEFT JOIN apex_application_pages p LEFT JOIN apex_application_pages p
ON p.application_id = n.app_id ON p.application_id = n.app_id
@ -119,7 +118,6 @@ SELECT
FROM navigation n FROM navigation n
JOIN apps a JOIN apps a
ON a.app_id = n.app_id ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x CROSS JOIN x
LEFT JOIN t LEFT JOIN t
ON t.app_id = n.app_id ON t.app_id = n.app_id
@ -192,7 +190,6 @@ SELECT
FROM nav_pages_to_add n FROM nav_pages_to_add n
JOIN apps a JOIN apps a
ON a.app_id = n.app_id ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x CROSS JOIN x
LEFT JOIN t LEFT JOIN t
ON t.app_id = n.app_id ON t.app_id = n.app_id