diff --git a/sql/adb/22_agent_ords_security_ords_handler_setup.sql b/sql/adb/22_agent_ords_security_ords_handler_setup.sql index ba22c4e..c4b09c9 100644 --- a/sql/adb/22_agent_ords_security_ords_handler_setup.sql +++ b/sql/adb/22_agent_ords_security_ords_handler_setup.sql @@ -88,17 +88,13 @@ BEGIN p_method => 'POST', p_source_type => ORDS.source_type_query, p_source => q'! -WITH vpd_ctx AS ( - SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) AS applied - FROM dual -) SELECT d.doc_id, d.title, d.owner_emp_no, d.dept_code, d.contents FROM admin.cb_v_search_documents d - CROSS JOIN vpd_ctx +WHERE (SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) FROM dual) = 1 !', p_items_per_page => 25 ); diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsMetadataService.java b/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsMetadataService.java index 7675fd7..7bbf015 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsMetadataService.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsMetadataService.java @@ -161,13 +161,23 @@ public class OrdsMetadataService { String source = objectQueryHandlerSource(objectId); ordsMetadataJdbcTemplate.update(""" + DECLARE + v_module_count NUMBER; BEGIN - ORDS.DEFINE_MODULE( - p_module_name => ?, - p_base_path => ?, - p_items_per_page => 25, - p_status => 'PUBLISHED' - ); + SELECT COUNT(*) + INTO v_module_count + FROM user_ords_modules + WHERE name = ?; + + IF v_module_count = 0 THEN + ORDS.DEFINE_MODULE( + p_module_name => ?, + p_base_path => ?, + p_items_per_page => 25, + p_status => 'PUBLISHED' + ); + END IF; + ORDS.DEFINE_TEMPLATE( p_module_name => ?, p_pattern => ? @@ -203,6 +213,7 @@ public class OrdsMetadataService { COMMIT; END; """, + moduleName, moduleName, basePath, moduleName, template, moduleName, template, source, @@ -218,14 +229,10 @@ public class OrdsMetadataService { .reduce((left, right) -> left + ",\n " + right) .orElseThrow(); return """ - WITH vpd_ctx AS ( - SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) AS applied - FROM dual - ) SELECT %s FROM %s.%s o - CROSS JOIN vpd_ctx - WHERE ROWNUM <= LEAST(GREATEST(NVL(:row_limit, 50), 1), 500) + WHERE (SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) FROM dual) = 1 + AND ROWNUM <= LEAST(GREATEST(NVL(:row_limit, 50), 1), 500) """.formatted(selectColumns, object.owner(), object.objectName()); }