diff --git a/api/chalicelib/core/custom_metrics.py b/api/chalicelib/core/custom_metrics.py index e9e127c4e..29c4b6fa9 100644 --- a/api/chalicelib/core/custom_metrics.py +++ b/api/chalicelib/core/custom_metrics.py @@ -91,7 +91,7 @@ def __get_sessions_list(project_id, user_id, data): data.series[0].filter.endDate = data.endTimestamp data.series[0].filter.page = data.page data.series[0].filter.limit = data.limit - return sessions.search2_pg(data=data.series[0].filter, project_id=project_id, user_id=user_id) + return sessions.search_sessions(data=data.series[0].filter, project_id=project_id, user_id=user_id) def merged_live(project_id, data: schemas.TryCustomMetricsPayloadSchema, user_id=None): @@ -166,7 +166,7 @@ def get_sessions(project_id, user_id, metric_id, data: schemas.CustomMetricSessi s.filter.limit = data.limit s.filter.page = data.page results.append({"seriesId": s.series_id, "seriesName": s.name, - **sessions.search2_pg(data=s.filter, project_id=project_id, user_id=user_id)}) + **sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)}) return results @@ -213,7 +213,7 @@ def try_sessions(project_id, user_id, data: schemas.CustomMetricSessionsPayloadS s.filter.limit = data.limit s.filter.page = data.page results.append({"seriesId": None, "seriesName": s.name, - **sessions.search2_pg(data=s.filter, project_id=project_id, user_id=user_id)}) + **sessions.search_sessions(data=s.filter, project_id=project_id, user_id=user_id)}) return results @@ -532,7 +532,7 @@ def get_funnel_sessions_by_issue(user_id, project_id, metric_id, issue_id, "lostConversions": 0, "unaffectedSessions": 0} return {"seriesId": s.series_id, "seriesName": s.name, - "sessions": sessions.search2_pg(user_id=user_id, project_id=project_id, - issue=issue, data=s.filter) + "sessions": sessions.search_sessions(user_id=user_id, project_id=project_id, + issue=issue, data=s.filter) if issue is not None else {"total": 0, "sessions": []}, "issue": issue} diff --git a/api/chalicelib/core/errors.py b/api/chalicelib/core/errors.py index bbdea726b..a10a14ad1 100644 --- a/api/chalicelib/core/errors.py +++ b/api/chalicelib/core/errors.py @@ -450,8 +450,8 @@ def search(data: schemas.SearchErrorsSchema, project_id, user_id, flows=False): if len(data.events) > 0 or len(data.filters) > 0: print("-- searching for sessions before errors") # if favorite_only=True search for sessions associated with favorite_error - statuses = sessions.search2_pg(data=data, project_id=project_id, user_id=user_id, errors_only=True, - error_status=data.status) + statuses = sessions.search_sessions(data=data, project_id=project_id, user_id=user_id, errors_only=True, + error_status=data.status) if len(statuses) == 0: return empty_response error_ids = [e["errorId"] for e in statuses] diff --git a/api/chalicelib/core/funnels.py b/api/chalicelib/core/funnels.py index 3239f4705..65cb7b09a 100644 --- a/api/chalicelib/core/funnels.py +++ b/api/chalicelib/core/funnels.py @@ -138,8 +138,8 @@ def get_by_user(project_id, user_id, range_value=None, start_date=None, end_date get_start_end_time(filter_d=row["filter"], range_value=range_value, start_date=start_date, end_date=end_date) - counts = sessions.search2_pg(data=schemas.SessionsSearchPayloadSchema.parse_obj(row["filter"]), - project_id=project_id, user_id=None, count_only=True) + counts = sessions.search_sessions(data=schemas.SessionsSearchPayloadSchema.parse_obj(row["filter"]), + project_id=project_id, user_id=None, count_only=True) row["sessionsCount"] = counts["countSessions"] row["usersCount"] = counts["countUsers"] filter_clone = dict(row["filter"]) @@ -193,8 +193,8 @@ def get_sessions(project_id, funnel_id, user_id, range_value=None, start_date=No if f is None: return {"errors": ["funnel not found"]} get_start_end_time(filter_d=f["filter"], range_value=range_value, start_date=start_date, end_date=end_date) - return sessions.search2_pg(data=schemas.SessionsSearchPayloadSchema.parse_obj(f["filter"]), project_id=project_id, - user_id=user_id) + return sessions.search_sessions(data=schemas.SessionsSearchPayloadSchema.parse_obj(f["filter"]), project_id=project_id, + user_id=user_id) def get_sessions_on_the_fly(funnel_id, project_id, user_id, data: schemas.FunnelSearchPayloadSchema): @@ -207,8 +207,8 @@ def get_sessions_on_the_fly(funnel_id, project_id, user_id, data: schemas.Funnel get_start_end_time(filter_d=f["filter"], range_value=data.range_value, start_date=data.startDate, end_date=data.endDate) data = schemas.FunnelSearchPayloadSchema.parse_obj(f["filter"]) - return sessions.search2_pg(data=data, project_id=project_id, - user_id=user_id) + return sessions.search_sessions(data=data, project_id=project_id, + user_id=user_id) def get_top_insights(project_id, user_id, funnel_id, range_value=None, start_date=None, end_date=None): @@ -365,8 +365,8 @@ def search_by_issue(user_id, project_id, funnel_id, issue_id, data: schemas.Funn if i.get("issueId", "") == issue_id: issue = i break - return {"sessions": sessions.search2_pg(user_id=user_id, project_id=project_id, issue=issue, - data=data) if issue is not None else {"total": 0, "sessions": []}, + return {"sessions": sessions.search_sessions(user_id=user_id, project_id=project_id, issue=issue, + data=data) if issue is not None else {"total": 0, "sessions": []}, # "stages": helper.list_to_camel_case(insights), # "totalDropDueToIssues": total_drop_due_to_issues, "issue": issue} diff --git a/api/chalicelib/core/sessions.py b/api/chalicelib/core/sessions.py index 52f427479..a9c793a6c 100644 --- a/api/chalicelib/core/sessions.py +++ b/api/chalicelib/core/sessions.py @@ -172,8 +172,8 @@ def _isUndefined_operator(op: schemas.SearchEventOperator): return op in [schemas.SearchEventOperator._is_undefined] -def search2_pg(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, errors_only=False, - error_status=schemas.ErrorStatus.all, count_only=False, issue=None): +def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, errors_only=False, + error_status=schemas.ErrorStatus.all, count_only=False, issue=None): full_args, query_part = search_query_parts(data=data, error_status=error_status, errors_only=errors_only, favorite_only=data.bookmarked, issue=issue, project_id=project_id, user_id=user_id) diff --git a/api/chalicelib/core/significance.py b/api/chalicelib/core/significance.py index 9bd0fa966..d6f46da70 100644 --- a/api/chalicelib/core/significance.py +++ b/api/chalicelib/core/significance.py @@ -559,8 +559,8 @@ def get_top_insights(filter_d, project_id): "dropDueToIssues": 0 }] - counts = sessions.search2_pg(data=schemas.SessionsSearchCountSchema.parse_obj(filter_d), project_id=project_id, - user_id=None, count_only=True) + counts = sessions.search_sessions(data=schemas.SessionsSearchCountSchema.parse_obj(filter_d), project_id=project_id, + user_id=None, count_only=True) output[0]["sessionsCount"] = counts["countSessions"] output[0]["usersCount"] = counts["countUsers"] return output, 0 diff --git a/api/routers/core.py b/api/routers/core.py index 9ff641556..a73a752cf 100644 --- a/api/routers/core.py +++ b/api/routers/core.py @@ -1,4 +1,4 @@ -from typing import Union, Optional +from typing import Union from decouple import config from fastapi import Depends, Body, BackgroundTasks, HTTPException @@ -6,7 +6,7 @@ from starlette import status import schemas from chalicelib.core import log_tool_rollbar, sourcemaps, events, sessions_assignments, projects, \ - sessions_metas, alerts, funnels, issues, integrations_manager, metadata, \ + alerts, funnels, issues, integrations_manager, metadata, \ log_tool_elasticsearch, log_tool_datadog, \ log_tool_stackdriver, reset_password, sessions_favorite_viewed, \ log_tool_cloudwatch, log_tool_sentry, log_tool_sumologic, log_tools, errors, sessions, \ @@ -50,6 +50,13 @@ def login(data: schemas.UserLoginSchema = Body(...)): } +@app.post('/{projectId}/sessions/search2', tags=["sessions"]) +def sessions_search2(projectId: int, data: schemas.FlatSessionsSearchPayloadSchema = Body(...), + context: schemas.CurrentContext = Depends(OR_context)): + data = sessions.search_sessions(data=data, project_id=projectId, user_id=context.user_id) + return {'data': data} + + @app.get('/{projectId}/sessions/{sessionId}', tags=["sessions"]) @app.get('/{projectId}/sessions2/{sessionId}', tags=["sessions"]) def get_session2(projectId: int, sessionId: Union[int, str], background_tasks: BackgroundTasks, diff --git a/api/routers/core_dynamic.py b/api/routers/core_dynamic.py index 594715bb6..e9f8cf83a 100644 --- a/api/routers/core_dynamic.py +++ b/api/routers/core_dynamic.py @@ -7,7 +7,7 @@ from starlette.responses import RedirectResponse import schemas from chalicelib.core import integrations_manager from chalicelib.core import sessions -from chalicelib.core import tenants, users, metadata, projects, license +from chalicelib.core import tenants, users, projects, license from chalicelib.core import webhook from chalicelib.core.collaboration_slack import Slack from chalicelib.utils import helper diff --git a/ee/api/.gitignore b/ee/api/.gitignore index 1654bb8d7..17a1f985b 100644 --- a/ee/api/.gitignore +++ b/ee/api/.gitignore @@ -206,6 +206,7 @@ Pipfile /chalicelib/core/log_tool_sumologic.py /chalicelib/core/metadata.py /chalicelib/core/mobile.py +/chalicelib/core/sessions.py /chalicelib/core/sessions_assignments.py /chalicelib/core/sessions_metas.py /chalicelib/core/sessions_mobs.py diff --git a/ee/api/chalicelib/core/__init__.py b/ee/api/chalicelib/core/__init__.py index 01b1b7ee4..a396db6fd 100644 --- a/ee/api/chalicelib/core/__init__.py +++ b/ee/api/chalicelib/core/__init__.py @@ -2,5 +2,7 @@ from decouple import config if config("LEGACY_SEARCH", cast=bool, default=True): from . import autocomplete as autocomplete + from . import sessions as sessions else: from . import autocomplete_ee as autocomplete + from . import sessions_ee as sessions diff --git a/ee/api/chalicelib/core/sessions.py b/ee/api/chalicelib/core/sessions_ee.py similarity index 99% rename from ee/api/chalicelib/core/sessions.py rename to ee/api/chalicelib/core/sessions_ee.py index df72b2d86..a16317d82 100644 --- a/ee/api/chalicelib/core/sessions.py +++ b/ee/api/chalicelib/core/sessions_ee.py @@ -345,8 +345,8 @@ def search2_pg(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, e } -def search2_ch(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, errors_only=False, - error_status=schemas.ErrorStatus.all, count_only=False, issue=None): +def search_sessions(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, errors_only=False, + error_status=schemas.ErrorStatus.all, count_only=False, issue=None): print("------ search2_ch") full_args, query_part = search_query_parts_ch(data=data, error_status=error_status, errors_only=errors_only, favorite_only=data.bookmarked, issue=issue, project_id=project_id, diff --git a/ee/api/clean.sh b/ee/api/clean.sh index 9055b36a3..b9124f1f5 100755 --- a/ee/api/clean.sh +++ b/ee/api/clean.sh @@ -30,6 +30,7 @@ rm -rf ./chalicelib/core/log_tool_stackdriver.py rm -rf ./chalicelib/core/log_tool_sumologic.py rm -rf ./chalicelib/core/metadata.py rm -rf ./chalicelib/core/mobile.py +rm -rf ./chalicelib/core/sessions.py rm -rf ./chalicelib/core/sessions_assignments.py rm -rf ./chalicelib/core/sessions_metas.py rm -rf ./chalicelib/core/sessions_mobs.py diff --git a/ee/api/routers/core_dynamic.py b/ee/api/routers/core_dynamic.py index e5ba6c6c4..3c5c21905 100644 --- a/ee/api/routers/core_dynamic.py +++ b/ee/api/routers/core_dynamic.py @@ -176,13 +176,3 @@ def get_general_stats(): def get_projects(context: schemas.CurrentContext = Depends(OR_context)): return {"data": projects.get_projects(tenant_id=context.tenant_id, recording_state=True, gdpr=True, recorded=True, stack_integrations=True, user_id=context.user_id)} - - -@app.post('/{projectId}/sessions/search2', tags=["sessions"]) -def sessions_search2(projectId: int, data: schemas.FlatSessionsSearchPayloadSchema = Body(...), - context: schemas.CurrentContext = Depends(OR_context)): - if config("LEGACY_SEARCH", cast=bool, default=False): - data = sessions.search2_pg(data=data, project_id=projectId, user_id=context.user_id) - else: - data = sessions.search2_ch(data=data, project_id=projectId, user_id=context.user_id) - return {'data': data}