From b7c71d13a46c8f97da1e6338bc49f30641f02b5b Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Tue, 14 Feb 2023 16:40:29 +0100 Subject: [PATCH] feat(chalice): EXP fixes --- api/chalicelib/core/sessions.py | 12 +++++++----- ee/api/chalicelib/core/sessions.py | 12 +++++++----- ee/api/chalicelib/core/sessions_exp.py | 13 +++++++------ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py index 512c05769..c95bed903 100644 --- a/api/chalicelib/core/sessions.py +++ b/api/chalicelib/core/sessions.py @@ -301,7 +301,7 @@ def search2_series(data: schemas.SessionsSearchPayloadSchema, project_id: int, d extra_col = "" extra_where = "" pre_query = "" - distinct_on="s.session_id" + distinct_on = "s.session_id" if metric_of == schemas.MetricOfTable.user_country: main_col = "user_country" elif metric_of == schemas.MetricOfTable.user_device: @@ -321,7 +321,7 @@ def search2_series(data: schemas.SessionsSearchPayloadSchema, project_id: int, d elif metric_of == schemas.MetricOfTable.visited_url: main_col = "path" extra_col = ", path" - distinct_on+=",path" + distinct_on += ",path" main_query = cur.mogrify(f"""{pre_query} SELECT COUNT(*) AS count, COALESCE(JSONB_AGG(users_sessions) FILTER ( WHERE rn <= 200 ), '[]'::JSONB) AS values FROM (SELECT {main_col} AS name, @@ -1194,8 +1194,9 @@ def delete_sessions_by_user_ids(project_id, user_ids): def count_all(): with pg_client.PostgresClient(unlimited_query=True) as cur: - row = cur.execute(query="SELECT COUNT(session_id) AS count FROM public.sessions") - return row.get("count", 0) + cur.execute(query="SELECT COUNT(session_id) AS count FROM public.sessions") + row = cur.fetchone() + return row.get("count", 0) if row else 0 def session_exists(project_id, session_id): @@ -1203,7 +1204,8 @@ def session_exists(project_id, session_id): query = cur.mogrify("""SELECT 1 FROM public.sessions WHERE session_id=%(session_id)s - AND project_id=%(project_id)s""", + AND project_id=%(project_id)s + LIMIT 1;""", {"project_id": project_id, "session_id": session_id}) cur.execute(query) row = cur.fetchone() diff --git a/ee/api/chalicelib/core/sessions.py b/ee/api/chalicelib/core/sessions.py index bc7613278..6d92c3954 100644 --- a/ee/api/chalicelib/core/sessions.py +++ b/ee/api/chalicelib/core/sessions.py @@ -304,7 +304,7 @@ def search2_series(data: schemas.SessionsSearchPayloadSchema, project_id: int, d extra_col = "" extra_where = "" pre_query = "" - distinct_on="s.session_id" + distinct_on = "s.session_id" if metric_of == schemas.MetricOfTable.user_country: main_col = "user_country" elif metric_of == schemas.MetricOfTable.user_device: @@ -324,7 +324,7 @@ def search2_series(data: schemas.SessionsSearchPayloadSchema, project_id: int, d elif metric_of == schemas.MetricOfTable.visited_url: main_col = "path" extra_col = ", path" - distinct_on+=",path" + distinct_on += ",path" main_query = cur.mogrify(f"""{pre_query} SELECT COUNT(*) AS count, COALESCE(JSONB_AGG(users_sessions) FILTER ( WHERE rn <= 200 ), '[]'::JSONB) AS values FROM (SELECT {main_col} AS name, @@ -1197,8 +1197,9 @@ def delete_sessions_by_user_ids(project_id, user_ids): def count_all(): with pg_client.PostgresClient(unlimited_query=True) as cur: - row = cur.execute(query="SELECT COUNT(session_id) AS count FROM public.sessions") - return row.get("count", 0) + cur.execute(query="SELECT COUNT(session_id) AS count FROM public.sessions") + row = cur.fetchone() + return row.get("count", 0) if row else 0 def session_exists(project_id, session_id): @@ -1206,7 +1207,8 @@ def session_exists(project_id, session_id): query = cur.mogrify("""SELECT 1 FROM public.sessions WHERE session_id=%(session_id)s - AND project_id=%(project_id)s""", + AND project_id=%(project_id)s + LIMIT 1;""", {"project_id": project_id, "session_id": session_id}) cur.execute(query) row = cur.fetchone() diff --git a/ee/api/chalicelib/core/sessions_exp.py b/ee/api/chalicelib/core/sessions_exp.py index 428e8410a..35eabad5d 100644 --- a/ee/api/chalicelib/core/sessions_exp.py +++ b/ee/api/chalicelib/core/sessions_exp.py @@ -1526,17 +1526,18 @@ def delete_sessions_by_user_ids(project_id, user_ids): def count_all(): - with pg_client.PostgresClient(unlimited_query=True) as cur: - row = cur.execute(query="SELECT COUNT(session_id) AS count FROM public.sessions") + with ch_client.ClickHouseClient() as cur: + row = cur.execute(query=f"SELECT COUNT(session_id) AS count FROM {exp_ch_helper.get_main_sessions_table()}") return row.get("count", 0) def session_exists(project_id, session_id): with ch_client.ClickHouseClient() as cur: - query = cur.format("""SELECT 1 - FROM public.sessions - WHERE session_id=%(session_id)s - AND project_id=%(project_id)s""", + query = cur.format(f"""SELECT 1 + FROM {exp_ch_helper.get_main_sessions_table()} + WHERE session_id=%(session_id)s + AND project_id=%(project_id)s + LIMIT 1""", {"project_id": project_id, "session_id": session_id}) row = cur.execute(query) return row is not None