From 02dbc8afc0f5a58652468bfa6d583cf12c85ec1a Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Mon, 12 Aug 2024 07:22:31 +0100 Subject: [PATCH] feat(chalice): table of referrers CH --- api/chalicelib/core/custom_metrics.py | 3 ++- ee/api/chalicelib/core/custom_metrics.py | 7 ++++++- ee/api/chalicelib/core/sessions_exp.py | 20 +++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/api/chalicelib/core/custom_metrics.py b/api/chalicelib/core/custom_metrics.py index 7c2325e46e..9e456a29f2 100644 --- a/api/chalicelib/core/custom_metrics.py +++ b/api/chalicelib/core/custom_metrics.py @@ -538,7 +538,8 @@ def delete_card(project_id, metric_id, user_id): SET deleted_at = timezone('utc'::text, now()), edited_at = timezone('utc'::text, now()) WHERE project_id = %(project_id)s AND metric_id = %(metric_id)s - AND (user_id = %(user_id)s OR is_public);""", + AND (user_id = %(user_id)s OR is_public) + RETURNING data;""", {"metric_id": metric_id, "project_id": project_id, "user_id": user_id}) ) diff --git a/ee/api/chalicelib/core/custom_metrics.py b/ee/api/chalicelib/core/custom_metrics.py index eb95b5538a..f7d6964278 100644 --- a/ee/api/chalicelib/core/custom_metrics.py +++ b/ee/api/chalicelib/core/custom_metrics.py @@ -157,16 +157,21 @@ def __get_table_of_urls(project_id: int, data: schemas.CardTable, user_id: int = return __get_table_of_series(project_id=project_id, data=data) +def __get_table_of_referrers(project_id: int, data: schemas.CardTable, user_id: int = None): + return __get_table_of_series(project_id=project_id, data=data) + + def __get_table_chart(project_id: int, data: schemas.CardTable, user_id: int): supported = { schemas.MetricOfTable.SESSIONS: __get_table_of_sessions, schemas.MetricOfTable.ERRORS: __get_table_of_errors, schemas.MetricOfTable.USER_ID: __get_table_of_user_ids, schemas.MetricOfTable.ISSUES: __get_table_of_issues, - schemas.MetricOfTable.user_browser: __get_table_of_browsers, + schemas.MetricOfTable.USER_BROWSER: __get_table_of_browsers, schemas.MetricOfTable.USER_DEVICE: __get_table_of_devises, schemas.MetricOfTable.USER_COUNTRY: __get_table_of_countries, schemas.MetricOfTable.VISITED_URL: __get_table_of_urls, + schemas.MetricOfTable.REFERRER: __get_table_of_referrers, } return supported.get(data.metric_of, not_supported)(project_id=project_id, data=data, user_id=user_id) diff --git a/ee/api/chalicelib/core/sessions_exp.py b/ee/api/chalicelib/core/sessions_exp.py index 657477b8ca..dde34bdc43 100644 --- a/ee/api/chalicelib/core/sessions_exp.py +++ b/ee/api/chalicelib/core/sessions_exp.py @@ -400,20 +400,20 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de full_args["limit_e"] = data.page * data.limit main_col = "user_id" - extra_col = "s.user_id" + extra_col = ", s.user_id" extra_where = "" if metric_of == schemas.MetricOfTable.USER_COUNTRY: main_col = "user_country" - extra_col = "s.user_country" + extra_col = ", s.user_country" elif metric_of == schemas.MetricOfTable.USER_DEVICE: main_col = "user_device" - extra_col = "s.user_device" - elif metric_of == schemas.MetricOfTable.user_browser: + extra_col = ", s.user_device" + elif metric_of == schemas.MetricOfTable.USER_BROWSER: main_col = "user_browser" - extra_col = "s.user_browser" + extra_col = ", s.user_browser" elif metric_of == schemas.MetricOfTable.ISSUES: main_col = "issue" - extra_col = f"arrayJoin(s.issue_types) AS {main_col}" + extra_col = f", arrayJoin(s.issue_types) AS {main_col}" if len(metric_value) > 0: extra_where = [] for i in range(len(metric_value)): @@ -423,15 +423,17 @@ def search2_table(data: schemas.SessionsSearchPayloadSchema, project_id: int, de extra_where = f"WHERE ({' OR '.join(extra_where)})" elif metric_of == schemas.MetricOfTable.VISITED_URL: main_col = "url_path" - extra_col = "s.url_path" + extra_col = ", s.url_path" + elif metric_of == schemas.MetricOfTable.REFERRER: + main_col = "referrer" + extra_col = ", referrer" if metric_format == schemas.MetricExtendedFormatType.SESSION_COUNT: 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 - FROM (SELECT s.session_id AS session_id, - {extra_col} + FROM (SELECT s.session_id AS session_id {extra_col} {query_part}) AS filtred_sessions {extra_where} GROUP BY {main_col}