diff --git a/database/tables/apps.sql b/database/tables/apps.sql index cf2420e..5067c2e 100644 --- a/database/tables/apps.sql +++ b/database/tables/apps.sql @@ -1,22 +1,18 @@ ---DROP TABLE apps CASCADE CONSTRAINTS; CREATE TABLE apps ( - app_id NUMBER(4) CONSTRAINT nn_apps_app_id NOT NULL, - -- - description_ VARCHAR2(1000), - is_visible CHAR(1), - -- - updated_by VARCHAR2(30), - updated_at DATE, - -- - CONSTRAINT pk_apps - PRIMARY KEY (app_id), + app_id NUMBER(4,0) CONSTRAINT nn_apps_app_id NOT NULL, + description_ VARCHAR2(1000), + is_visible CHAR(1), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT ch_apps_is_visible - CHECK (is_visible = 'Y' OR is_visible IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + CHECK (is_visible = 'Y' OR is_visible IS NULL), + -- + CONSTRAINT pk_apps + PRIMARY KEY (app_id) +); -- -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.description_ IS 'Description, until I know how to edit documentation_banner'; diff --git a/database/tables/events.sql b/database/tables/events.sql index 38c6134..f60ce36 100644 --- a/database/tables/events.sql +++ b/database/tables/events.sql @@ -1,30 +1,25 @@ ---DROP TABLE logs_events PURGE; ---DROP TABLE events PURGE; CREATE TABLE events ( - app_id NUMBER(4) CONSTRAINT nn_events_app_id NOT NULL, - event_id VARCHAR2(30) CONSTRAINT nn_events_event_id NOT NULL, + app_id NUMBER(4,0) CONSTRAINT nn_events_app_id NOT NULL, + event_id VARCHAR2(30) CONSTRAINT nn_events_event_id NOT NULL, + event_name VARCHAR2(64), + event_group VARCHAR2(64), + description_ VARCHAR2(1000), + is_active CHAR(1), + updated_by VARCHAR2(30) DEFAULT NULL, + updated_at DATE, -- - event_name VARCHAR2(64), - event_group VARCHAR2(64), - description_ VARCHAR2(1000), - is_active CHAR(1), - -- - updated_by VARCHAR2(30), - updated_at DATE, + CONSTRAINT ch_events_is_active + CHECK (is_active = 'Y' OR is_active IS NULL), -- CONSTRAINT pk_events - PRIMARY KEY (app_id, event_id), + PRIMARY KEY (app_id, event_id) -- CONSTRAINT fk_events_app_id FOREIGN KEY (app_id) - REFERENCES apps (app_id), - -- - CONSTRAINT ch_events_is_active - CHECK (is_active = 'Y' OR is_active IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + REFERENCES apps (app_id) +); -- -COMMENT ON TABLE events IS '[CORE] List of events interesting for business'; +COMMENT ON TABLE events IS '[CORE] List of events interesting for business'; -- COMMENT ON COLUMN events.app_id IS 'APEX application ID'; COMMENT ON COLUMN events.event_id IS 'Event id'; diff --git a/database/tables/log_events.sql b/database/tables/log_events.sql index b7b800e..85e5567 100644 --- a/database/tables/log_events.sql +++ b/database/tables/log_events.sql @@ -1,20 +1,16 @@ ---DROP TABLE log_events PURGE; CREATE TABLE log_events ( - log_id INTEGER CONSTRAINT nn_log_events_log_id NOT NULL, - log_parent INTEGER, - -- - app_id NUMBER(4) CONSTRAINT nn_log_events_app_id NOT NULL, - page_id NUMBER(6) CONSTRAINT nn_log_events_page_id NOT NULL, - user_id VARCHAR2(30) CONSTRAINT nn_log_events_user_id NOT NULL, - session_id INTEGER CONSTRAINT nn_log_events_session_id NOT NULL, - -- - event_id VARCHAR2(30) CONSTRAINT nn_log_events_event_id NOT NULL, - event_value NUMBER, - -- - created_at DATE CONSTRAINT nn_log_events_created_at NOT NULL, + log_id INTEGER CONSTRAINT nn_log_events_log_id NOT NULL, + log_parent INTEGER, + app_id NUMBER(4,0) CONSTRAINT nn_log_events_app_id NOT NULL, + page_id NUMBER(6,0) CONSTRAINT nn_log_events_page_id NOT NULL, + user_id VARCHAR2(30) CONSTRAINT nn_log_events_user_id NOT NULL, + session_id INTEGER CONSTRAINT nn_log_events_session_id NOT NULL, + event_id VARCHAR2(30) CONSTRAINT nn_log_events_event_id NOT NULL, + event_value NUMBER, + created_at DATE CONSTRAINT nn_log_events_created_at NOT NULL, -- CONSTRAINT pk_log_events - PRIMARY KEY (log_id), + PRIMARY KEY (log_id) -- CONSTRAINT fk_log_events_event_id FOREIGN KEY (app_id, event_id) @@ -22,20 +18,18 @@ CREATE TABLE log_events ( -- CONSTRAINT fk_log_events_users FOREIGN KEY (user_id) - REFERENCES users (user_id) + REFERENCES users (user_id) DISABLE ); -- -ALTER TABLE log_events DISABLE CONSTRAINT fk_log_events_users; +COMMENT ON TABLE log_events IS '[CORE] List of business events'; -- -COMMENT ON TABLE log_events IS '[CORE] List of business events'; --- -COMMENT ON COLUMN log_events.log_id IS 'Log ID'; -COMMENT ON COLUMN log_events.log_parent IS 'Referenced log_id from LOGS table'; -COMMENT ON COLUMN log_events.app_id IS 'App'; -COMMENT ON COLUMN log_events.page_id IS 'Page'; -COMMENT ON COLUMN log_events.user_id IS 'User'; -COMMENT ON COLUMN log_events.session_id IS 'Session id'; -COMMENT ON COLUMN log_events.event_id IS 'Event code from EVENTS table'; -COMMENT ON COLUMN log_events.event_value IS 'Optional business value'; -COMMENT ON COLUMN log_events.created_at IS 'Datetime of the event'; +COMMENT ON COLUMN log_events.log_id IS 'Log ID'; +COMMENT ON COLUMN log_events.log_parent IS 'Referenced log_id from LOGS table'; +COMMENT ON COLUMN log_events.app_id IS 'App'; +COMMENT ON COLUMN log_events.page_id IS 'Page'; +COMMENT ON COLUMN log_events.user_id IS 'User'; +COMMENT ON COLUMN log_events.session_id IS 'Session id'; +COMMENT ON COLUMN log_events.event_id IS 'Event code from EVENTS table'; +COMMENT ON COLUMN log_events.event_value IS 'Optional business value'; +COMMENT ON COLUMN log_events.created_at IS 'Datetime of the event'; diff --git a/database/tables/logs.sql b/database/tables/logs.sql index 7d13175..6cac9e9 100644 --- a/database/tables/logs.sql +++ b/database/tables/logs.sql @@ -1,55 +1,34 @@ -/* -UPDATE sessions SET log_id = NULL; -UPDATE uploaded_file_sheets SET result_log_id = NULL; --- -DROP TABLE log_events PURGE; -DROP TABLE logs_blacklist PURGE; -DROP TABLE logs PURGE; --- -SELECT * FROM logs ORDER BY 1 DESC; -*/ CREATE TABLE logs ( - log_id INTEGER CONSTRAINT nn_logs_log_id NOT NULL, -- NUMBER GENERATED BY DEFAULT AS IDENTITY NOT NULL - log_parent INTEGER, - -- - app_id NUMBER(4) CONSTRAINT nn_logs_app_id NOT NULL, - page_id NUMBER(6), - user_id VARCHAR2(30), - flag CHAR(1) CONSTRAINT nn_logs_flag NOT NULL, - -- - action_name VARCHAR2(64), - module_name VARCHAR2(64), -- 48 chars, DBMS_APPLICATION_INFO limit - module_line NUMBER(8), - module_timer VARCHAR2(12), -- 00:00:00.000 - INTERVAL DAY(1) TO SECOND(3), - arguments VARCHAR2(2000), - payload VARCHAR2(4000), - -- - session_id INTEGER, - created_at TIMESTAMP CONSTRAINT nn_logs_created_at NOT NULL, + log_id INTEGER CONSTRAINT nn_logs_log_id NOT NULL, + log_parent INTEGER, + app_id NUMBER(4,0) CONSTRAINT nn_logs_app_id NOT NULL, + page_id NUMBER(6,0), + user_id VARCHAR2(30), + flag CHAR(1) CONSTRAINT nn_logs_flag NOT NULL, + action_name VARCHAR2(32), + module_name VARCHAR2(48), + module_line NUMBER(8,0), + module_timer VARCHAR2(12), + arguments VARCHAR2(2000), + payload VARCHAR2(4000), + session_id INTEGER, + created_at TIMESTAMP(6) CONSTRAINT nn_logs_created_at NOT NULL, -- CONSTRAINT pk_logs PRIMARY KEY (log_id) - -- - -- NO MORE CONSTRAINTS TO KEEP THIS AS FAST AS POSSIBLE - -- ) -PARTITION BY RANGE (created_at) -INTERVAL (NUMTODSINTERVAL(1, 'DAY')) ( - PARTITION P00 VALUES LESS THAN (TIMESTAMP '2021-01-01 00:00:00') -/* - --today VARCHAR2(10) CONSTRAINT nn_logs_today NOT NULL, -- virtual column? -PARTITION BY LIST (today, app_id) AUTOMATIC ( - PARTITION "P_20210101_0" VALUES (('2021-01-01', 0)) SEGMENT CREATION IMMEDIATE -*/ +PARTITION BY RANGE (created_at) INTERVAL (NUMTODSINTERVAL(1, 'DAY')) +( + PARTITION "SYS_P3208" VALUES LESS THAN (TIMESTAMP '2022-06-28 00:00:00') ); -- -COMMENT ON TABLE logs IS '[CORE] Various logs raised in application; daily partitions'; +COMMENT ON TABLE logs IS '[CORE] Various logs raised in application; daily partitions'; -- COMMENT ON COLUMN logs.log_id IS 'Log ID generated from LOG_ID sequence'; COMMENT ON COLUMN logs.log_parent IS 'Parent log record; dont use FK to avoid deadlocks'; COMMENT ON COLUMN logs.app_id IS 'APEX Application ID'; -COMMENT ON COLUMN logs.user_id IS 'User ID'; COMMENT ON COLUMN logs.page_id IS 'APEX Application PAGE ID'; +COMMENT ON COLUMN logs.user_id IS 'User ID'; COMMENT ON COLUMN logs.flag IS 'Type of error listed in tree package specification; FK missing for performance reasons'; COMMENT ON COLUMN logs.action_name IS 'Action name to distinguish position in module or use it as warning/error names'; COMMENT ON COLUMN logs.module_name IS 'Module name (procedure or function name)'; diff --git a/database/tables/logs_blacklist.sql b/database/tables/logs_blacklist.sql index a0b5c03..64e8bb2 100644 --- a/database/tables/logs_blacklist.sql +++ b/database/tables/logs_blacklist.sql @@ -1,17 +1,15 @@ ---DROP TABLE logs_blacklist CASCADE CONSTRAINTS PURGE; CREATE TABLE logs_blacklist ( - app_id NUMBER(4), -- CONSTRAINT nn_logs_blacklist_app_id NOT NULL, - flag CHAR(1), - user_id VARCHAR2(30), - page_id NUMBER(6), - module_like VARCHAR2(30), - action_like VARCHAR2(30), - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0), + flag CHAR(1), + user_id VARCHAR2(30), + page_id NUMBER(6,0), + module_like VARCHAR2(30), + action_like VARCHAR2(30), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT uq_logs_blacklist - UNIQUE (app_id, user_id, page_id, flag, module_like, action_like), + UNIQUE (app_id, user_id, page_id, flag, module_like, action_like) -- CONSTRAINT fk_logs_blacklist_app_id FOREIGN KEY (app_id) @@ -19,18 +17,15 @@ CREATE TABLE logs_blacklist ( -- CONSTRAINT fk_logs_blacklist_user_id FOREIGN KEY (user_id) - REFERENCES users (user_id) -) -STORAGE (BUFFER_POOL KEEP); + REFERENCES users (user_id) DISABLE +); -- -ALTER TABLE logs_blacklist DISABLE CONSTRAINT fk_logs_blacklist_user_id; --- -COMMENT ON TABLE logs_blacklist IS '[CORE] Define what logs will or wont be tracked'; +COMMENT ON TABLE logs_blacklist IS '[CORE] Define what logs will or wont be tracked'; -- COMMENT ON COLUMN logs_blacklist.app_id IS 'App ID'; COMMENT ON COLUMN logs_blacklist.flag IS 'Flag to differentiate logs, NULL = any flag'; -COMMENT ON COLUMN logs_blacklist.page_id IS 'APEX page ID, NULL = any page'; COMMENT ON COLUMN logs_blacklist.user_id IS 'User ID, NULL = any user'; +COMMENT ON COLUMN logs_blacklist.page_id IS 'APEX page ID, NULL = any page'; COMMENT ON COLUMN logs_blacklist.module_like IS 'Module name, NULL = any module'; COMMENT ON COLUMN logs_blacklist.action_like IS 'Action name, NULL = any module'; diff --git a/database/tables/mail_queue.sql b/database/tables/mail_queue.sql index 19b830d..c3f420c 100644 --- a/database/tables/mail_queue.sql +++ b/database/tables/mail_queue.sql @@ -1,29 +1,24 @@ ---DROP TABLE mail_queue PURGE; CREATE TABLE mail_queue ( - queue_id NUMBER(10) CONSTRAINT nn_mail_queue_queue_id NOT NULL, - app_id NUMBER(4) CONSTRAINT nn_mail_queue_app_id NOT NULL, - event_id VARCHAR2(30), - role_id VARCHAR2(30), - template_id VARCHAR2(30), - schedule_id VARCHAR2(30), - user_id VARCHAR2(30), - lang_id VARCHAR2(5), - -- - mail_recipient VARCHAR2(4000), -- mail headers - mail_cc VARCHAR2(4000), - mail_bcc VARCHAR2(4000), - mail_sender VARCHAR2(256), - mail_subject VARCHAR2(256), - mail_body CLOB, -- mail body - -- - -- @TODO: mail_attachments - -- - created_by VARCHAR2(30), - created_at DATE, - sent_at DATE, + queue_id NUMBER(10,0) CONSTRAINT nn_mail_queue_queue_id NOT NULL, + app_id NUMBER(4,0) CONSTRAINT nn_mail_queue_app_id NOT NULL, + event_id VARCHAR2(30), + role_id VARCHAR2(30), + template_id VARCHAR2(30), + schedule_id VARCHAR2(30), + user_id VARCHAR2(30), + lang_id VARCHAR2(5), + mail_recipient VARCHAR2(4000), + mail_cc VARCHAR2(4000), + mail_bcc VARCHAR2(4000), + mail_sender VARCHAR2(256), + mail_subject VARCHAR2(256), + mail_body CLOB, + created_by VARCHAR2(30), + created_at DATE, + sent_at DATE, -- CONSTRAINT pk_mail_queue - PRIMARY KEY (queue_id), + PRIMARY KEY (queue_id) -- CONSTRAINT fk_mail_queue_app_id FOREIGN KEY (app_id) @@ -38,7 +33,7 @@ CREATE TABLE mail_queue ( REFERENCES mail_subscriptions (app_id, event_id, role_id, schedule_id) ); -- -COMMENT ON TABLE mail_queue IS '[CORE] Queue with e-mails to track what was sent and when'; +COMMENT ON TABLE mail_queue IS '[CORE] Queue with e-mails to track what was sent and when'; -- COMMENT ON COLUMN mail_queue.queue_id IS 'Unique ID from queue_id sequence'; COMMENT ON COLUMN mail_queue.app_id IS 'APEX application ID'; @@ -48,14 +43,12 @@ COMMENT ON COLUMN mail_queue.template_id IS ''; COMMENT ON COLUMN mail_queue.schedule_id IS 'Schedule id'; COMMENT ON COLUMN mail_queue.user_id IS ''; COMMENT ON COLUMN mail_queue.lang_id IS ''; --- COMMENT ON COLUMN mail_queue.mail_recipient IS ''; COMMENT ON COLUMN mail_queue.mail_cc IS ''; COMMENT ON COLUMN mail_queue.mail_bcc IS ''; COMMENT ON COLUMN mail_queue.mail_sender IS ''; COMMENT ON COLUMN mail_queue.mail_subject IS 'E-mail subject'; COMMENT ON COLUMN mail_queue.mail_body IS 'E-mail body, can be generated by a process_function'; --- COMMENT ON COLUMN mail_queue.created_by IS 'User whi created the e-mail'; COMMENT ON COLUMN mail_queue.created_at IS 'Time of adding e-mail to the queue'; COMMENT ON COLUMN mail_queue.sent_at IS 'Time when e-mail was actually sent'; diff --git a/database/tables/mail_schedules.sql b/database/tables/mail_schedules.sql index 0166782..a73ae98 100644 --- a/database/tables/mail_schedules.sql +++ b/database/tables/mail_schedules.sql @@ -1,32 +1,16 @@ ---DROP TABLE mail_subscriptions PURGE; ---DROP TABLE mail_schedules PURGE; CREATE TABLE mail_schedules ( - app_id NUMBER(4) CONSTRAINT nn_mail_schedules_app_id NOT NULL, - schedule_id VARCHAR2(30) CONSTRAINT nn_mail_schedules_schedule_id NOT NULL, - schedule_group VARCHAR2(64), - description_ VARCHAR2(256), - -- - schedule_month VARCHAR2(128), - schedule_day VARCHAR2(128), - schedule_weekday VARCHAR2(128), - schedule_hour VARCHAR2(128), - schedule_minute VARCHAR2(128), - schedule_interval VARCHAR2(128), - -- - updated_by VARCHAR2(30), - updated_at DATE, - -- - CONSTRAINT pk_mail_schedules - PRIMARY KEY (app_id, schedule_id), - -- - CONSTRAINT ch_mail_schedules_month - CHECK (REGEXP_LIKE(schedule_month, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3}\s*)+|([A-Z]{3}[-,][A-Z]{3},?\s*)+$') OR schedule_month IS NULL), - -- - CONSTRAINT ch_mail_schedules_day - CHECK (REGEXP_LIKE(schedule_day, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+$') OR schedule_day IS NULL), - -- - CONSTRAINT ch_mail_schedules_weekday - CHECK (REGEXP_LIKE(schedule_weekday, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3},?\s*)+|([A-Z]{3}[-][A-Z]{3},?\s*)+$') OR schedule_weekday IS NULL), + app_id NUMBER(4,0) CONSTRAINT nn_mail_schedules_app_id NOT NULL, + schedule_id VARCHAR2(30) CONSTRAINT nn_mail_schedules_schedule_id NOT NULL, + schedule_group VARCHAR2(64), + description_ VARCHAR2(256), + schedule_month VARCHAR2(128), + schedule_day VARCHAR2(128), + schedule_weekday VARCHAR2(128), + schedule_hour VARCHAR2(128), + schedule_minute VARCHAR2(128), + schedule_interval VARCHAR2(128), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT ch_mail_schedules_hour CHECK (REGEXP_LIKE(schedule_hour, '^(\d+,?\s*)+|(\d+[-]\d,?\s*)+$') OR schedule_hour IS NULL), @@ -37,19 +21,31 @@ CREATE TABLE mail_schedules ( CONSTRAINT ch_mail_schedules_interval CHECK (REGEXP_LIKE(schedule_interval, '^(\d+)$') OR schedule_interval IS NULL), -- + CONSTRAINT pk_mail_schedules + PRIMARY KEY (app_id, schedule_id) + -- CONSTRAINT ch_mail_schedules_min_or_int - CHECK ((schedule_minute IS NULL AND schedule_interval IS NOT NULL) OR (schedule_minute IS NOT NULL AND schedule_interval IS NULL)) + CHECK ((schedule_minute IS NULL AND schedule_interval IS NOT NULL) OR (schedule_minute IS NOT NULL AND schedule_interval IS NULL)), + -- + CONSTRAINT ch_mail_schedules_day + CHECK (REGEXP_LIKE(schedule_day, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+$') OR schedule_day IS NULL), + -- + CONSTRAINT ch_mail_schedules_weekday + CHECK (REGEXP_LIKE(schedule_weekday, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3},?\s*)+|([A-Z]{3}[-][A-Z]{3},?\s*)+$') OR schedule_weekday IS NULL), + -- + CONSTRAINT ch_mail_schedules_month + CHECK (REGEXP_LIKE(schedule_month, '^(\d+,?\s*)|(\d+[-]\d+,?\s*)+|([A-Z]{3}\s*)+|([A-Z]{3}[-,][A-Z]{3},?\s*)+$') OR schedule_month IS NULL) ); -- -COMMENT ON TABLE mail_schedules IS '[CORE] mail_schedules...'; +COMMENT ON TABLE mail_schedules IS '[CORE] mail_schedules...'; -- COMMENT ON COLUMN mail_schedules.app_id IS 'APEX application ID'; COMMENT ON COLUMN mail_schedules.schedule_id IS 'Schedule id'; COMMENT ON COLUMN mail_schedules.schedule_group IS 'Group for better visibility'; COMMENT ON COLUMN mail_schedules.description_ IS 'Description'; COMMENT ON COLUMN mail_schedules.schedule_month IS 'Send at specific month, 1..12 for months, separate values with comma'; -COMMENT ON COLUMN mail_schedules.schedule_weekday IS 'Send at specific day in a week, 1..7 (MON..SUN), 1-5 possible'; COMMENT ON COLUMN mail_schedules.schedule_day IS 'Send at specific day of the month, 1..31'; +COMMENT ON COLUMN mail_schedules.schedule_weekday IS 'Send at specific day in a week, 1..7 (MON..SUN), 1-5 possible'; COMMENT ON COLUMN mail_schedules.schedule_hour IS 'Send at specific hour, 00..23, 8-17 is possible'; COMMENT ON COLUMN mail_schedules.schedule_minute IS 'Send at specific minute in an hour, 00..59'; COMMENT ON COLUMN mail_schedules.schedule_interval IS 'Send every 1..30 minutes, schedule_minute is ignored'; diff --git a/database/tables/mail_subscriptions.sql b/database/tables/mail_subscriptions.sql index f5b7c43..b6d5ad1 100644 --- a/database/tables/mail_subscriptions.sql +++ b/database/tables/mail_subscriptions.sql @@ -1,21 +1,21 @@ ---DROP TABLE mail_subscriptions PURGE; CREATE TABLE mail_subscriptions ( - app_id NUMBER(4) CONSTRAINT nn_mail_subscriptions_app_id NOT NULL, - event_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_event_id NOT NULL, - role_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_role_id NOT NULL, - schedule_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_schedule_id NOT NULL, - template_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_template_id NOT NULL, - eval_function VARCHAR2(64), -- to evaluate on each role user if to send or not + app_id NUMBER(4,0) CONSTRAINT nn_mail_subscriptions_app_id NOT NULL, + event_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_event_id NOT NULL, + role_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_role_id NOT NULL, + schedule_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_schedule_id NOT NULL, + template_id VARCHAR2(30) CONSTRAINT nn_mail_subscriptions_template_id NOT NULL, + eval_function VARCHAR2(64), + is_active CHAR(1), + processed_log_id NUMBER, + processed_at DATE, + updated_by VARCHAR2(30), + updated_at DATE, -- - is_active CHAR(1), - processed_log_id NUMBER, - processed_at DATE, - -- - updated_by VARCHAR2(30), - updated_at DATE, + CONSTRAINT ch_mail_subscriptions_is_active + CHECK (is_active = 'Y' OR is_active IS NULL), -- CONSTRAINT pk_mail_subscriptions - PRIMARY KEY (app_id, event_id, role_id, schedule_id), + PRIMARY KEY (app_id, event_id, role_id, schedule_id) -- CONSTRAINT fk_mail_subscriptions_event_id FOREIGN KEY (app_id, event_id) @@ -27,17 +27,10 @@ CREATE TABLE mail_subscriptions ( -- CONSTRAINT fk_mail_subscriptions_schedule_id FOREIGN KEY (app_id, schedule_id) - REFERENCES mail_schedules (app_id, schedule_id), - -- - --CONSTRAINT fk_mail_subscriptions_template_id - -- FOREIGN KEY (app_id, template_id) - -- REFERENCES mail_templates (app_id, template_id), -- we dont know the language - -- - CONSTRAINT ch_mail_subscriptions_is_active - CHECK (is_active = 'Y' OR is_active IS NULL) + REFERENCES mail_schedules (app_id, schedule_id) ); -- -COMMENT ON TABLE mail_subscriptions IS '[CORE] Subscriptions to events based on user roles'; +COMMENT ON TABLE mail_subscriptions IS '[CORE] Subscriptions to events based on user roles'; -- COMMENT ON COLUMN mail_subscriptions.app_id IS 'APEX application ID'; COMMENT ON COLUMN mail_subscriptions.event_id IS 'Event id'; diff --git a/database/tables/mail_templates.sql b/database/tables/mail_templates.sql index c7b27aa..ea9b14a 100644 --- a/database/tables/mail_templates.sql +++ b/database/tables/mail_templates.sql @@ -1,23 +1,20 @@ ---DROP TABLE mail_templates PURGE; CREATE TABLE mail_templates ( - app_id NUMBER(4) CONSTRAINT nn_mail_templates_app_id NOT NULL, - template_id VARCHAR2(30) CONSTRAINT nn_mail_templates_template_id NOT NULL, - lang_id VARCHAR2(5) CONSTRAINT nn_mail_templates_lang_id NOT NULL, - template_group VARCHAR2(64), - description_ VARCHAR2(256), - process_function VARCHAR2(64), -- to generate specific content - -- - mail_subject VARCHAR2(256), - mail_body CLOB, - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_mail_templates_app_id NOT NULL, + template_id VARCHAR2(30) CONSTRAINT nn_mail_templates_template_id NOT NULL, + lang_id VARCHAR2(5) CONSTRAINT nn_mail_templates_lang_id NOT NULL, + template_group VARCHAR2(64), + description_ VARCHAR2(256), + process_function VARCHAR2(64), + mail_subject VARCHAR2(256), + mail_body CLOB, + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT pk_mail_templates PRIMARY KEY (app_id, template_id, lang_id) ); -- -COMMENT ON TABLE mail_templates IS '[CORE] E-mail templates'; +COMMENT ON TABLE mail_templates IS '[CORE] E-mail templates'; -- COMMENT ON COLUMN mail_templates.app_id IS 'APEX application ID'; COMMENT ON COLUMN mail_templates.template_id IS 'Template id'; diff --git a/database/tables/navigation.sql b/database/tables/navigation.sql index 6d25740..39ad5bb 100644 --- a/database/tables/navigation.sql +++ b/database/tables/navigation.sql @@ -1,27 +1,13 @@ ---DROP TABLE navigation PURGE; CREATE TABLE navigation ( - app_id NUMBER(4) CONSTRAINT nn_navigation_app_id NOT NULL, - page_id NUMBER(6) CONSTRAINT nn_navigation_page_id NOT NULL, - -- - parent_id NUMBER(6), - order# NUMBER(4), - is_hidden CHAR(1), - is_reset CHAR(1), - is_shared CHAR(1), -- only for CORE app - -- - updated_by VARCHAR2(30), - updated_at DATE, - -- - CONSTRAINT pk_navigation - PRIMARY KEY (app_id, page_id), - -- - CONSTRAINT fk_navigation_app_id - FOREIGN KEY (app_id) - REFERENCES apps (app_id), - -- - CONSTRAINT fk_navigation_parent - FOREIGN KEY (app_id, parent_id) - REFERENCES navigation (app_id, page_id), + app_id NUMBER(4,0) CONSTRAINT nn_navigation_app_id NOT NULL, + page_id NUMBER(6,0) CONSTRAINT nn_navigation_page_id NOT NULL, + parent_id NUMBER(6,0), + order# NUMBER(4,0), + is_hidden CHAR(1), + is_reset CHAR(1), + is_shared CHAR(1), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT ch_navigation_is_hidden CHECK (is_hidden = 'Y' OR is_hidden IS NULL), @@ -29,12 +15,22 @@ CREATE TABLE navigation ( CONSTRAINT ch_navigation_is_reset CHECK (is_reset = 'Y' OR is_reset IS NULL), -- + CONSTRAINT pk_navigation + PRIMARY KEY (app_id, page_id) + -- CONSTRAINT ch_navigation_is_shared - CHECK (is_shared = 'Y' OR is_shared IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + CHECK (is_shared = 'Y' OR is_shared IS NULL), + -- + CONSTRAINT fk_navigation_app_id + FOREIGN KEY (app_id) + REFERENCES apps (app_id), + -- + CONSTRAINT fk_navigation_parent + FOREIGN KEY (app_id, parent_id) + REFERENCES navigation (app_id, page_id) +); -- -COMMENT ON TABLE navigation IS '[CORE] Navigation items'; +COMMENT ON TABLE navigation IS '[CORE] Navigation items'; -- COMMENT ON COLUMN navigation.app_id IS 'APEX application ID'; COMMENT ON COLUMN navigation.page_id IS 'APEX page ID'; diff --git a/database/tables/obj_views_source.sql b/database/tables/obj_views_source.sql index cc50093..9aed95d 100644 --- a/database/tables/obj_views_source.sql +++ b/database/tables/obj_views_source.sql @@ -1,15 +1,14 @@ ---DROP TABLE obj_views_source; CREATE TABLE obj_views_source ( - owner VARCHAR2(30) CONSTRAINT nn_obj_views_source_owner NOT NULL, - name VARCHAR2(30) CONSTRAINT nn_obj_views_source_name NOT NULL, - line NUMBER(10) CONSTRAINT nn_obj_views_source_line NOT NULL, - text VARCHAR2(2000), + owner VARCHAR2(30) CONSTRAINT nn_obj_views_source_owner NOT NULL, + name VARCHAR2(30) CONSTRAINT nn_obj_views_source_name NOT NULL, + line NUMBER(10,0) CONSTRAINT nn_obj_views_source_line NOT NULL, + text VARCHAR2(2000), -- CONSTRAINT pk_obj_views_source PRIMARY KEY (owner, name, line) ); -- -COMMENT ON TABLE obj_views_source IS '[CORE] User views source converted to lines'; +COMMENT ON TABLE obj_views_source IS '[CORE] User views source converted to lines'; -- COMMENT ON COLUMN obj_views_source.owner IS 'View owner'; COMMENT ON COLUMN obj_views_source.name IS 'View name'; diff --git a/database/tables/roles.sql b/database/tables/roles.sql index 8a255dd..c5ef446 100644 --- a/database/tables/roles.sql +++ b/database/tables/roles.sql @@ -1,36 +1,32 @@ ---DROP TABLE roles PURGE; CREATE TABLE roles ( - app_id NUMBER(4) CONSTRAINT nn_roles_app_id NOT NULL, - role_id VARCHAR2(30) CONSTRAINT nn_roles_role_id NOT NULL, - role_name VARCHAR2(64), - role_group VARCHAR2(64), + app_id NUMBER(4,0) CONSTRAINT nn_roles_app_id NOT NULL, + role_id VARCHAR2(30) CONSTRAINT nn_roles_role_id NOT NULL, + role_name VARCHAR2(64), + role_group VARCHAR2(64), + description_ VARCHAR2(1000), + is_active CHAR(1), + order# NUMBER(4,0), + updated_by VARCHAR2(30), + updated_at DATE, -- - description_ VARCHAR2(1000), - is_active CHAR(1), - order# NUMBER(4), - -- - updated_by VARCHAR2(30), - updated_at DATE, + CONSTRAINT ch_roles_is_active + CHECK (is_active = 'Y' OR is_active IS NULL), -- CONSTRAINT pk_roles - PRIMARY KEY (app_id, role_id), + PRIMARY KEY (app_id, role_id) -- CONSTRAINT fk_roles_app_id FOREIGN KEY (app_id) - REFERENCES apps (app_id), - -- - CONSTRAINT ch_roles_is_active - CHECK (is_active = 'Y' OR is_active IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + REFERENCES apps (app_id) +); -- -COMMENT ON TABLE roles IS '[CORE] List of roles'; +COMMENT ON TABLE roles IS '[CORE] List of roles'; -- -COMMENT ON COLUMN roles.app_id IS 'Application ID'; -COMMENT ON COLUMN roles.role_id IS 'Role ID'; -COMMENT ON COLUMN roles.role_name IS 'Role name'; -COMMENT ON COLUMN roles.role_group IS 'Role group just for grouping set in APEX'; -COMMENT ON COLUMN roles.description_ IS 'Description'; -COMMENT ON COLUMN roles.is_active IS 'Flag to disable role'; -COMMENT ON COLUMN roles.order# IS 'Roles order in any form of list/report'; +COMMENT ON COLUMN roles.app_id IS 'Application ID'; +COMMENT ON COLUMN roles.role_id IS 'Role ID'; +COMMENT ON COLUMN roles.role_name IS 'Role name'; +COMMENT ON COLUMN roles.role_group IS 'Role group just for grouping set in APEX'; +COMMENT ON COLUMN roles.description_ IS 'Description'; +COMMENT ON COLUMN roles.is_active IS 'Flag to disable role'; +COMMENT ON COLUMN roles.order# IS 'Roles order in any form of list/report'; diff --git a/database/tables/roles_e$.sql b/database/tables/roles_e$.sql new file mode 100644 index 0000000..6c216bc --- /dev/null +++ b/database/tables/roles_e$.sql @@ -0,0 +1,19 @@ +CREATE TABLE roles_e$ ( + ora_err_number$ NUMBER, + ora_err_mesg$ VARCHAR2(2000), + ora_err_rowid$ UROWID(4000), + ora_err_optyp$ VARCHAR2(2), + ora_err_tag$ VARCHAR2(2000), + app_id VARCHAR2(4000), + role_id VARCHAR2(32767), + role_name VARCHAR2(32767), + role_group VARCHAR2(32767), + description_ VARCHAR2(32767), + is_active VARCHAR2(32767), + order# VARCHAR2(4000), + updated_by VARCHAR2(32767), + updated_at VARCHAR2(4000) +); +-- +COMMENT ON TABLE roles_e$ IS 'DML Error Logging table for "CORE"."ROLES"'; + diff --git a/database/tables/sessions.sql b/database/tables/sessions.sql index bb65c76..d6aaa9a 100644 --- a/database/tables/sessions.sql +++ b/database/tables/sessions.sql @@ -1,14 +1,12 @@ ---DROP TABLE sessions PURGE; CREATE TABLE sessions ( - app_id NUMBER(4) CONSTRAINT nn_sessions_app_id NOT NULL, - session_id INTEGER CONSTRAINT nn_sessions_session_id NOT NULL, - user_id VARCHAR2(30) CONSTRAINT nn_sessions_user_id NOT NULL, - -- - created_at DATE CONSTRAINT nn_sessions_created_at NOT NULL, - updated_at DATE CONSTRAINT nn_sessions_updated_at NOT NULL, + app_id NUMBER(4,0) CONSTRAINT nn_sessions_app_id NOT NULL, + session_id INTEGER CONSTRAINT nn_sessions_session_id NOT NULL, + user_id VARCHAR2(30) CONSTRAINT nn_sessions_user_id NOT NULL, + created_at DATE CONSTRAINT nn_sessions_created_at NOT NULL, + updated_at DATE CONSTRAINT nn_sessions_updated_at NOT NULL, -- CONSTRAINT pk_sessions - PRIMARY KEY (app_id, session_id), + PRIMARY KEY (app_id, session_id) -- CONSTRAINT fk_sessions_app_id FOREIGN KEY (app_id) @@ -18,14 +16,13 @@ CREATE TABLE sessions ( FOREIGN KEY (user_id) REFERENCES users (user_id) DEFERRABLE INITIALLY DEFERRED -) -STORAGE (BUFFER_POOL KEEP); +); -- -COMMENT ON TABLE sessions IS '[CORE] List of sessions'; +COMMENT ON TABLE sessions IS '[CORE] List of sessions'; -- -COMMENT ON COLUMN sessions.app_id IS 'APEX application ID'; -COMMENT ON COLUMN sessions.session_id IS 'Session ID generated by APEX, used also in LOGS'; -COMMENT ON COLUMN sessions.user_id IS 'User ID'; -COMMENT ON COLUMN sessions.created_at IS 'Time of creation'; -COMMENT ON COLUMN sessions.updated_at IS 'Time of last update'; +COMMENT ON COLUMN sessions.app_id IS 'APEX application ID'; +COMMENT ON COLUMN sessions.session_id IS 'Session ID generated by APEX, used also in LOGS'; +COMMENT ON COLUMN sessions.user_id IS 'User ID'; +COMMENT ON COLUMN sessions.created_at IS 'Time of creation'; +COMMENT ON COLUMN sessions.updated_at IS 'Time of last update'; diff --git a/database/tables/setting_contexts.sql b/database/tables/setting_contexts.sql index b7c634b..1fe8540 100644 --- a/database/tables/setting_contexts.sql +++ b/database/tables/setting_contexts.sql @@ -1,28 +1,25 @@ ---DROP TABLE setting_contexts PURGE; CREATE TABLE setting_contexts ( - app_id NUMBER(4) CONSTRAINT nn_setting_contexts_app_id NOT NULL, - context_id VARCHAR2(64) CONSTRAINT nn_setting_contexts_name NOT NULL, - context_name VARCHAR2(64), - description_ VARCHAR2(1000), - order# NUMBER(4), - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_setting_contexts_app_id NOT NULL, + context_id VARCHAR2(64) CONSTRAINT nn_setting_contexts_name NOT NULL, + context_name VARCHAR2(64), + description_ VARCHAR2(1000), + order# NUMBER(4,0), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT uq_setting_contexts - UNIQUE (app_id, context_id), + UNIQUE (app_id, context_id) -- CONSTRAINT fk_setting_contexts_app_id FOREIGN KEY (app_id) REFERENCES apps (app_id) -) -STORAGE (BUFFER_POOL KEEP); +); -- -COMMENT ON TABLE setting_contexts IS '[CORE] List of contexts for settings overrides'; +COMMENT ON TABLE setting_contexts IS '[CORE] List of contexts for settings overrides'; -- -COMMENT ON COLUMN setting_contexts.app_id IS 'Application ID'; -COMMENT ON COLUMN setting_contexts.context_id IS 'To allow multiple values depending on context value'; -COMMENT ON COLUMN setting_contexts.context_name IS 'Friendly name'; -COMMENT ON COLUMN setting_contexts.description_ IS 'Description'; -COMMENT ON COLUMN setting_contexts.order# IS 'Order for sorting purposes'; +COMMENT ON COLUMN setting_contexts.app_id IS 'Application ID'; +COMMENT ON COLUMN setting_contexts.context_id IS 'To allow multiple values depending on context value'; +COMMENT ON COLUMN setting_contexts.context_name IS 'Friendly name'; +COMMENT ON COLUMN setting_contexts.description_ IS 'Description'; +COMMENT ON COLUMN setting_contexts.order# IS 'Order for sorting purposes'; diff --git a/database/tables/settings.sql b/database/tables/settings.sql index 61ff75f..92a88bb 100644 --- a/database/tables/settings.sql +++ b/database/tables/settings.sql @@ -1,27 +1,15 @@ ---DROP TABLE settings PURGE; CREATE TABLE settings ( - app_id NUMBER(4) CONSTRAINT nn_settings_app_id NOT NULL, - setting_name VARCHAR2(30) CONSTRAINT nn_settings_id NOT NULL, - -- - setting_value VARCHAR2(256), - setting_context VARCHAR2(64), - setting_group VARCHAR2(64), - -- - is_numeric CHAR(1), - is_date CHAR(1), - is_private CHAR(1), - -- - description_ VARCHAR2(1000), - -- - updated_by VARCHAR2(30), - updated_at DATE, - -- - CONSTRAINT uq_settings - UNIQUE (app_id, setting_name, setting_context), - -- - CONSTRAINT fk_settings_app_id - FOREIGN KEY (app_id) - REFERENCES apps (app_id), + app_id NUMBER(4,0) CONSTRAINT nn_settings_app_id NOT NULL, + setting_name VARCHAR2(30) CONSTRAINT nn_settings_id NOT NULL, + setting_value VARCHAR2(256), + setting_context VARCHAR2(64), + setting_group VARCHAR2(64), + is_numeric CHAR(1), + is_date CHAR(1), + is_private CHAR(1), + description_ VARCHAR2(1000), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT ch_settings_is_active CHECK ((is_numeric = 'Y' AND is_date IS NULL) OR is_numeric IS NULL), @@ -29,12 +17,18 @@ CREATE TABLE settings ( CONSTRAINT ch_settings_is_date CHECK ((is_date = 'Y' AND is_numeric IS NULL) OR is_date IS NULL), -- + CONSTRAINT uq_settings + UNIQUE (app_id, setting_name, setting_context) + -- CONSTRAINT ch_settings_is_private - CHECK (is_private = 'Y' OR is_private IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + CHECK (is_private = 'Y' OR is_private IS NULL), + -- + CONSTRAINT fk_settings_app_id + FOREIGN KEY (app_id) + REFERENCES apps (app_id) +); -- -COMMENT ON TABLE settings IS '[CORE] List of settings shared through whole app'; +COMMENT ON TABLE settings IS '[CORE] List of settings shared through whole app'; -- COMMENT ON COLUMN settings.app_id IS 'Application ID'; COMMENT ON COLUMN settings.setting_name IS 'Setting ID'; diff --git a/database/tables/translated_items.sql b/database/tables/translated_items.sql index 0ec048e..bf4c608 100644 --- a/database/tables/translated_items.sql +++ b/database/tables/translated_items.sql @@ -1,39 +1,34 @@ ---DROP TABLE translated_items PURGE; CREATE TABLE translated_items ( - app_id NUMBER(4) CONSTRAINT nn_translated_items_app_id NOT NULL, - page_id NUMBER(6) CONSTRAINT nn_translated_items_page_id NOT NULL, - item_name VARCHAR2(64) CONSTRAINT nn_translated_items_name NOT NULL, - -- - value_en VARCHAR2(2000), - value_cz VARCHAR2(2000), - value_sk VARCHAR2(2000), - value_pl VARCHAR2(2000), - value_hu VARCHAR2(2000), - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_translated_items_app_id NOT NULL, + page_id NUMBER(6,0) CONSTRAINT nn_translated_items_page_id NOT NULL, + item_name VARCHAR2(64) CONSTRAINT nn_translated_items_name NOT NULL, + value_en VARCHAR2(2000), + value_cz VARCHAR2(2000), + value_sk VARCHAR2(2000), + value_pl VARCHAR2(2000), + value_hu VARCHAR2(2000), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT pk_translated_items - PRIMARY KEY (app_id, page_id, item_name), + PRIMARY KEY (app_id, page_id, item_name) + -- + CONSTRAINT ch_translated_items_name + CHECK (REGEXP_LIKE(item_name, '^([A-Z][A-Z0-9-_]*)$')), -- CONSTRAINT fk_translated_items_page_id FOREIGN KEY (app_id, page_id) - REFERENCES navigation (app_id, page_id), - -- - CONSTRAINT ch_translated_items_name - CHECK (REGEXP_LIKE(item_name, '^([A-Z][A-Z0-9-_]*)$')) -) -STORAGE (BUFFER_POOL KEEP); + REFERENCES navigation (app_id, page_id) +); -- -COMMENT ON TABLE translated_items IS '[CORE] Translations for page/app items'; +COMMENT ON TABLE translated_items IS '[CORE] Translations for page/app items'; -- -COMMENT ON COLUMN translated_items.app_id IS 'APEX application ID'; -COMMENT ON COLUMN translated_items.page_id IS 'APEX page ID; 0 for page zero or application item'; -COMMENT ON COLUMN translated_items.item_name IS 'Item name (preferrably) to translate'; --- -COMMENT ON COLUMN translated_items.value_en IS 'Translated value'; -COMMENT ON COLUMN translated_items.value_cz IS 'Translated value'; -COMMENT ON COLUMN translated_items.value_sk IS 'Translated value'; -COMMENT ON COLUMN translated_items.value_pl IS 'Translated value'; -COMMENT ON COLUMN translated_items.value_hu IS 'Translated value'; +COMMENT ON COLUMN translated_items.app_id IS 'APEX application ID'; +COMMENT ON COLUMN translated_items.page_id IS 'APEX page ID; 0 for page zero or application item'; +COMMENT ON COLUMN translated_items.item_name IS 'Item name (preferrably) to translate'; +COMMENT ON COLUMN translated_items.value_en IS 'Translated value'; +COMMENT ON COLUMN translated_items.value_cz IS 'Translated value'; +COMMENT ON COLUMN translated_items.value_sk IS 'Translated value'; +COMMENT ON COLUMN translated_items.value_pl IS 'Translated value'; +COMMENT ON COLUMN translated_items.value_hu IS 'Translated value'; diff --git a/database/tables/translated_messages.sql b/database/tables/translated_messages.sql index 945e9f0..e591c72 100644 --- a/database/tables/translated_messages.sql +++ b/database/tables/translated_messages.sql @@ -1,30 +1,25 @@ ---DROP TABLE translated_messages PURGE; CREATE TABLE translated_messages ( - app_id NUMBER(4) CONSTRAINT nn_translated_messages_app_id NOT NULL, - message VARCHAR2(256) CONSTRAINT nn_translated_messages_message NOT NULL, - -- - value_en VARCHAR2(2000), - value_cz VARCHAR2(2000), - value_sk VARCHAR2(2000), - value_pl VARCHAR2(2000), - value_hu VARCHAR2(2000), - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_translated_messages_app_id NOT NULL, + message VARCHAR2(256) CONSTRAINT nn_translated_messages_message NOT NULL, + value_en VARCHAR2(2000), + value_cz VARCHAR2(2000), + value_sk VARCHAR2(2000), + value_pl VARCHAR2(2000), + value_hu VARCHAR2(2000), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT pk_translated_messages PRIMARY KEY (app_id, message) -) -STORAGE (BUFFER_POOL KEEP); +); -- -COMMENT ON TABLE translated_messages IS '[CORE] List of translated messages/notifications'; +COMMENT ON TABLE translated_messages IS '[CORE] List of translated messages/notifications'; -- -COMMENT ON COLUMN translated_messages.app_id IS 'APEX application ID'; -COMMENT ON COLUMN translated_messages.message IS 'Message to translate'; --- -COMMENT ON COLUMN translated_messages.value_en IS 'Translated value'; -COMMENT ON COLUMN translated_messages.value_cz IS 'Translated value'; -COMMENT ON COLUMN translated_messages.value_sk IS 'Translated value'; -COMMENT ON COLUMN translated_messages.value_pl IS 'Translated value'; -COMMENT ON COLUMN translated_messages.value_hu IS 'Translated value'; +COMMENT ON COLUMN translated_messages.app_id IS 'APEX application ID'; +COMMENT ON COLUMN translated_messages.message IS 'Message to translate'; +COMMENT ON COLUMN translated_messages.value_en IS 'Translated value'; +COMMENT ON COLUMN translated_messages.value_cz IS 'Translated value'; +COMMENT ON COLUMN translated_messages.value_sk IS 'Translated value'; +COMMENT ON COLUMN translated_messages.value_pl IS 'Translated value'; +COMMENT ON COLUMN translated_messages.value_hu IS 'Translated value'; diff --git a/database/tables/user_messages.sql b/database/tables/user_messages.sql index 7786a11..b0719b0 100644 --- a/database/tables/user_messages.sql +++ b/database/tables/user_messages.sql @@ -1,18 +1,16 @@ ---DROP TABLE user_messages PURGE; CREATE TABLE user_messages ( - app_id NUMBER(4) CONSTRAINT nn_user_messages_app_id NOT NULL, - user_id VARCHAR2(30) CONSTRAINT nn_user_messages_user_id NOT NULL, - message_id INTEGER CONSTRAINT nn_user_messages_message_id NOT NULL, -- log_id - message_type VARCHAR2(16), - message_payload VARCHAR2(2000), - session_id INTEGER, - -- - created_by VARCHAR2(30), - created_at DATE, - delivered_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_user_messages_app_id NOT NULL, + user_id VARCHAR2(30) CONSTRAINT nn_user_messages_user_id NOT NULL, + message_id INTEGER CONSTRAINT nn_user_messages_message_id NOT NULL, + message_type VARCHAR2(16), + message_payload VARCHAR2(2000), + session_id INTEGER, + created_by VARCHAR2(30), + created_at DATE, + delivered_at DATE, -- CONSTRAINT pk_user_messages - PRIMARY KEY (app_id, user_id, message_id), + PRIMARY KEY (app_id, user_id, message_id) -- CONSTRAINT fk_user_messages_app_id FOREIGN KEY (app_id) @@ -22,10 +20,9 @@ CREATE TABLE user_messages ( FOREIGN KEY (user_id) REFERENCES users (user_id) DEFERRABLE INITIALLY DEFERRED -) -STORAGE (BUFFER_POOL KEEP); +); -- -COMMENT ON TABLE user_messages IS '[CORE] Messages for users'; +COMMENT ON TABLE user_messages IS '[CORE] Messages for users'; -- COMMENT ON COLUMN user_messages.app_id IS 'APEX application ID'; COMMENT ON COLUMN user_messages.user_id IS 'User ID from USERS table'; diff --git a/database/tables/user_roles.sql b/database/tables/user_roles.sql index da6c2b8..ef405c5 100644 --- a/database/tables/user_roles.sql +++ b/database/tables/user_roles.sql @@ -1,36 +1,31 @@ ---DROP TABLE user_roles PURGE; CREATE TABLE user_roles ( - app_id NUMBER(4) CONSTRAINT nn_user_roles_app_id NOT NULL, - user_id VARCHAR2(30) CONSTRAINT nn_user_roles_user_id NOT NULL, - role_id VARCHAR2(30) CONSTRAINT nn_user_roles_role_id NOT NULL, - -- - updated_by VARCHAR2(30), - updated_at DATE, + app_id NUMBER(4,0) CONSTRAINT nn_user_roles_app_id NOT NULL, + user_id VARCHAR2(30) CONSTRAINT nn_user_roles_user_id NOT NULL, + role_id VARCHAR2(30) CONSTRAINT nn_user_roles_role_id NOT NULL, + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT pk_user_roles - PRIMARY KEY (app_id, user_id, role_id), + PRIMARY KEY (app_id, user_id, role_id) -- - CONSTRAINT fk_user_roles_app_id + CONSTRAINT fk_users_roles_app_id FOREIGN KEY (app_id) REFERENCES apps (app_id), -- - CONSTRAINT fk_user_roles_user_id - FOREIGN KEY (user_id) - REFERENCES users (user_id) - DEFERRABLE INITIALLY DEFERRED, - -- - CONSTRAINT fk_user_roles_role_id + CONSTRAINT fk_users_roles_role_id FOREIGN KEY (app_id, role_id) REFERENCES roles (app_id, role_id) - DEFERRABLE INITIALLY DEFERRED -) -STORAGE (BUFFER_POOL KEEP); + DEFERRABLE INITIALLY DEFERRED, + -- + CONSTRAINT fk_users_roles_user_id + FOREIGN KEY (user_id) + REFERENCES users (user_id) + DEFERRABLE INITIALLY DEFERRED DISABLE +); -- -ALTER TABLE user_roles MODIFY CONSTRAINT fk_user_roles_user_id DISABLE; -- to assign roles before user is created +COMMENT ON TABLE user_roles IS '[CORE] List of roles assigned to users'; -- -COMMENT ON TABLE user_roles IS '[CORE] List of roles assigned to users'; --- -COMMENT ON COLUMN user_roles.app_id IS 'APEX application ID'; -COMMENT ON COLUMN user_roles.user_id IS 'User ID from USERS table'; -COMMENT ON COLUMN user_roles.role_id IS 'Role ID from ROLES table'; +COMMENT ON COLUMN user_roles.app_id IS 'APEX application ID'; +COMMENT ON COLUMN user_roles.user_id IS 'User ID from USERS table'; +COMMENT ON COLUMN user_roles.role_id IS 'Role ID from ROLES table'; diff --git a/database/tables/users.sql b/database/tables/users.sql index ddd2319..6c5c2f2 100644 --- a/database/tables/users.sql +++ b/database/tables/users.sql @@ -1,35 +1,27 @@ -/* -DROP TABLE sessions CASCADE CONSTRAINTS PURGE; -DROP TABLE user_roles CASCADE CONSTRAINTS PURGE; -DROP TABLE users CASCADE CONSTRAINTS PURGE; -*/ CREATE TABLE users ( - user_id VARCHAR2(30) CONSTRAINT nn_users_user_id NOT NULL, - user_login VARCHAR2(128) CONSTRAINT nn_users_login NOT NULL, - user_name VARCHAR2(64), - -- - lang_id VARCHAR2(5), - is_active CHAR(1), - -- - updated_by VARCHAR2(30), - updated_at DATE, - -- - CONSTRAINT pk_users - PRIMARY KEY (user_id), - -- - CONSTRAINT uq_users_user_login - UNIQUE (user_login), + user_id VARCHAR2(30) CONSTRAINT nn_users_user_id NOT NULL, + user_login VARCHAR2(128) CONSTRAINT nn_users_login NOT NULL, + user_name VARCHAR2(64), + lang_id VARCHAR2(5), + is_active CHAR(1), + updated_by VARCHAR2(30), + updated_at DATE, -- CONSTRAINT ch_users_is_active - CHECK (is_active = 'Y' OR is_active IS NULL) -) -STORAGE (BUFFER_POOL KEEP); + CHECK (is_active = 'Y' OR is_active IS NULL), + -- + CONSTRAINT pk_users + PRIMARY KEY (user_id) + -- + CONSTRAINT uq_users_user_login + UNIQUE (user_login) +); -- -COMMENT ON TABLE users IS '[CORE] List of users'; +COMMENT ON TABLE users IS '[CORE] List of users'; -- -COMMENT ON COLUMN users.user_id IS 'User ID used internally (short)'; -COMMENT ON COLUMN users.user_login IS 'User login used for login into the app'; -COMMENT ON COLUMN users.user_name IS 'User name visible in the app'; -COMMENT ON COLUMN users.lang_id IS 'Preferred language'; -COMMENT ON COLUMN users.is_active IS 'Flag to disable user without changing roles'; +COMMENT ON COLUMN users.user_id IS 'User ID used internally (short)'; +COMMENT ON COLUMN users.user_login IS 'User login used for login into the app'; +COMMENT ON COLUMN users.user_name IS 'User name visible in the app'; +COMMENT ON COLUMN users.lang_id IS 'Preferred language'; +COMMENT ON COLUMN users.is_active IS 'Flag to disable user without changing roles';