[Developer] #424 show filters and ORDS handler details

Refs #424
This commit is contained in:
devmrko
2026-06-23 14:30:22 +09:00
parent 09e25a2349
commit ae3dd6667e
11 changed files with 197 additions and 3 deletions

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloudhandson.vpdbackoffice.mapper.OrdsMetadataMapper">
<select id="findHandlers" resultType="com.cloudhandson.vpdbackoffice.domain.ords.OrdsHandlerView">
SELECT s.pattern AS schema_name,
m.name AS module_name,
m.uri_prefix AS base_path,
t.uri_template AS template,
h.method,
h.source_type,
DBMS_LOB.SUBSTR(h.source, 12000, 1) AS source,
(
SELECT LISTAGG(p.name || ' -> :' || p.bind_variable_name || ' (' || p.source_type || ')', CHR(10))
WITHIN GROUP (ORDER BY p.name)
FROM dba_ords_parameters p
WHERE p.handler_id = h.id
) AS parameters,
CAST(NULL AS VARCHAR2(1)) AS package_source
FROM dba_ords_schemas s
JOIN dba_ords_modules m ON m.schema_id = s.id
JOIN dba_ords_templates t ON t.module_id = m.id
JOIN dba_ords_handlers h ON h.template_id = t.id
WHERE s.parsing_schema = 'CB_ORDS'
ORDER BY m.name, t.uri_template, h.method
</select>
<select id="findHandlerPackageSource" resultType="string">
SELECT LISTAGG(text, '') WITHIN GROUP (ORDER BY line)
FROM all_source
WHERE owner = 'CB_ORDS'
AND name = 'CB_ORDS_HANDLER_PKG'
AND type = 'PACKAGE BODY'
</select>
</mapper>

View File

@@ -46,7 +46,28 @@
SELECT LISTAGG(pc.column_name, ', ') WITHIN GROUP (ORDER BY pc.column_name)
FROM cb_permission_column pc
WHERE pc.permission_id = p.perm_id
) AS visible_columns
) AS visible_columns,
(
SELECT LISTAGG(
CASE
WHEN pr2.rule_type = 'ALL' THEN 'ALL ROWS'
WHEN pr2.rule_type = 'MY_DEPT' THEN pr2.rule_column || ' = SYS_CONTEXT(CB_AGENT_CTX.DEPT_CODE)'
WHEN pr2.rule_type = 'SELF' THEN pr2.rule_column || ' = SYS_CONTEXT(CB_AGENT_CTX.EMP_NO)'
ELSE pr2.rule_column || ' ' || pr2.rule_type || ' ' || pr2.rule_value
END,
CHR(10) || 'AND '
) WITHIN GROUP (ORDER BY pr2.rule_id)
FROM cb_permission_rule pr2
WHERE pr2.perm_id = p.perm_id
) AS filter_preview,
(
SELECT CASE
WHEN COUNT(*) = 0 THEN '모든 민감 컬럼 NULL 처리'
ELSE 'NULL 제외: ' || LISTAGG(pc2.column_name, ', ') WITHIN GROUP (ORDER BY pc2.column_name)
END
FROM cb_permission_column pc2
WHERE pc2.permission_id = p.perm_id
) AS null_policy_preview
FROM cb_permission p
JOIN cb_app_role r ON r.role_id = p.role_id
LEFT JOIN cb_protected_object o ON o.object_name = p.target_name