from sqlalchemy.exc import SQLAlchemyError from fastapi import HTTPException from model.teaModel import Teacher def get_teachers_limit_dao(p,n,db): if p == 0 and n == 0: r = db.query(Teacher).all() else: if p < 1: p = 1 r = db.query(Teacher).offset((p-1)*n).limit(n).all() return [ {'id':i.id,'t_name':i.t_name,'t_sex':i.t_sex,'t_age':i.t_age} for i in r] def get_teachers_name_dao(name,db): try: r = db.query(Teacher).filter(Teacher.t_name==name).all() except SQLAlchemyError as e: db.rollback() raise HTTPException(status_code=500, detail=f'查询失败:{str(e)}') else: return [ {'id':i.id,'t_name':i.t_name,'t_sex':i.t_sex,'t_age':i.t_age} for i in r] def insert_teachers_dao(req,db): try: exist = db.query(Teacher).filter(Teacher.t_phone==req['t_phone']).first() if exist: raise HTTPException(status_code=400,detail='该手机号码已存在,不可重复使用') t = Teacher(**req) db.add(t) except SQLAlchemyError as e: db.rollback() raise HTTPException(status_code=500,detail=f'添加失败:{str(e)}') else: db.commit() return True,'添加成功' def update_teachers_dao(req,db,t_id): try: db.query(Teacher).filter(Teacher.id == t_id).update(req) except SQLAlchemyError as e: db.rollback() raise HTTPException(status_code=500,detail=f'更新失败:{str(e)}') else: db.commit() return True,'更新成功' def delete_teachers_dao(t_id,db): try: r = db.query(Teacher).filter(Teacher.id == t_id).all() if not r: raise HTTPException(status_code=404,detail='记录不存在') for i in r: if i.is_delete == 0: db.query(Teacher).filter(Teacher.id == i.id).update({'is_delete':True}) else: raise HTTPException(status_code=400,detail='该记录已删除,不可重复删除') except SQLAlchemyError as e: db.rollback() raise HTTPException(status_code=500,detail=f'删除失败:{str(e)}') else: db.commit() return True,'删除成功'