get_trigger_page_list.sql 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. WITH scheduler AS (SELECT SPLIT_PART(id, ':', 2) as trigger_id,
  2. id,
  3. next_run_time
  4. FROM django_apscheduler_djangojob
  5. WHERE id LIKE 'trigger:%%')
  6. SELECT *
  7. FROM (SELECT t.id,
  8. t.workspace_id,
  9. t.name,
  10. t."desc",
  11. t.trigger_type,
  12. t.trigger_setting,
  13. t.meta::JSON,
  14. t.is_active,
  15. t.create_time,
  16. t.update_time,
  17. t.user_id,
  18. (SELECT nick_name FROM "user" WHERE id = t.user_id) AS create_user,
  19. COALESCE(
  20. (ARRAY_AGG(sj.next_run_time ORDER BY sj.next_run_time))[1],
  21. NULL
  22. ) as next_run_time,
  23. COALESCE(
  24. JSON_AGG(
  25. JSON_BUILD_OBJECT(
  26. 'type', tt.source_type,
  27. 'name', COALESCE(app.name, tool.name),
  28. 'icon', COALESCE(app.icon, tool.icon)
  29. )
  30. ), '[]'::JSON
  31. ) AS trigger_task,
  32. STRING_AGG(COALESCE(app.name, tool.name), ' ') AS trigger_task_str
  33. FROM event_trigger t
  34. LEFT JOIN scheduler sj ON sj.trigger_id=t.id::text
  35. LEFT JOIN event_trigger_task tt ON t.id = tt.trigger_id
  36. LEFT JOIN application app ON tt.source_type = 'APPLICATION' AND tt.source_id = app.id
  37. LEFT JOIN tool ON tt.source_type = 'TOOL' AND tt.source_id = tool.id
  38. ${trigger_query_set}
  39. GROUP BY t.id, t.workspace_id, t.name, t.desc, t.trigger_type, t.trigger_setting, t.meta, t.is_active,
  40. t.create_time,
  41. t.update_time, t.user_id) AS sub
  42. ${task_query_set}
  43. ORDER BY sub.create_time DESC