ManagementSystem/TrackingToolWebAU/models.py

39 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, LargeBinary, UniqueConstraint
from sqlalchemy.orm import relationship
from database import Base
import datetime
class Student(Base):
__tablename__ = "students"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), nullable=False)
email = Column(String(100), nullable=False, unique=True, index=True)
avatar = Column(String(500), nullable=True, index=True)
__table_args__ = (UniqueConstraint('email', name='uq_student_email'),)
checkins = relationship("CheckInLog", back_populates="student")
encodings = relationship("StudentEncoding", back_populates="student")
class StudentEncoding(Base):
__tablename__ = "student_encodings"
id = Column(Integer, primary_key=True, index=True)
student_id = Column(Integer, ForeignKey("students.id"))
encoding = Column(LargeBinary, nullable=False)
created_at = Column(DateTime, default=datetime.datetime.utcnow)
student = relationship("Student", back_populates="encodings")
class CheckInLog(Base):
__tablename__ = "checkin_logs"
id = Column(Integer, primary_key=True, index=True)
student_id = Column(Integer, ForeignKey("students.id"))
time = Column(DateTime, default=datetime.datetime.utcnow)
status = Column(String(100), nullable=True)
camera_id = Column(String(100))
student = relationship("Student", back_populates="checkins")