HR-ATS-Portal/backend/role/models.py

37 lines
1.2 KiB
Python

from datetime import datetime
from enum import Enum
from typing import Any
from sqlalchemy import Column, Enum as SAEnum
from sqlalchemy.dialects.postgresql import JSONB
from sqlmodel import Field, Relationship, SQLModel
class EnumRoles(str, Enum):
SYSTEM_ADMINISTRATOR = "system_administrator"
HR_ADMINISTRATOR = "hr_administrator"
RECRUITER = "recruiter"
HIRING_MANAGER = "hiring_manager"
DEPARTMENT_HEAD = "department_head"
INTERVIEWER = "interviewer"
CEO = "ceo"
CANDIDATE = "candidate"
class Roles(SQLModel, table=True):
__tablename__ = "roles"
id: int | None = Field(default=None, primary_key=True)
role_name: EnumRoles = Field(
default=EnumRoles.SYSTEM_ADMINISTRATOR,
sa_column=Column(SAEnum(EnumRoles), nullable=False, unique=True),
)
description: str | None = Field(default="System Administrator")
permissions: dict[str, Any] | None = Field(default=None, sa_column=Column(JSONB))
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
is_active: bool = Field(default=True)
is_deleted: bool = Field(default=False)
users: list["Users"] = Relationship(back_populates="role")