25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
from datetime import datetime
|
|
from sqlalchemy import Column, Integer, Float, DateTime, ForeignKey, Text, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from app.db.base_class import Base
|
|
|
|
|
|
class ExamResult(Base):
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
exam_id = Column(Integer, ForeignKey("exam.id"), nullable=False)
|
|
student_id = Column(Integer, ForeignKey("student.id"), nullable=False)
|
|
score = Column(Float, nullable=True) # Final score
|
|
max_score = Column(Float, nullable=True) # Maximum possible score
|
|
started_at = Column(DateTime, default=datetime.utcnow)
|
|
completed_at = Column(DateTime, nullable=True)
|
|
is_completed = Column(Boolean, default=False)
|
|
remarks = Column(Text, nullable=True)
|
|
|
|
# Relationships
|
|
exam = relationship("Exam", back_populates="exam_results")
|
|
student = relationship("Student", backref="exam_results")
|
|
answers = relationship("StudentAnswer", back_populates="exam_result", cascade="all, delete-orphan")
|
|
|
|
def __repr__(self):
|
|
return f"<ExamResult {self.id}: Student {self.student_id}, Exam {self.exam_id}>" |