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:
parent
d9e5336700
commit
c43306ff32
3 changed files with 25 additions and 3 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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"])
|
||||
|
|
|
|||
|
|
@ -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(...)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue