from model.all_model import ClassManagement from fastapi import HTTPException from schema.cla_schema import claRequest def add_class_dao(c:claRequest,session): try: data = c.model_dump() d = ClassManagement(**data) session.add(d) except: session.rollback() return '输入有误,请重新添加班级!' else: session.commit() return '添加成功!' def get_class_dao(n,m,session): try: class_list=session.query(ClassManagement).filter(ClassManagement.delete_status==0).offset((n-1)*m).limit(m).all() return class_list except: raise HTTPException(status_code=406,detail="输入查询信息有误,请重新输入!") def update_class_dao(id:int,req:ClassManagement,session): try: session.query(ClassManagement).filter(ClassManagement.class_id==id)\ .filter(ClassManagement.delete_status==0).update(req.model_dump(exclude_unset=True)) session.commit() except: raise HTTPException(status_code=400,detail="更新格式错误或参数缺失,请重新输入!") return '更新成功,请核对信息!' def delete_class_dao(id:int,session): try: session.query(ClassManagement).filter(ClassManagement.class_id==id,ClassManagement.delete_status==0)\ .update({'delete_status': 1}) session.commit() except: raise HTTPException(status_code=404, detail="删除异常,请重新核对之后删除!") return '删除成功,请核对信息!' def get_class_for_delete(id: int, session): try: obj = ( session.query(ClassManagement).filter(ClassManagement.class_id == id,ClassManagement.delete_status == 0).first() ) if not obj: raise HTTPException(status_code=404, detail="班级不存在") except HTTPException: raise except Exception: raise HTTPException(status_code=500, detail="查询异常,请重新核对!") return { "class_id": obj.class_id, "class_name": obj.class_name, "start_class_date": obj.start_class_date, "head_teacher_id": obj.head_teacher_id, "class_teacher_id": obj.class_teacher_id, } def hard_delete_class(id: int, session): try: obj = ( session.query(ClassManagement).filter(ClassManagement.class_id == id,ClassManagement.delete_status == 0) .first() ) if not obj: raise HTTPException(status_code=404, detail="班级不存在") session.delete(obj) session.commit() except HTTPException: raise except Exception: session.rollback() raise HTTPException(status_code=500, detail="删除异常,请重新核对之后删除!") return '删除成功,请核对信息!'