Skip to content

Commit

Permalink
refactor(chalice): unified table-cards to include total
Browse files Browse the repository at this point in the history
  • Loading branch information
tahayk committed Jul 16, 2024
1 parent 1fe8734 commit aad3948
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
8 changes: 4 additions & 4 deletions api/chalicelib/core/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ def search2_series(data: schemas.SessionsSearchPayloadSchema, project_id: int, d
distinct_on += ",path"
main_query = cur.mogrify(f"""{pre_query}
SELECT COUNT(*) AS count,
SUM(users_sessions.session_count) AS total_sessions,
SUM(users_sessions.session_count) AS total,
COALESCE(JSONB_AGG(users_sessions) FILTER ( WHERE rn <= 200 ), '[]'::JSONB) AS values
FROM (SELECT {main_col} AS name,
count(DISTINCT session_id) AS session_count,
Expand Down Expand Up @@ -359,7 +359,7 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de
distinct_on += ",path"
if metric_format == schemas.MetricExtendedFormatType.session_count:
main_query = f"""SELECT COUNT(*) AS count,
COALESCE(SUM(users_sessions.session_count),0) AS total_sessions,
COALESCE(SUM(users_sessions.session_count),0) AS total,
COALESCE(JSONB_AGG(users_sessions)
FILTER ( WHERE rn > %(limit_s)s
AND rn <= %(limit_e)s ), '[]'::JSONB) AS values
Expand All @@ -379,7 +379,7 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de
ORDER BY session_count DESC) AS users_sessions;"""
else:
main_query = f"""SELECT COUNT(*) AS count,
COALESCE(SUM(users_sessions.user_count),0) AS total_users,
COALESCE(SUM(users_sessions.user_count),0) AS total,
COALESCE(JSONB_AGG(users_sessions) FILTER ( WHERE rn <= 200 ), '[]'::JSONB) AS values
FROM (SELECT {main_col} AS name,
count(DISTINCT user_id) AS user_count,
Expand Down Expand Up @@ -420,7 +420,7 @@ def search_table_of_individual_issues(data: schemas.SessionsSearchPayloadSchema,
full_args["issues_limit_s"] = (data.page - 1) * data.limit
full_args["issues_limit_e"] = data.page * data.limit
main_query = cur.mogrify(f"""SELECT COUNT(1) AS count,
COALESCE(SUM(session_count), 0) AS total_sessions,
COALESCE(SUM(session_count), 0) AS total,
COALESCE(JSONB_AGG(ranked_issues)
FILTER ( WHERE rn > %(issues_limit_s)s
AND rn <= %(issues_limit_e)s ), '[]'::JSONB) AS values
Expand Down
19 changes: 9 additions & 10 deletions ee/api/chalicelib/core/sessions_exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de
main_query = f"""SELECT COUNT(DISTINCT {main_col}) OVER () AS main_count,
{main_col} AS name,
count(DISTINCT session_id) AS session_count,
COALESCE(SUM(count(DISTINCT session_id)) OVER (), 0) AS total_sessions
COALESCE(SUM(count(DISTINCT session_id)) OVER (), 0) AS total
FROM (SELECT s.session_id AS session_id,
{extra_col}
{query_part}) AS filtred_sessions
Expand Down Expand Up @@ -474,11 +474,11 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de
total_sessions = 0
if len(sessions) > 0:
count = sessions[0]["main_count"]
total_sessions = sessions[0]["total_sessions"]
total_sessions = sessions[0]["total"]
for s in sessions:
s.pop("main_count")
s.pop("total_sessions")
sessions = {"count": count, "totalSessions": total_sessions, "values": helper.list_to_camel_case(sessions)}
s.pop("total")
sessions = {"count": count, "total": total_sessions, "values": helper.list_to_camel_case(sessions)}

return sessions

Expand All @@ -495,7 +495,7 @@ def search_table_of_individual_issues(data: schemas.SessionsSearchPayloadSchema,
main_query = cur.format(f"""SELECT issues.type AS name,
issues.context_string AS value,
COUNT(DISTINCT raw_sessions.session_id) AS session_count,
sum(session_count) OVER () AS total_sessions,
sum(session_count) OVER () AS total,
COUNT(1) OVER () AS count
FROM (SELECT session_id
{query_part}) AS raw_sessions
Expand All @@ -514,15 +514,14 @@ def search_table_of_individual_issues(data: schemas.SessionsSearchPayloadSchema,
logging.debug("--------------------")
issues = cur.execute(main_query)
issues = helper.list_to_camel_case(issues)
total_sessions = 0
issues_count = 0
if len(issues) > 0:
total_sessions = issues[0]["totalSessions"]
total_sessions = issues[0]["total"]
issues_count = issues[0]["count"]
for s in issues:
s.pop("totalSessions")
s.pop("total")
s.pop("count")
else:
total_sessions = 0
issues_count = 0

return {"count": issues_count, "totalSessions": total_sessions, "values": issues}

Expand Down

0 comments on commit aad3948

Please sign in to comment.