49 lines
1.1 KiB
Python
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() |