From bd1f75a4aebd9f3ee8c9ab5a75e038a207702fee Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Tue, 15 Jul 2025 09:49:10 +0800 Subject: [PATCH] refactor: streamline SQL queries in list_application.sql, list_application_user.sql, and list_application_user_ee.sql --- apps/application/sql/list_application.sql | 38 ++++----- .../application/sql/list_application_user.sql | 55 ++++++------ .../sql/list_application_user_ee.sql | 84 ++++++++++--------- 3 files changed, 87 insertions(+), 90 deletions(-) diff --git a/apps/application/sql/list_application.sql b/apps/application/sql/list_application.sql index e9a87f541..f57d2a655 100644 --- a/apps/application/sql/list_application.sql +++ b/apps/application/sql/list_application.sql @@ -1,32 +1,22 @@ select * -from (select application."id"::text, - application."name", - application. "desc", - application. "is_publish", +from (select application."id"::text, application."name", + application."desc", + application."is_publish", application."type", - 'application' as "resource_type", + 'application' as "resource_type", application."workspace_id", - application. "folder_id", + application."folder_id", application."user_id", "user"."nick_name" as "nick_name", application."create_time", application."update_time", - application."publish_time" - from application left join "user" on user_id = "user".id - ${application_custom_sql} + application."publish_time", + application.icon + from application + left join "user" on user_id = "user".id + ${application_custom_sql} UNION - select application_folder."id", - application_folder."name", - application_folder."desc", - true as "is_publish", - 'folder' as "type", - 'folder' as "resource_type", - application_folder."workspace_id", - application_folder."parent_id" as "folder_id", - application_folder."user_id", - "user"."nick_name" as "nick_name", - application_folder."create_time", - application_folder."update_time", - null as "publish_time" - from application_folder left join "user" on user_id = "user".id ${folder_query_set}) temp -${application_query_set} \ No newline at end of file + select application_folder."id", application_folder."name", application_folder."desc", true as "is_publish", 'folder' as "type", 'folder' as "resource_type", application_folder."workspace_id", application_folder."parent_id" as "folder_id", application_folder."user_id", "user"."nick_name" as "nick_name", application_folder."create_time", application_folder."update_time", null as "publish_time", null as "icon" + from application_folder left join "user" + on user_id = "user".id ${folder_query_set}) temp + ${application_query_set} \ No newline at end of file diff --git a/apps/application/sql/list_application_user.sql b/apps/application/sql/list_application_user.sql index 377ba2a58..54a901de7 100644 --- a/apps/application/sql/list_application_user.sql +++ b/apps/application/sql/list_application_user.sql @@ -1,35 +1,36 @@ select * -from (select application."id"::text, - application."name", - application. "desc", - application. "is_publish", +from (select application."id"::text, application."name", + application."desc", + application."is_publish", application."type", - 'application' as "resource_type", + 'application' as "resource_type", application."workspace_id", - application. "folder_id", + application."folder_id", application."user_id", "user"."nick_name" as "nick_name", application."create_time", application."update_time", - application."publish_time" - from application left join "user" on user_id = "user".id + application."publish_time", + application.icon + from application + left join "user" on user_id = "user".id where application."id" in (select target - from workspace_user_resource_permission - ${workspace_user_resource_permission_query_set} - and 'VIEW' = any (permission_list)) - UNION - select application_folder."id", - application_folder."name", - application_folder."desc", - true as "is_publish", - 'folder' as "type", - 'folder' as "resource_type", - application_folder."workspace_id", - application_folder."parent_id" as "folder_id", - application_folder."user_id", - "user"."nick_name" as "nick_name", - application_folder."create_time", - application_folder."update_time", - null as "publish_time" - from application_folder left join "user" on user_id = "user".id ${folder_query_set}) temp -${application_query_set} \ No newline at end of file + from workspace_user_resource_permission ${workspace_user_resource_permission_query_set} + and 'VIEW' = any (permission_list)) +UNION +select application_folder."id", + application_folder."name", + application_folder."desc", + true as "is_publish", + 'folder' as "type", + 'folder' as "resource_type", + application_folder."workspace_id", + application_folder."parent_id" as "folder_id", + application_folder."user_id", + "user"."nick_name" as "nick_name", + application_folder."create_time", + application_folder."update_time", + null as "publish_time", + null as "icon" +from application_folder + left join "user" on user_id = "user".id ${folder_query_set}) temp ${application_query_set} \ No newline at end of file diff --git a/apps/application/sql/list_application_user_ee.sql b/apps/application/sql/list_application_user_ee.sql index fe44b1fa1..3d98452ff 100644 --- a/apps/application/sql/list_application_user_ee.sql +++ b/apps/application/sql/list_application_user_ee.sql @@ -1,48 +1,54 @@ select * -from (select application."id"::text, - application."name", - application. "desc", - application. "is_publish", +from (select application."id"::text, application."name", + application."desc", + application."is_publish", application."type", - 'application' as "resource_type", + 'application' as "resource_type", application."workspace_id", - application. "folder_id", + application."folder_id", application."user_id", "user"."nick_name" as "nick_name", application."create_time", application."update_time", - application."publish_time" - from application left join "user" on user_id = "user".id + application."publish_time", + application.icon + from application + left join "user" on user_id = "user".id where "application".id in (select target - from workspace_user_resource_permission - ${workspace_user_resource_permission_query_set} - and case - when auth_type = 'ROLE' then - 'ROLE' = any (permission_list) - and - 'APPLICATION:READ' in (select (case when user_role_relation.role_id = any (array ['USER']) THEN 'APPLICATION:READ' else role_permission.permission_id END) - from role_permission role_permission - right join user_role_relation user_role_relation - on user_role_relation.role_id=role_permission.role_id - where user_role_relation.user_id=workspace_user_resource_permission.user_id - and user_role_relation.workspace_id=workspace_user_resource_permission.workspace_id) + from workspace_user_resource_permission ${workspace_user_resource_permission_query_set} + and case + when auth_type = 'ROLE' then + 'ROLE' = any (permission_list) + and + 'APPLICATION:READ' in (select (case + when user_role_relation.role_id = any (array['USER']) + THEN 'APPLICATION:READ' + else role_permission.permission_id END) + from role_permission role_permission + right join user_role_relation user_role_relation + on user_role_relation.role_id = role_permission.role_id + where user_role_relation.user_id = workspace_user_resource_permission.user_id + and user_role_relation.workspace_id = + workspace_user_resource_permission.workspace_id) - else - 'VIEW' = any (permission_list) - end) - UNION - select application_folder."id", - application_folder."name", - application_folder."desc", - true as "is_publish", - 'folder' as "type", - 'folder' as "resource_type", - application_folder."workspace_id", - application_folder."parent_id" as "folder_id", - application_folder."user_id", - "user"."nick_name" as "nick_name", - application_folder."create_time", - application_folder."update_time", - null as "publish_time" - from application_folder left join "user" on user_id = "user".id ${folder_query_set}) temp -${application_query_set} \ No newline at end of file + else + 'VIEW' = any (permission_list) + end) +UNION +select application_folder."id", + application_folder."name", + application_folder."desc", + true as "is_publish", + 'folder' as "type", + 'folder' as "resource_type", + application_folder."workspace_id", + application_folder."parent_id" as "folder_id", + application_folder."user_id", + "user"."nick_name" as "nick_name", + application_folder."create_time", + application_folder."update_time", + null as "publish_time", + null as "icon" + +from application_folder + left join "user" on user_id = "user".id ${folder_query_set}) temp ${application_query_set} \ No newline at end of file