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

51 lines
1.5 KiB
Python

from apiflask import APIBlueprint
from flask import session
from app import rpc
from app.api.v1.exception.record import AddBodyRecordError, BodyRecordNotFound
from app.api.v1.schema.record import BodyRecordIn, BodyRecordOut, BodyRecordsOut
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()
return result
@record.get('/list')
@record.doc(summary='查询身体记录列表', description='查询身体记录列表')
@record.output(BodyRecordsOut)
@login_required
def get_records():
try:
results = rpc.body_record.get_all_by_user(session['user_id'])
except Exception as e:
raise BodyRecordNotFound()
return {'records': results}