diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py index 62abd27ff..9c96d45c6 100644 --- a/api/chalicelib/core/sessions.py +++ b/api/chalicelib/core/sessions.py @@ -151,7 +151,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ elif data.group_by_user: g_sort = "count(full_sessions)" if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value else: data.order = data.order.upper() if data.sort is not None and data.sort != 'sessionsCount': @@ -168,8 +168,8 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ count(full_sessions) AS user_sessions_count, jsonb_agg(full_sessions) FILTER (WHERE rn <= 1) AS last_session, MIN(full_sessions.start_ts) AS first_session_ts, - ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order}) AS rn - FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order}) AS rn + ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order.value}) AS rn + FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order.value}) AS rn FROM (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS} {"," if len(meta_keys) > 0 else ""}{",".join([f'metadata_{m["index"]}' for m in meta_keys])} {query_part} @@ -186,7 +186,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ full_args) else: if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value sort = 'session_id' if data.sort is not None and data.sort != "session_id": # sort += " " + data.order + "," + helper.key_to_snake_case(data.sort) @@ -195,16 +195,16 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ main_query = cur.mogrify(f"""SELECT COUNT(full_sessions) AS count, COALESCE(JSONB_AGG(full_sessions) FILTER (WHERE rn>%(sessions_limit_s)s AND rn<=%(sessions_limit_e)s), '[]'::JSONB) AS sessions - FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {sort} {data.order}, issue_score DESC) AS rn + FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {sort} {data.order.value}, issue_score DESC) AS rn FROM (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS} {"," if len(meta_keys) > 0 else ""}{",".join([f'metadata_{m["index"]}' for m in meta_keys])} {query_part} ORDER BY s.session_id desc) AS filtred_sessions - ORDER BY {sort} {data.order}, issue_score DESC) AS full_sessions;""", + ORDER BY {sort} {data.order.value}, issue_score DESC) AS full_sessions;""", full_args) - print("--------------------") - print(main_query) - print("--------------------") + # print("--------------------") + # print(main_query) + # print("--------------------") try: cur.execute(main_query) except Exception as err: diff --git a/ee/api/chalicelib/core/sessions.py b/ee/api/chalicelib/core/sessions.py index eadabe400..37106121a 100644 --- a/ee/api/chalicelib/core/sessions.py +++ b/ee/api/chalicelib/core/sessions.py @@ -153,7 +153,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ elif data.group_by_user: g_sort = "count(full_sessions)" if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value else: data.order = data.order.upper() if data.sort is not None and data.sort != 'sessionsCount': @@ -170,8 +170,8 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ count(full_sessions) AS user_sessions_count, jsonb_agg(full_sessions) FILTER (WHERE rn <= 1) AS last_session, MIN(full_sessions.start_ts) AS first_session_ts, - ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order}) AS rn - FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order}) AS rn + ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order.value}) AS rn + FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order.value}) AS rn FROM (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS} {"," if len(meta_keys) > 0 else ""}{",".join([f'metadata_{m["index"]}' for m in meta_keys])} {query_part} @@ -188,7 +188,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ full_args) else: if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value sort = 'session_id' if data.sort is not None and data.sort != "session_id": # sort += " " + data.order + "," + helper.key_to_snake_case(data.sort) @@ -197,12 +197,12 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ main_query = cur.mogrify(f"""SELECT COUNT(full_sessions) AS count, COALESCE(JSONB_AGG(full_sessions) FILTER (WHERE rn>%(sessions_limit_s)s AND rn<=%(sessions_limit_e)s), '[]'::JSONB) AS sessions - FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {sort} {data.order}, issue_score DESC) AS rn + FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {sort} {data.order.value}, issue_score DESC) AS rn FROM (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS} {"," if len(meta_keys) > 0 else ""}{",".join([f'metadata_{m["index"]}' for m in meta_keys])} {query_part} ORDER BY s.session_id desc) AS filtred_sessions - ORDER BY {sort} {data.order}, issue_score DESC) AS full_sessions;""", + ORDER BY {sort} {data.order.value}, issue_score DESC) AS full_sessions;""", full_args) # print("--------------------") # print(main_query) diff --git a/ee/api/chalicelib/core/sessions_exp.py b/ee/api/chalicelib/core/sessions_exp.py index cbd1c8252..2cb12188d 100644 --- a/ee/api/chalicelib/core/sessions_exp.py +++ b/ee/api/chalicelib/core/sessions_exp.py @@ -237,7 +237,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ elif data.group_by_user: g_sort = "count(full_sessions)" if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value else: data.order = data.order.upper() if data.sort is not None and data.sort != 'sessionsCount': @@ -254,8 +254,8 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ count(full_sessions) AS user_sessions_count, jsonb_agg(full_sessions) FILTER (WHERE rn <= 1) AS last_session, MIN(full_sessions.start_ts) AS first_session_ts, - ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order}) AS rn - FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order}) AS rn + ROW_NUMBER() OVER (ORDER BY {g_sort} {data.order.value}) AS rn + FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY {sort} {data.order.value}) AS rn FROM (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS} {"," if len(meta_keys) > 0 else ""}{",".join([f'metadata_{m["index"]}' for m in meta_keys])} {query_part} @@ -266,7 +266,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ full_args) else: if data.order is None: - data.order = schemas.SortOrderType.desc + data.order = schemas.SortOrderType.desc.value sort = 'session_id' if data.sort is not None and data.sort != "session_id": # sort += " " + data.order + "," + helper.key_to_snake_case(data.sort) @@ -285,7 +285,7 @@ def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_ AND _timestamp >= toDateTime(%(startDate)s / 1000)) AS viewed_sessions ON (viewed_sessions.session_id = s.session_id) ) AS raw - ORDER BY sort_key {data.order} + ORDER BY sort_key {data.order.value} LIMIT %(sessions_limit)s OFFSET %(sessions_limit_s)s) AS sorted_sessions;""", full_args) # print("--------------------")