feat(api): custom metrics merge get sessions by series

feat(api): custom metrics merge get chart by series
feat(api): custom metrics merge try
This commit is contained in:
Taha Yassine Kraiem 2022-02-06 18:48:22 +01:00
parent d9e5336700
commit c43306ff32
3 changed files with 25 additions and 3 deletions

View file

@ -25,12 +25,28 @@ def try_live(project_id, data: schemas.TryCustomMetricsSchema):
return results
def merged_live(project_id, data: schemas.TryCustomMetricsSchema):
series_charts = try_live(project_id=project_id, data=data)
results = [{}] * len(series_charts[0])
for i in range(len(results)):
for j, series_chart in enumerate(series_charts):
results[i] = {**results[i], "timestamp": series_chart[i]["timestamp"],
data.series[j].name if data.series[j].name else j: series_chart[i]["count"]}
return results
def make_chart(project_id, user_id, metric_id, data: schemas.CustomMetricChartPayloadSchema):
metric = get(metric_id=metric_id, project_id=project_id, user_id=user_id, flatten=False)
if metric is None:
return None
metric: schemas.TryCustomMetricsSchema = schemas.TryCustomMetricsSchema.parse_obj({**data.dict(), **metric})
return try_live(project_id=project_id, data=metric)
series_charts = try_live(project_id=project_id, data=metric)
results = [{}] * len(series_charts[0])
for i in range(len(results)):
for j, series_chart in enumerate(series_charts):
results[i] = {**results[i], "timestamp": series_chart[i]["timestamp"],
metric.series[j].name: series_chart[i]["count"]}
return results
def get_sessions(project_id, user_id, metric_id, data: schemas.CustomMetricRawPayloadSchema):
@ -42,7 +58,8 @@ def get_sessions(project_id, user_id, metric_id, data: schemas.CustomMetricRawPa
for s in metric.series:
s.filter.startDate = data.startDate
s.filter.endDate = data.endDate
results.append(sessions.search2_pg(data=s.filter, project_id=project_id, user_id=user_id))
results.append({"seriesId": s.series_id, "seriesName": s.name,
**sessions.search2_pg(data=s.filter, project_id=project_id, user_id=user_id)})
return results

View file

@ -1082,7 +1082,8 @@ def change_client_password(data: schemas.EditUserPasswordSchema = Body(...),
@app.put('/{projectId}/custom_metrics/try', tags=["customMetrics"])
def try_custom_metric(projectId: int, data: schemas.TryCustomMetricsSchema = Body(...),
context: schemas.CurrentContext = Depends(OR_context)):
return {"data": custom_metrics.try_live(project_id=projectId, data=data)}
return {"data": custom_metrics.merged_live
(project_id=projectId, data=data)}
@app.post('/{projectId}/custom_metrics/sessions', tags=["customMetrics"])

View file

@ -654,10 +654,14 @@ class CustomMetricSeriesFilterSchema(FlatSessionsSearchPayloadSchema):
class CustomMetricCreateSeriesSchema(BaseModel):
series_id: Optional[int] = Field(None)
name: Optional[str] = Field(None)
index: Optional[int] = Field(None)
filter: Optional[CustomMetricSeriesFilterSchema] = Field([])
class Config:
alias_generator = attribute_to_camel_case
class CreateCustomMetricsSchema(BaseModel):
name: str = Field(...)