# 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 * s_api = APIRouter() @s_api.get("/students" ,summary='学生资料查询' ,description=f'筛选条件全为空即查询所有学生资料,输入薪资会查询大于输入薪资以上的学生。\n ' f'时间格式:YYYY-MM-DD' ,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="没有找到符合条件的学生") @s_api.post("/students" ,summary='新增学生资料' ,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n ' f'注意事项:\n' f'时间格式:YYYY-MM-DD\n' f'班级ID和顾问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 ) return result @s_api.put("/students" ,summary='学生资料更新' ,description=f'请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。\n ' f'时间格式:YYYY-MM-DD' ,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 @s_api.delete("/students" ,summary='删除学生资料' ,description=f'输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。\n ' f'时间格式:YYYY-MM-DD' ,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