feat(api): custom metrics get chart
This commit is contained in:
parent
ad6caaa225
commit
6b58a93fd5
3 changed files with 26 additions and 6 deletions
|
|
@ -12,19 +12,25 @@ def try_live(project_id, data: schemas.TryCustomMetricsSchema):
|
|||
s.filter.startDate = data.startDate
|
||||
s.filter.endDate = data.endDate
|
||||
results.append(sessions.search2_series(data=s.filter, project_id=project_id, density=data.density,
|
||||
view_type=data.view_type))
|
||||
if data.view_type == schemas.MetricViewType.progress:
|
||||
view_type=data.viewType))
|
||||
if data.viewType == schemas.MetricViewType.progress:
|
||||
r = {"count": results[-1]}
|
||||
diff = s.filter.endDate - s.filter.startDate
|
||||
s.filter.startDate = data.endDate
|
||||
s.filter.endDate = data.endDate - diff
|
||||
r["previousCount"] = sessions.search2_series(data=s.filter, project_id=project_id, density=data.density,
|
||||
view_type=data.view_type)
|
||||
view_type=data.viewType)
|
||||
r["countProgress"] = helper.__progress(old_val=r["previousCount"], new_val=r["count"])
|
||||
results[-1] = r
|
||||
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)
|
||||
metric: schemas.TryCustomMetricsSchema = schemas.TryCustomMetricsSchema.parse_obj({**data.dict(), **metric})
|
||||
return try_live(project_id=project_id, data=metric)
|
||||
|
||||
|
||||
def create(project_id, user_id, data: schemas.CreateCustomMetricsSchema):
|
||||
with pg_client.PostgresClient() as cur:
|
||||
_data = {}
|
||||
|
|
|
|||
|
|
@ -1114,6 +1114,13 @@ def get_custom_metric(projectId: int, metric_id: int, context: schemas.CurrentCo
|
|||
return {"data": custom_metrics.get(project_id=projectId, user_id=context.user_id, metric_id=metric_id)}
|
||||
|
||||
|
||||
@app.post('/{projectId}/custom_metrics/{metric_id}/chart', tags=["customMetrics"])
|
||||
def get_custom_metric_chart(projectId: int, metric_id: int, data: schemas.CustomMetricChartPayloadSchema = Body(...),
|
||||
context: schemas.CurrentContext = Depends(OR_context)):
|
||||
return {"data": custom_metrics.make_chart(project_id=projectId, user_id=context.user_id, metric_id=metric_id,
|
||||
data=data)}
|
||||
|
||||
|
||||
@app.post('/{projectId}/custom_metrics/{metric_id}', tags=["customMetrics"])
|
||||
@app.put('/{projectId}/custom_metrics/{metric_id}', tags=["customMetrics"])
|
||||
def update_custom_metric(projectId: int, metric_id: int, data: schemas.UpdateCustomMetricsSchema = Body(...),
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@ class CustomMetricSeriesFilterSchema(SessionsSearchPayloadSchema):
|
|||
|
||||
|
||||
class CustomMetricCreateSeriesSchema(BaseModel):
|
||||
title: Optional[str] = Field(None)
|
||||
name: Optional[str] = Field(None)
|
||||
index: Optional[int] = Field(None)
|
||||
filter: Optional[CustomMetricSeriesFilterSchema] = Field([])
|
||||
|
||||
|
|
@ -605,11 +605,18 @@ class MetricViewType(str, Enum):
|
|||
progress = "progress"
|
||||
|
||||
|
||||
class TryCustomMetricsSchema(CreateCustomMetricsSchema):
|
||||
class CustomMetricChartPayloadSchema(BaseModel):
|
||||
startDate: int = Field(TimeUTC.now(-7))
|
||||
endDate: int = Field(TimeUTC.now())
|
||||
density: int = Field(7)
|
||||
view_type: MetricViewType = Field(MetricViewType.line_chart)
|
||||
viewType: MetricViewType = Field(MetricViewType.line_chart)
|
||||
|
||||
class Config:
|
||||
alias_generator = attribute_to_camel_case
|
||||
|
||||
|
||||
class TryCustomMetricsSchema(CreateCustomMetricsSchema, CustomMetricChartPayloadSchema):
|
||||
name: Optional[str] = Field(None)
|
||||
|
||||
|
||||
class CustomMetricUpdateSeriesSchema(CustomMetricCreateSeriesSchema):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue