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

View File

@ -1,11 +1,8 @@
--DROP TABLE apps CASCADE CONSTRAINTS;
CREATE TABLE apps (
app_id NUMBER(4) CONSTRAINT nn_apps_app_id NOT NULL,
app_name VARCHAR2(32),
--
description_ VARCHAR2(1000),
message VARCHAR2(256),
is_active CHAR(1),
is_visible CHAR(1),
--
updated_by VARCHAR2(30),
@ -14,9 +11,6 @@ CREATE TABLE apps (
CONSTRAINT pk_apps
PRIMARY KEY (app_id),
--
CONSTRAINT ch_apps_is_active
CHECK (is_active = 'Y' OR is_active IS NULL),
--
CONSTRAINT ch_apps_is_visible
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 COLUMN apps.app_id IS 'APEX application ID';
COMMENT ON COLUMN apps.app_name IS 'Application name';
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.description_ IS 'Description, until I know how to edit documentation_banner';
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
JOIN apps a
ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x
LEFT JOIN apex_application_pages p
ON p.application_id = n.app_id
@ -119,7 +118,6 @@ SELECT
FROM navigation n
JOIN apps a
ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x
LEFT JOIN t
ON t.app_id = n.app_id
@ -192,7 +190,6 @@ SELECT
FROM nav_pages_to_add n
JOIN apps a
ON a.app_id = n.app_id
AND a.is_active = 'Y'
CROSS JOIN x
LEFT JOIN t
ON t.app_id = n.app_id