43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# scheme/classes.py
|
|
# 班级模块的请求/响应模型
|
|
from datetime import date
|
|
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
# -------------------- 请求体模型 -----------------------------
|
|
class ClassAdd(BaseModel):
|
|
class_id: Optional[int] = Field(None, ge=1, description="班级ID(不传则自增)")
|
|
class_name: str = Field(..., min_length=1, max_length=50, description="班级名称,如 Java2301")
|
|
start_time: date = Field(..., description="开课时间,格式 YYYY-MM-DD")
|
|
|
|
|
|
class ClassUpdate(BaseModel):
|
|
class_name: Optional[str] = Field(None, min_length=1, max_length=50, description="班级名称")
|
|
start_time: Optional[date] = Field(None, description="开课时间")
|
|
|
|
|
|
# -------------------- 响应模型 ----------------------------
|
|
class ClassResponse(BaseModel):
|
|
class_id: int
|
|
class_name: str
|
|
start_time: date
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class ClassListResponse(BaseModel):
|
|
total: int
|
|
items: List[ClassResponse]
|
|
|
|
|
|
class ClassStudentCountResponse(BaseModel):
|
|
"""班级人数统计(多维度班级统计)"""
|
|
class_id: int
|
|
class_name: str
|
|
total: int = Field(..., description="总人数")
|
|
male: int = Field(..., description="男生人数")
|
|
female: int = Field(..., description="女生人数")
|