/
BelgradeGambit
/
CLP
Обзор
Документация
Войти
/
BelgradeGambit
/
CLP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
server/src/models.py
110 строк
4 KB
SaintTonka
11
09 янв 2025, 01:55
09 янв 2025, 01:55
31b3fd6
Код
Авторство
О чём код?
from sqlalchemy import ( Column, Integer, String, DateTime, LargeBinary, ForeignKey ) from sqlalchemy.orm import relationship from src.database import Base class Department(Base): __tablename__ = "department" department_id = Column(Integer, primary_key=True, index=True) department_name = Column(String(50), nullable=False) instructors = relationship("Instructor", back_populates="department", cascade="all, delete", passive_deletes=True) groups = relationship("Group", back_populates="department", cascade="all, delete", passive_deletes=True) class Instructor(Base): __tablename__ = "instructor" instructor_id = Column(Integer, primary_key=True, index=True) first_name = Column(String(50), index=True) last_name = Column(String(50), index=True) birth_date = Column(DateTime(timezone=True)) employ_date = Column(DateTime(timezone=True)) photo = Column(LargeBinary, nullable=True) department_id = Column( Integer, ForeignKey("department.department_id", ondelete="CASCADE"), nullable=False ) groups = relationship("Group", back_populates="instructor") department = relationship("Department", back_populates="instructors") class Group(Base): __tablename__ = "group" group_id = Column(Integer, primary_key=True, index=True) group_name = Column(String(50), nullable=False) instructor_id = Column(Integer, ForeignKey("instructor.instructor_id", ondelete="SET NULL"), nullable=True) department_id = Column(Integer, ForeignKey("department.department_id", ondelete="CASCADE"), nullable=False) instructor = relationship("Instructor", back_populates="groups") department = relationship("Department", back_populates="groups") students = relationship( "Student", secondary="student_group", back_populates="groups", cascade="all, delete", passive_deletes=True ) class Student(Base): __tablename__ = "student" student_id = Column(Integer, primary_key=True, index=True) first_name = Column(String(50), index=True) last_name = Column(String(50), index=True) patronymic = Column(String(50), index=True) birth_date = Column(DateTime(timezone=True)) enroll_date = Column(DateTime(timezone=True)) photo = Column(LargeBinary, nullable=True) department_id = Column(Integer, ForeignKey("department.department_id", ondelete="SET NULL")) groups = relationship( "Group", secondary="student_group", back_populates="students" ) # Связь с предметами (many-to-many через student_subject) subjects = relationship( "Subject", secondary="student_subject", back_populates="students" ) class Subject(Base): __tablename__ = "subject" subject_id = Column(Integer, primary_key=True, index=True) subject_name = Column(String(50), nullable=False) # Связь со студентами (many-to-many через student_subject) students = relationship( "Student", secondary="student_subject", back_populates="subjects" ) class StudentGroup(Base): __tablename__ = "student_group" student_id = Column(Integer, ForeignKey("student.student_id", ondelete='CASCADE'), primary_key=True) group_id = Column(Integer, ForeignKey("group.group_id", ondelete='CASCADE'), primary_key=True) class StudentSubject(Base): __tablename__ = "student_subject" student_id = Column(Integer, ForeignKey("student.student_id", ondelete='CASCADE'), primary_key=True) subject_id = Column(Integer, ForeignKey("subject.subject_id", ondelete='CASCADE'), primary_key=True)