Files
Tg-job/mtucijobsbackend/app/models.py

87 lines
3.6 KiB
Python

from sqlalchemy import Column, Integer, String, Boolean, ForeignKey, ARRAY, UniqueConstraint
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase): pass
class Users(Base):
__tablename__ = 'Users'
UserID = Column(Integer, primary_key=True, autoincrement=True)
Email = Column(String(166), nullable=False, unique=True)
Hashed_password = Column(String(200), nullable=False)
class Students(Base):
__tablename__ = 'Students'
StudentID = Column(Integer, primary_key=True, autoincrement=True)
Name = Column(String(155), nullable=False)
Type = Column(String(60), nullable=False)
Faculties = Column(String(70), nullable=False)
Group = Column(String(20), nullable=False)
Year = Column(Integer, nullable=False)
Experience_specialty = Column(Boolean, nullable=False)
Time = Column(ARRAY(String(3)), nullable=False)
Soft_skills = Column(String(155), nullable=False)
Link = Column(String(155), nullable=False)
Email = Column(String(166), nullable=False)
Phone_number = Column(String(16), nullable=False)
class Jobs(Base):
__tablename__ = 'Jobs'
JobID = Column(Integer, primary_key=True, autoincrement=True)
UserID = Column(Integer, ForeignKey(
"Users.UserID", ondelete="CASCADE"), nullable=False)
Company_name = Column(String(155), nullable=False)
Link_to_job = Column(String(155), nullable=True)
Job_name = Column(String(155), nullable=False)
Year = Column(String(1), nullable=False)
Qualification = Column(Boolean, nullable=False)
Salary_after_interview = Column(Boolean, nullable=False)
Salary = Column(Integer, nullable=False)
Email = Column(String(155), nullable=False)
Archive = Column(Boolean, nullable=False)
Responsibilities = Column(String(255), nullable=False)
Time = Column(ARRAY(String), nullable=False)
class Hard_skills(Base):
__tablename__ = 'Hard_skills'
Hard_skillID = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
Title = Column(String, nullable=False, unique=True)
class StudentsHard_skills(Base):
__tablename__ = 'StudentsHard_skills'
StudentID = Column(Integer, ForeignKey(
"Students.StudentID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
Hard_skillID = Column(Integer, ForeignKey(
"Hard_skills.Hard_skillID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
class JobsHard_skills(Base):
__tablename__ = 'JobsHard_skills'
JobID = Column(Integer, ForeignKey(
"Jobs.JobID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
Hard_skillID = Column(Integer, ForeignKey(
"Hard_skills.Hard_skillID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
class Responses(Base):
__tablename__ = 'Responses'
ResponseID = Column(Integer, primary_key=True, autoincrement=True)
StudentID = Column(Integer, ForeignKey(
"Students.StudentID", onupdate="CASCADE", ondelete="CASCADE"))
JobID = Column(Integer, ForeignKey(
"Jobs.JobID", onupdate="CASCADE", ondelete="CASCADE"))
Status = Column(String(50), nullable=True)
Comment = Column(String(700), nullable=True)
Link = Column(String(155), nullable=True)
__table_args__ = (
UniqueConstraint('StudentID', 'JobID', name='unique_student_job_for_responses'),
)
class Matches(Base):
__tablename__ = 'Matches'
StudentID = Column(Integer, ForeignKey(
"Students.StudentID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
JobID = Column(Integer, ForeignKey(
"Jobs.JobID", onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
Match = Column(Integer, nullable=False)