删除了冗余查询接口,查询接口新增查询枚举性别功能
This commit is contained in:
+34
-32
@@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException,Query,Path
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from core.database import get_db
|
from core.database import get_db
|
||||||
from schemas.student import StudentCreate, StudentUpdate
|
from schemas.student import StudentCreate, StudentUpdate, Gender
|
||||||
from dao import student as student_dao
|
from dao import student as student_dao
|
||||||
student_router = APIRouter()
|
student_router = APIRouter()
|
||||||
|
|
||||||
@@ -51,6 +51,7 @@ def update_student(
|
|||||||
@student_router.get("", summary="分页查询学生列表")
|
@student_router.get("", summary="分页查询学生列表")
|
||||||
def get_students(
|
def get_students(
|
||||||
# 三个查询条件都可以不传
|
# 三个查询条件都可以不传
|
||||||
|
gender:Gender = Query(default=None),
|
||||||
student_no: str | None = Query(default=None,description="按学号精确查询"),
|
student_no: str | None = Query(default=None,description="按学号精确查询"),
|
||||||
student_name: str | None = Query(default=None,description="按名字模糊查询"),
|
student_name: str | None = Query(default=None,description="按名字模糊查询"),
|
||||||
class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"),
|
class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"),
|
||||||
@@ -67,6 +68,7 @@ def get_students(
|
|||||||
class_id=class_id,
|
class_id=class_id,
|
||||||
page=page,
|
page=page,
|
||||||
page_size=page_size,
|
page_size=page_size,
|
||||||
|
gender = gender
|
||||||
)
|
)
|
||||||
data = [
|
data = [
|
||||||
{
|
{
|
||||||
@@ -95,37 +97,37 @@ def get_students(
|
|||||||
"data": data,
|
"data": data,
|
||||||
}
|
}
|
||||||
|
|
||||||
@student_router.get("/{id}", summary="查询学生详情")
|
# @student_router.get("/{id}", summary="查询学生详情")
|
||||||
def get_student(id: int = Path(gt=0),
|
# def get_student(id: int = Path(gt=0),
|
||||||
db: Session = Depends(get_db)):
|
# db: Session = Depends(get_db)):
|
||||||
# 根据路径中的 ID 查询学生
|
# # 根据路径中的 ID 查询学生
|
||||||
student = student_dao.get_student_by_id(id, db)
|
# student = student_dao.get_student_by_id(id, db)
|
||||||
|
#
|
||||||
if not student:
|
# if not student:
|
||||||
# 404 表示请求的数据不存在
|
# # 404 表示请求的数据不存在
|
||||||
raise HTTPException(status_code=404, detail="学生不存在")
|
# raise HTTPException(status_code=404, detail="学生不存在")
|
||||||
|
#
|
||||||
result = {
|
# result = {
|
||||||
"id": student.id,
|
# "id": student.id,
|
||||||
"student_no": student.student_no,
|
# "student_no": student.student_no,
|
||||||
"student_name": student.student_name,
|
# "student_name": student.student_name,
|
||||||
"class_id": student.class_id,
|
# "class_id": student.class_id,
|
||||||
"consultant_id": student.consultant_id,
|
# "consultant_id": student.consultant_id,
|
||||||
"native_place": student.native_place,
|
# "native_place": student.native_place,
|
||||||
"graduation_school": student.graduation_school,
|
# "graduation_school": student.graduation_school,
|
||||||
"major": student.major,
|
# "major": student.major,
|
||||||
"enrollment_date": student.enrollment_date,
|
# "enrollment_date": student.enrollment_date,
|
||||||
"graduation_date": student.graduation_date,
|
# "graduation_date": student.graduation_date,
|
||||||
"education": student.education,
|
# "education": student.education,
|
||||||
"age": student.age,
|
# "age": student.age,
|
||||||
"gender": student.gender,
|
# "gender": student.gender,
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
return {
|
# return {
|
||||||
"code": 200,
|
# "code": 200,
|
||||||
"detail": "查询成功",
|
# "detail": "查询成功",
|
||||||
"data": result,
|
# "data": result,
|
||||||
}
|
# }
|
||||||
|
|
||||||
@student_router.delete("/{id}", summary="逻辑删除学生")
|
@student_router.delete("/{id}", summary="逻辑删除学生")
|
||||||
def delete_student(id: int, db: Session = Depends(get_db)):
|
def delete_student(id: int, db: Session = Depends(get_db)):
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
from models.student import Student
|
from models.student import Student
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from schemas.student import Gender
|
||||||
|
|
||||||
|
|
||||||
#新建学生
|
#新建学生
|
||||||
def create_students(d: dict, db: Session):
|
def create_students(d: dict, db: Session):
|
||||||
stu = Student(**d)
|
stu = Student(**d)
|
||||||
@@ -62,6 +65,7 @@ def get_students(
|
|||||||
class_id: int | None = None,
|
class_id: int | None = None,
|
||||||
page: int = 1,
|
page: int = 1,
|
||||||
page_size: int = 10,
|
page_size: int = 10,
|
||||||
|
gender: Gender = None,
|
||||||
):
|
):
|
||||||
# 第一步:只查询没有被删除的学生
|
# 第一步:只查询没有被删除的学生
|
||||||
query = db.query(Student).filter(Student.is_deleted == 0)
|
query = db.query(Student).filter(Student.is_deleted == 0)
|
||||||
@@ -71,6 +75,10 @@ def get_students(
|
|||||||
# 学号使用精确查询
|
# 学号使用精确查询
|
||||||
query = query.filter(Student.student_no == student_no)
|
query = query.filter(Student.student_no == student_no)
|
||||||
|
|
||||||
|
if gender:
|
||||||
|
#查询枚举性别
|
||||||
|
query = query.filter(Student.gender == gender)
|
||||||
|
|
||||||
if student_name:
|
if student_name:
|
||||||
# 姓名使用模糊查询,例如“张”可以查到“张三”
|
# 姓名使用模糊查询,例如“张”可以查到“张三”
|
||||||
query = query.filter(Student.student_name.like(f"%{student_name}%"))
|
query = query.filter(Student.student_name.like(f"%{student_name}%"))
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
@@ -40,3 +42,6 @@ class StudentUpdate(BaseModel):
|
|||||||
age: int | None = Field(default=None, ge=0, le=150)
|
age: int | None = Field(default=None, ge=0, le=150)
|
||||||
gender: Literal["男", "女"] | None = None
|
gender: Literal["男", "女"] | None = None
|
||||||
|
|
||||||
|
class Gender(str,Enum):
|
||||||
|
g1 = '男'
|
||||||
|
g2 = '女'
|
||||||
Reference in New Issue
Block a user