feat: add api of body record chart
continuous-integration/drone/push Build is passing Details

This commit is contained in:
BryantHe 2023-08-18 11:26:33 +08:00
parent a21bd3aef5
commit a55e4b97d6
3 changed files with 42 additions and 4 deletions

View File

@ -9,3 +9,8 @@ class AddBodyRecordError(HTTPError):
class BodyRecordNotFound(HTTPError): class BodyRecordNotFound(HTTPError):
status_code = 404 status_code = 404
message = '找不到该记录' message = '找不到该记录'
class BodyRecordChartError(HTTPError):
status_code = 500
message = '查询身体记录图表错误'

View File

@ -2,8 +2,9 @@ from apiflask import APIBlueprint
from flask import session from flask import session
from app import rpc from app import rpc
from app.api.v1.exception.record import AddBodyRecordError, BodyRecordNotFound from app.api.v1.exception.record import AddBodyRecordError, BodyRecordNotFound, BodyRecordChartError
from app.api.v1.schema.record import BodyRecordIn, BodyRecordOut, BodyRecordsOut, BodyRecordsIn from app.api.v1.schema.record import BodyRecordIn, BodyRecordOut, BodyRecordsOut, BodyRecordsIn, BodyRecordChartIn, \
BodyRecordChartOut
from app.util.auth import login_required from app.util.auth import login_required
record = APIBlueprint('record', __name__) record = APIBlueprint('record', __name__)
@ -50,3 +51,18 @@ def get_records(query_data):
except Exception as e: except Exception as e:
raise BodyRecordNotFound(extra_data={'error_docs': str(e)}) raise BodyRecordNotFound(extra_data={'error_docs': str(e)})
return {'records': results} return {'records': results}
@record.get('/chart')
@record.doc(summary='查询身体记录图表', description='查询身体记录图表')
@record.input(BodyRecordChartIn, location='query')
@record.output(BodyRecordChartOut)
@login_required
def get_record_charts(query_data):
try:
period = query_data.get('period', 'week')
current_date = query_data['current_date']
result = rpc.body_record.get_record_charts(session['user_id'], current_date, period)
except Exception as e:
raise BodyRecordChartError(extra_data={'error_docs': str(e)})
return result

View File

@ -23,3 +23,20 @@ class BodyRecordsIn(Schema):
class BodyRecordsOut(Schema): class BodyRecordsOut(Schema):
records = fields.List(fields.Nested(BodyRecordOut)) records = fields.List(fields.Nested(BodyRecordOut))
class BodyRecordChartIn(Schema):
current_date = fields.String(required=True)
period = fields.String()
class BodyRecordChartNestedOut(Schema):
weights = fields.List(fields.Float())
bmis = fields.List(fields.Float())
x_axis = fields.List(fields.Float())
class BodyRecordChartOut(Schema):
chart_data = fields.Nested(BodyRecordChartNestedOut)
previous_date = fields.String()
next_date = fields.String()