pzx-web-api/app/api/v1/record.py

69 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from apiflask import APIBlueprint
from flask import session
from app import rpc
from app.api.v1.exception.record import AddBodyRecordError, BodyRecordNotFound, BodyRecordChartError
from app.api.v1.schema.record import BodyRecordIn, BodyRecordOut, BodyRecordsOut, BodyRecordsIn, BodyRecordChartIn, \
BodyRecordChartOut
from app.util.auth import login_required
record = APIBlueprint('record', __name__)
@record.post('/')
@record.doc(summary='添加身体记录', description='添加身体记录')
@record.input(BodyRecordIn, location='json')
@login_required
def add_record(json_data):
try:
rpc.body_record.add(**{
'user_id': session['user_id'],
'height': json_data['height'],
'weight': json_data['weight'],
'bmi': json_data['bmi']
})
except Exception as e:
raise AddBodyRecordError(extra_data={'error_docs': str(e)})
return {'msg': 'add body record success'}
@record.get('/<record_id>')
@record.doc(summary='查询单条身体记录', description='查询单条身体记录')
@record.output(BodyRecordOut)
@login_required
def get_record(record_id):
try:
result = rpc.body_record.get_one(record_id)
except Exception as e:
raise BodyRecordNotFound(extra_data={'error_docs': str(e)})
return result
@record.get('/list')
@record.doc(summary='查询身体记录列表', description='查询身体记录列表')
@record.input(BodyRecordsIn, location='query')
@record.output(BodyRecordsOut)
@login_required
def get_records(query_data):
try:
sort = query_data.get('sort', '-create_time')
results = rpc.body_record.get_all_by_user(session['user_id'], sort)
except Exception as e:
raise BodyRecordNotFound(extra_data={'error_docs': str(e)})
return {'records': results}
@record.get('/chart')
@record.doc(summary='查询身体记录图表', description='查询身体记录图表。注period 参数有 ["week", "day", "month"] 三个选项,如果不传,则默认是 week')
@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