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}>"