增加了分页查询,性别输入校验
This commit is contained in:
+61
-13
@@ -1,4 +1,5 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException,Query,Path
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from core.database import get_db
|
||||
@@ -6,7 +7,7 @@ from schemas.student import StudentCreate, StudentUpdate
|
||||
from dao import student as student_dao
|
||||
student_router = APIRouter()
|
||||
|
||||
@student_router.post("",summary='添加学生')
|
||||
@student_router.put("",summary='添加学生')
|
||||
def create_student(request:StudentCreate,db:Session = Depends(get_db)):
|
||||
d = request.model_dump()
|
||||
r = student_dao.create_students(d,db)
|
||||
@@ -14,7 +15,7 @@ def create_student(request:StudentCreate,db:Session = Depends(get_db)):
|
||||
raise HTTPException(status_code=500,detail='服务器繁忙,请稍后添加!')
|
||||
return {'code':200,'detail':"添加学生成功"}
|
||||
|
||||
@student_router.put("/{id}", summary="修改学生")
|
||||
@student_router.post("/{id}", summary="更新学生信息")
|
||||
def update_student(
|
||||
id: int,
|
||||
request: StudentUpdate,
|
||||
@@ -34,38 +35,69 @@ def update_student(
|
||||
if student is False:
|
||||
raise HTTPException(status_code=500, detail="修改学生失败")
|
||||
|
||||
#传入空字典报400
|
||||
if not data:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail="没有传入需要修改的字段",
|
||||
)
|
||||
|
||||
return {
|
||||
"code": 200,
|
||||
"detail": "修改学生成功",
|
||||
"data": student,
|
||||
}
|
||||
|
||||
@student_router.get("", summary="查询学生列表")
|
||||
@student_router.get("", summary="分页查询学生列表")
|
||||
def get_students(
|
||||
# 三个查询条件都可以不传
|
||||
student_no: str | None = None,
|
||||
student_name: str | None = None,
|
||||
class_id: int | None = None,
|
||||
student_no: str | None = Query(default=None,description="按学号精确查询"),
|
||||
student_name: str | None = Query(default=None,description="按名字模糊查询"),
|
||||
class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"),
|
||||
# 获取本次请求使用的数据库连接
|
||||
db: Session = Depends(get_db),
|
||||
page:int = Query(default=1,ge=1,description="页码,从1开始"),
|
||||
page_size:int = Query(default=10,ge=1,le=100,description="每页条数,最多100条"),
|
||||
):
|
||||
# 调用 DAO 查询数据库
|
||||
students = student_dao.get_students(
|
||||
total, students = student_dao.get_students(
|
||||
db=db,
|
||||
student_no=student_no,
|
||||
student_name=student_name,
|
||||
class_id=class_id,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
data = [
|
||||
{
|
||||
"id": student.id,
|
||||
"student_no": student.student_no,
|
||||
"student_name": student.student_name,
|
||||
"class_id": student.class_id,
|
||||
"consultant_id": student.consultant_id,
|
||||
"native_place": student.native_place,
|
||||
"graduation_school": student.graduation_school,
|
||||
"major": student.major,
|
||||
"enrollment_date": student.enrollment_date,
|
||||
"graduation_date": student.graduation_date,
|
||||
"education": student.education,
|
||||
"age": student.age,
|
||||
"gender": student.gender,
|
||||
}
|
||||
for student in students
|
||||
]
|
||||
return {
|
||||
"code": 200,
|
||||
"detail": "查询成功",
|
||||
"total": len(students),
|
||||
"data": students,
|
||||
"total": total,
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"data": data,
|
||||
}
|
||||
|
||||
@student_router.get("/{id}", summary="查询学生详情")
|
||||
def get_student(id: int, db: Session = Depends(get_db)):
|
||||
def get_student(id: int = Path(gt=0),
|
||||
db: Session = Depends(get_db)):
|
||||
# 根据路径中的 ID 查询学生
|
||||
student = student_dao.get_student_by_id(id, db)
|
||||
|
||||
@@ -73,10 +105,26 @@ def get_student(id: int, db: Session = Depends(get_db)):
|
||||
# 404 表示请求的数据不存在
|
||||
raise HTTPException(status_code=404, detail="学生不存在")
|
||||
|
||||
result = {
|
||||
"id": student.id,
|
||||
"student_no": student.student_no,
|
||||
"student_name": student.student_name,
|
||||
"class_id": student.class_id,
|
||||
"consultant_id": student.consultant_id,
|
||||
"native_place": student.native_place,
|
||||
"graduation_school": student.graduation_school,
|
||||
"major": student.major,
|
||||
"enrollment_date": student.enrollment_date,
|
||||
"graduation_date": student.graduation_date,
|
||||
"education": student.education,
|
||||
"age": student.age,
|
||||
"gender": student.gender,
|
||||
}
|
||||
|
||||
return {
|
||||
"code": 200,
|
||||
"detail": "查询成功",
|
||||
"data": student,
|
||||
"data": result,
|
||||
}
|
||||
|
||||
@student_router.delete("/{id}", summary="逻辑删除学生")
|
||||
|
||||
Reference in New Issue
Block a user