from typing import Optional,List from pydantic import BaseModel,Field from datetime import date from model.student_model import Sex ##================ =====请求体=============== class StudentCreateRequest(BaseModel): stu_id:str=Field(...,description="学生id") class_id:Optional[str]=Field(None,description="学生班级id") stu_name: str = Field(..., description="学生姓名") native_place: Optional[str] = Field(None, description="籍贯") graduate_school: Optional[str] = Field(None, description="毕业院校") major: Optional[str] = Field(None, description="专业") enroll_date: Optional[date] = Field(None, description="入学时间") graduate_date: Optional[date] = Field(None, description="毕业时间") education: Optional[str] = Field(None, description="学历") advisor_no: Optional[str] = Field(None, description="顾问编号") age: Optional[int] = Field(None, ge=0, description="年龄,不能负数") gender: Optional[Sex] = Field(None, description="性别") class StudentUpdateRequest(BaseModel): stu_id:Optional[str]=None#学生id class_id: Optional[str] = None # 学生班级 stu_name: Optional[str] = None # 学生姓名 native_place: Optional[str] = None # 籍贯 graduate_school: Optional[str] = None # 毕业院校 major: Optional[str] = None # 专业 enroll_date: Optional[date] = None # 入学时间 graduate_date: Optional[date] = None # 毕业时间 education: Optional[str] = None # 学历 advisor_no: Optional[str] = None # 顾问编号 age: Optional[int] = Field(None, ge=0) # 年龄,不能负数 gender: Optional[Sex] = Field(None, description="性别") # 性别''' class StudentQuery(BaseModel): stu_id: Optional[str] = None # 学生编号筛选 stu_name: Optional[str] = None # 学生姓名筛选 class_id: Optional[str] = None # 班级筛选 page: int = Field(1, ge=1, description="页码,默认第1页") page_size: int = Field(10, ge=1, le=100, description="每页条数,默认10条") ##=====================响应体=============== class StudentResponse(BaseModel): stu_id: str# 学生编号 class_id: Optional[str]# 学生班级 stu_name: str# 学生姓名 native_place: Optional[str] # 籍贯 graduate_school: Optional[str] # 毕业院校 major: Optional[str]# 专业 enroll_date: Optional[date] # 入学时间 graduate_date: Optional[date] # 毕业时间 education: Optional[str] # 学历 advisor_no: Optional[str]# 顾问编号 age: Optional[int]# 年龄 gender: Optional[Sex] = Field(None, description="性别")# 性别 is_deleted: bool# 逻辑删除标记 # 分页列表响应体:查询学生列表时返回 class StudentPageResponse(BaseModel): total: int# 符合条件的总记录数 page: int# 当前页码 page_size: int# 每页数据条数 items: List[StudentResponse] # 当前页学生数据列表