Skip to content

Commit ace03e5

Browse files
committed
fix: enhance knowledge retrieval logic with dynamic SQL selection based on workspace management
1 parent 0695b28 commit ace03e5

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
SELECT *
2+
FROM (SELECT "temp_knowledge".id::text, "temp_knowledge".name,
3+
"temp_knowledge".desc,
4+
"temp_knowledge".type,
5+
'knowledge' as resource_type,
6+
"temp_knowledge".workspace_id,
7+
"temp_knowledge".folder_id,
8+
"temp_knowledge".user_id,
9+
"temp_knowledge".create_time,
10+
"temp_knowledge".update_time,
11+
"temp_knowledge".file_size_limit,
12+
"temp_knowledge".file_count_limit,
13+
"document_temp"."char_length",
14+
CASE
15+
WHEN
16+
"app_knowledge_temp"."count" IS NULL THEN 0
17+
ELSE "app_knowledge_temp"."count" END AS application_mapping_count,
18+
"document_temp".document_count
19+
FROM (SELECT knowledge.*
20+
FROM knowledge knowledge ${knowledge_custom_sql}
21+
AND id in (select target
22+
from workspace_user_resource_permission
23+
where auth_target_type = 'KNOWLEDGE'
24+
and 'VIEW' = any (permission_list))) temp_knowledge
25+
LEFT JOIN (SELECT "count"("id") AS document_count, "sum"("char_length") "char_length", knowledge_id
26+
FROM "document"
27+
GROUP BY knowledge_id) "document_temp" ON temp_knowledge."id" = "document_temp".knowledge_id
28+
LEFT JOIN (SELECT "count"("id"), knowledge_id
29+
FROM application_knowledge_mapping
30+
GROUP BY knowledge_id) app_knowledge_temp
31+
ON temp_knowledge."id" = "app_knowledge_temp".knowledge_id
32+
UNION
33+
SELECT "id",
34+
"name",
35+
"desc",
36+
0 as "type",
37+
'folder' as "resource_type",
38+
"workspace_id",
39+
"parent_id" as "folder_id",
40+
"user_id",
41+
"create_time",
42+
"update_time",
43+
0 as file_size_limit,
44+
0 as file_count_limit,
45+
0 as char_length,
46+
0 as application_mapping_count,
47+
0 as document_count
48+
from knowledge_folder ${folder_query_set}) temp
49+
${default_sql}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
SELECT *
2+
FROM (SELECT "temp_knowledge".id::text, "temp_knowledge".name,
3+
"temp_knowledge".desc,
4+
"temp_knowledge".type,
5+
'knowledge' as resource_type,
6+
"temp_knowledge".workspace_id,
7+
"temp_knowledge".folder_id,
8+
"temp_knowledge".user_id,
9+
"temp_knowledge".create_time,
10+
"temp_knowledge".update_time,
11+
"temp_knowledge".file_size_limit,
12+
"temp_knowledge".file_count_limit,
13+
"document_temp"."char_length",
14+
CASE
15+
WHEN
16+
"app_knowledge_temp"."count" IS NULL THEN 0
17+
ELSE "app_knowledge_temp"."count" END AS application_mapping_count,
18+
"document_temp".document_count
19+
FROM (SELECT knowledge.*
20+
FROM knowledge knowledge ${knowledge_custom_sql}
21+
AND id in (select target
22+
from workspace_user_resource_permission
23+
where auth_target_type = 'KNOWLEDGE'
24+
and case
25+
when auth_type = 'ROLE' then
26+
'KNOWLEDGE_READ' in (select permission_id
27+
from role_permission
28+
where role_id in (select role_id
29+
from user_role_relation))
30+
else
31+
'VIEW' = any (permission_list)
32+
end
33+
)) temp_knowledge
34+
LEFT JOIN (SELECT "count"("id") AS document_count, "sum"("char_length") "char_length", knowledge_id
35+
FROM "document"
36+
GROUP BY knowledge_id) "document_temp" ON temp_knowledge."id" = "document_temp".knowledge_id
37+
LEFT JOIN (SELECT "count"("id"), knowledge_id
38+
FROM application_knowledge_mapping
39+
GROUP BY knowledge_id) app_knowledge_temp
40+
ON temp_knowledge."id" = "app_knowledge_temp".knowledge_id
41+
UNION
42+
SELECT "id",
43+
"name",
44+
"desc",
45+
0 as "type",
46+
'folder' as "resource_type",
47+
"workspace_id",
48+
"parent_id" as "folder_id",
49+
"user_id",
50+
"create_time",
51+
"update_time",
52+
0 as file_size_limit,
53+
0 as file_count_limit,
54+
0 as char_length,
55+
0 as application_mapping_count,
56+
0 as document_count
57+
from knowledge_folder ${folder_query_set}) temp
58+
${default_sql}

0 commit comments

Comments
 (0)