feat(api): last_tracker_version as a parameter for GET /projects/{projectId}
This commit is contained in:
parent
16abda087c
commit
b0f9d84e81
4 changed files with 32 additions and 7 deletions
|
|
@ -46,7 +46,7 @@ def get_projects(tenant_id, recording_state=False, gdpr=None, recorded=False, st
|
|||
last_tracker_version=None):
|
||||
with pg_client.PostgresClient() as cur:
|
||||
tracker_query = ""
|
||||
if last_tracker_version is not None and len(last_tracker_version)>0:
|
||||
if last_tracker_version is not None and len(last_tracker_version) > 0:
|
||||
tracker_query = cur.mogrify(
|
||||
""",(SELECT tracker_version FROM public.sessions
|
||||
WHERE sessions.project_id = s.project_id
|
||||
|
|
@ -87,8 +87,19 @@ def get_projects(tenant_id, recording_state=False, gdpr=None, recorded=False, st
|
|||
return helper.list_to_camel_case(rows)
|
||||
|
||||
|
||||
def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=None):
|
||||
def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=None, version=False,
|
||||
last_tracker_version=None):
|
||||
with pg_client.PostgresClient() as cur:
|
||||
tracker_query = ""
|
||||
if last_tracker_version is not None and len(last_tracker_version) > 0:
|
||||
tracker_query = cur.mogrify(
|
||||
""",(SELECT tracker_version FROM public.sessions
|
||||
WHERE sessions.project_id = s.project_id
|
||||
AND tracker_version=%(version)s AND tracker_version IS NOT NULL LIMIT 1) AS tracker_version""",
|
||||
{"version": last_tracker_version}).decode('UTF-8')
|
||||
elif version:
|
||||
tracker_query = ",(SELECT tracker_version FROM public.sessions WHERE sessions.project_id = s.project_id ORDER BY start_ts DESC LIMIT 1) AS tracker_version"
|
||||
|
||||
query = cur.mogrify(f"""\
|
||||
SELECT
|
||||
s.project_id,
|
||||
|
|
@ -96,6 +107,7 @@ def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=
|
|||
s.name
|
||||
{",(SELECT max(ss.start_ts) FROM public.sessions AS ss WHERE ss.project_id = %(project_id)s) AS last_recorded_session_at" if include_last_session else ""}
|
||||
{',s.gdpr' if include_gdpr else ''}
|
||||
{tracker_query}
|
||||
FROM public.projects AS s
|
||||
where s.project_id =%(project_id)s
|
||||
AND s.deleted_at IS NULL
|
||||
|
|
|
|||
|
|
@ -91,9 +91,10 @@ def get_projects_limit(context: schemas.CurrentContext = Depends(OR_context)):
|
|||
|
||||
|
||||
@app.get('/projects/{projectId}', tags=['projects'])
|
||||
def get_project(projectId: int, context: schemas.CurrentContext = Depends(OR_context)):
|
||||
def get_project(projectId: int, last_tracker_version: Optional[str] = None,
|
||||
context: schemas.CurrentContext = Depends(OR_context)):
|
||||
data = projects.get_project(tenant_id=context.tenant_id, project_id=projectId, include_last_session=True,
|
||||
include_gdpr=True)
|
||||
include_gdpr=True, last_tracker_version=last_tracker_version)
|
||||
if data is None:
|
||||
return {"errors": ["project not found"]}
|
||||
return {"data": data}
|
||||
|
|
|
|||
|
|
@ -88,8 +88,19 @@ def get_projects(tenant_id, recording_state=False, gdpr=None, recorded=False, st
|
|||
return helper.list_to_camel_case(rows)
|
||||
|
||||
|
||||
def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=None):
|
||||
def get_project(tenant_id, project_id, include_last_session=False, include_gdpr=None, version=False,
|
||||
last_tracker_version=None):
|
||||
with pg_client.PostgresClient() as cur:
|
||||
tracker_query = ""
|
||||
if last_tracker_version is not None and len(last_tracker_version) > 0:
|
||||
tracker_query = cur.mogrify(
|
||||
""",(SELECT tracker_version FROM public.sessions
|
||||
WHERE sessions.project_id = s.project_id
|
||||
AND tracker_version=%(version)s AND tracker_version IS NOT NULL LIMIT 1) AS tracker_version""",
|
||||
{"version": last_tracker_version}).decode('UTF-8')
|
||||
elif version:
|
||||
tracker_query = ",(SELECT tracker_version FROM public.sessions WHERE sessions.project_id = s.project_id ORDER BY start_ts DESC LIMIT 1) AS tracker_version"
|
||||
|
||||
query = cur.mogrify(f"""\
|
||||
SELECT
|
||||
s.project_id,
|
||||
|
|
|
|||
|
|
@ -92,9 +92,10 @@ def get_projects_limit(context: schemas.CurrentContext = Depends(OR_context)):
|
|||
|
||||
|
||||
@app.get('/projects/{projectId}', tags=['projects'])
|
||||
def get_project(projectId: int, context: schemas.CurrentContext = Depends(OR_context)):
|
||||
def get_project(projectId: int, last_tracker_version: Optional[str] = None,
|
||||
context: schemas.CurrentContext = Depends(OR_context)):
|
||||
data = projects.get_project(tenant_id=context.tenant_id, project_id=projectId, include_last_session=True,
|
||||
include_gdpr=True)
|
||||
include_gdpr=True, last_tracker_version=last_tracker_version)
|
||||
if data is None:
|
||||
return {"errors": ["project not found"]}
|
||||
return {"data": data}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue