from pydantic import BaseModel, Field, ConfigDict from datetime import datetime,date from typing import Optional, List class ClassCreate(BaseModel): class_name: str = Field(..., max_length=20, description="班级名称,唯一") head_teacher_id: int = Field(..., ge=1, description="班主任id") counselor_id: Optional[int] = Field(None, description="顾问id") create_time: Optional[datetime] = Field(None, description="开课时间,不传默认当前时间") teacher_ids: Optional[List[int]] = Field(None, description="绑定授课老师id列表") class ClassUpdateBase(BaseModel): class_name: Optional[str] = Field(None, max_length=20, description="班级名称") create_time: Optional[date] = Field(None, description="开课时间,格式 YYYY-MM-DD,不传默认当前日期") counselor_id: Optional[int] = Field(None, description="顾问id") class ClassHeadTeacherUpdate(BaseModel): head_teacher_id: int = Field(..., ge=1, description="新的班主任id") class ClassTeachersUpdate(BaseModel): teacher_ids: List[int] = Field(..., description="新老师id列表") class ClassDelete(BaseModel): class_ids: List[int] = Field(..., min_length=1, description="班级id列表") deleted: bool = Field(..., description="True 逻辑删除,False 恢复") class TeacherSimple(BaseModel): model_config = ConfigDict(from_attributes=True) t_id: int t_name: str class ClassDetail(BaseModel): model_config = ConfigDict(from_attributes=True) class_id: int class_name: str head_teacher_id: int counselor_id: Optional[int] = None create_time: Optional[datetime] = None class_delete: bool = False teachers: List[TeacherSimple] = [] class ClassPageResult(BaseModel): total: int items: List[ClassDetail] class BatchDeleteResult(BaseModel): affected_count: int