diff --git a/api/chalicelib/core/usability_testing/service.py b/api/chalicelib/core/usability_testing/service.py index b4707d73c..91537b8a5 100644 --- a/api/chalicelib/core/usability_testing/service.py +++ b/api/chalicelib/core/usability_testing/service.py @@ -116,6 +116,16 @@ def get_ut_test(project_id: int, test_id: int): WHERE utt.test_id = %(test_id)s """ + live_count_sql = """ + SELECT COUNT(*) FROM ( + SELECT DISTINCT ON (uts.session_id) uts.test_id + FROM ut_tests_signals uts + WHERE uts.duration IS NULL AND uts.task_id IS NULL + ORDER BY uts.session_id, uts.timestamp DESC + ) AS latest_signals + WHERE latest_signals.test_id = ut.test_id + """ + select_columns = [ "ut.test_id", "ut.title", @@ -131,7 +141,7 @@ def get_ut_test(project_id: int, test_id: int): "ut.visibility", "json_build_object('id', u.user_id, 'name', u.name) AS created_by", "COALESCE((SELECT COUNT(*) FROM ut_tests_signals uts WHERE uts.test_id = ut.test_id AND uts.task_id IS NOT NULL AND uts.status in %(response_statuses)s AND uts.comment is NOT NULL), 0) AS responses_count", - "COALESCE((SELECT COUNT(*) FROM ut_tests_signals uts WHERE uts.test_id = ut.test_id AND uts.duration IS NULL AND uts.task_id IS NULL), 0) AS live_count", + f"({live_count_sql}) AS live_count", ] db_handler.add_param("response_statuses", ('done', 'skipped')) db_handler.set_select_columns(select_columns + [f"({tasks_sql}) AS tasks"])