JobSimpliFY / models.py
EnigmaOfTheWorld's picture
Upload 7 files
a101471
from typing import List
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy import ForeignKey, create_engine
ENGINE = create_engine('sqlite:///application_dev.db')
class Base(DeclarativeBase):
pass
class Employee(Base):
__tablename__ = 'employees'
employee_id: Mapped[str] = mapped_column(primary_key = True)
email_id: Mapped[str] = mapped_column(unique = True,nullable = False)
first_name: Mapped[str] = mapped_column(nullable = True)
last_name: Mapped[str] = mapped_column(nullable = True)
password: Mapped[str]
department: Mapped[str]
# jobs_posted: Mapped[list["Job"]] = relationship(back_populates="jobs")
def __repr__(self):
return f'Employee({self.employee_id!r},{self.email_id!r},{self.first_name!r},{self.department!r})'
@property
def full_name(self):
return f'{self.first_name.title()} {self.last_name.title()}'
class Job(Base):
__tablename__ = 'jobs'
job_id :Mapped[str] = mapped_column(primary_key = True)
employee_id :Mapped[str] #= mapped_column(ForeignKey('employees.employee_id'))
post_name: Mapped[str] = mapped_column(nullable = False)
description: Mapped[str] = mapped_column(nullable= False)
responsibilities: Mapped[str]
min_experience: Mapped[int] = mapped_column(nullable = False)
max_experience: Mapped[int] = mapped_column(nullable = False)
primary_skills: Mapped[str] = mapped_column(nullable = False)
secondary_skills: Mapped[str] = mapped_column(nullable = True)
vacancies: Mapped[int] = mapped_column(nullable=False)
# employee: Mapped["Employee"] = relationship(back_populates="employee")
# users_applied: Mapped[list["User"]] = relationship(back_populates="users")
created_at: Mapped[str] = mapped_column(nullable=False)
expires_at: Mapped[str] = mapped_column(nullable = False)
def __repr__(self):
return f"Job({self.job_id!r},{self.post_name!r},{self.min_experience},{self.max_experience})"
class User(Base):
__tablename__ = "users"
email_id: Mapped[str] = mapped_column(primary_key=True)
password: Mapped[str] = mapped_column(nullable=False)
first_name: Mapped[str] = mapped_column(nullable = False)
last_name: Mapped[str] = mapped_column(nullable = False)
def __repr__(self):
return f'User({self.email_id!r},{self.first_name!r},{self.last_name!r})'
@property
def full_name(self):
return f'{self.first_name.title()} {self.last_name.title()}'
class JobsApplied(Base):
__tablename__ = 'jobs_applied'
email_id: Mapped[str] = mapped_column(primary_key=True)
job_id: Mapped[str] = mapped_column(ForeignKey('jobs.job_id'))
rank: Mapped[int] = mapped_column(nullable=False)
experience: Mapped[int] = mapped_column(nullable=False)
round_number: Mapped[int] = mapped_column(nullable=False)
primary_skills: Mapped[int]
secondary_skills: Mapped[int]
def __repr__(self):
return f'JobsApplied({self.email_id!r},{self.job_id!r},{self.rank},{self.experience},{self.round_number})'
def __create_tables():
Base.metadata.create_all(bind = ENGINE)