from typing import Optional from pydantic import BaseModel from datetime import datetime class GradeBase(BaseModel): student_id: int subject_id: int score: float max_score: float = 100.0 grade_type: str description: Optional[str] = None class GradeCreate(GradeBase): pass class GradeUpdate(BaseModel): score: Optional[float] = None max_score: Optional[float] = None grade_type: Optional[str] = None description: Optional[str] = None class GradeInDBBase(GradeBase): id: int graded_at: datetime created_at: datetime updated_at: Optional[datetime] = None class Config: orm_mode = True class Grade(GradeInDBBase): pass