list_knowledge_user_ee.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. "user"."nick_name" as nick_name,
  10. "temp_knowledge".create_time,
  11. "temp_knowledge".update_time,
  12. "temp_knowledge".file_size_limit,
  13. "temp_knowledge".file_count_limit,
  14. "temp_knowledge"."scope",
  15. "temp_knowledge"."embedding_model_id"::text,
  16. "document_temp"."char_length",
  17. to_json("temp_knowledge".meta)::jsonb as meta,
  18. CASE
  19. WHEN
  20. "app_knowledge_temp"."count" IS NULL THEN 0
  21. ELSE "app_knowledge_temp"."count" END AS application_mapping_count,
  22. "document_temp".document_count
  23. FROM (SELECT knowledge.*
  24. FROM knowledge knowledge ${knowledge_custom_sql}
  25. AND "knowledge".id::text in (select target
  26. from workspace_user_resource_permission
  27. ${workspace_user_resource_permission_query_set}
  28. and case
  29. when auth_type = 'ROLE' then
  30. 'ROLE' = any (permission_list)
  31. and
  32. 'KNOWLEDGE:READ' in (select (case when user_role_relation.role_id = any (array ['USER']) THEN 'KNOWLEDGE:READ' else role_permission.permission_id END)
  33. from role_permission role_permission
  34. right join user_role_relation user_role_relation
  35. on user_role_relation.role_id=role_permission.role_id
  36. where user_role_relation.user_id=workspace_user_resource_permission.user_id
  37. and user_role_relation.workspace_id=workspace_user_resource_permission.workspace_id)
  38. else
  39. 'VIEW' = any (permission_list)
  40. end
  41. )) temp_knowledge
  42. LEFT JOIN (SELECT "count"("id") AS document_count, "sum"("char_length") "char_length", knowledge_id
  43. FROM "document"
  44. GROUP BY knowledge_id) "document_temp" ON temp_knowledge."id" = "document_temp".knowledge_id
  45. LEFT JOIN (SELECT "count"("id"), knowledge_id
  46. FROM application_knowledge_mapping
  47. GROUP BY knowledge_id) app_knowledge_temp
  48. ON temp_knowledge."id" = "app_knowledge_temp".knowledge_id
  49. left join "user" on "user".id = temp_knowledge.user_id
  50. ) temp
  51. ${default_sql}