# students_api所有students的api路由、接口 from fastapi import APIRouter , Depends , HTTPException from students.dao.students_dao import * from students.model.students_model import * from students.schema.students_request import * from students.databases import * students_api = APIRouter() @students_api.get("/students" ,summary='学生资料查询' ,description='筛选条件全为空即查询所有学生资料,输入薪资会查询大于输入薪资以上的学生' ,response_model=list[StudentsQuery] ) def get_students( stu:StudentsQuery = Depends() , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) # 没值的不要 result = get_student_dao( s=s_dict , db=db ) if result: return result raise HTTPException(status_code=404, detail="没有找到符合条件的学生") @students_api.post("/students" ,summary='新增学生资料' ,description='学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。' ,response_model=StudentsResponse ) def add_student( stu:StudentsResponse = Depends() , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) result = add_student_dao( s=s_dict , db=db ) if not result: raise HTTPException(status_code=500, detail='手机号已有学生使用或必填项为空。') return result @students_api.put("/students" ,summary='学生资料更新' ,description='请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。' ,response_model=StudentsUpdate ) def get_students( stu:StudentsUpdate = Depends() , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) result = update_student_dao( s=s_dict , db=db ) if not result: raise HTTPException(status_code=500, detail='手机号已有学生使用。') return result @students_api.delete("/students" ,summary='删除学生资料' ,description='输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。' ,response_model=list[StudentsDelete] ) # 逻辑删除/软删除 def delete_students( stu:StudentsDelete = Depends() , db=Depends(get_db) ): s_dict = stu.model_dump(exclude_unset=True) result = delete_student_dao(s=s_dict, db=db) return result