49 lines
1.1 KiB
Python

from typing import Optional
from datetime import datetime
from pydantic import BaseModel
from app.schemas.student import Student
from app.schemas.course import Course
# Shared properties
class ClassEnrollmentBase(BaseModel):
student_id: int
course_id: int
enrollment_date: Optional[datetime] = None
grade: Optional[float] = None
semester: str
academic_year: str
# Properties to receive via API on creation
class ClassEnrollmentCreate(ClassEnrollmentBase):
pass
# Properties to receive via API on update
class ClassEnrollmentUpdate(BaseModel):
grade: Optional[float] = None
semester: Optional[str] = None
academic_year: Optional[str] = None
class ClassEnrollmentInDBBase(ClassEnrollmentBase):
id: int
class Config:
from_attributes = True
# Additional properties to return via API
class ClassEnrollment(ClassEnrollmentInDBBase):
pass
# Class enrollment with Student and Course details
class ClassEnrollmentWithDetails(ClassEnrollment):
student: Optional[Student] = None
course: Optional[Course] = None
# Update forward refs
ClassEnrollmentWithDetails.model_rebuild()