87 lines
3.6 KiB
Python
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) |