feat: departments and department sections

This commit is contained in:
2024-12-17 12:42:41 +04:00
parent e5712224e1
commit 144811ec87
6 changed files with 428 additions and 0 deletions

View File

@@ -31,6 +31,13 @@ user_pay_rate = Table(
Column('user_id', ForeignKey('users.id'), primary_key=True, unique=True)
)
user_department_section = Table(
'user_department_section',
BaseModel.metadata,
Column('department_section_id', ForeignKey('department_sections.id'), primary_key=True),
Column('user_id', ForeignKey('users.id'), primary_key=True)
)
class Permission(BaseModel):
__tablename__ = 'permissions'
@@ -135,3 +142,33 @@ class PassportImage(BaseModel):
user: Mapped["User"] = relationship(back_populates='passport_images')
image_url: Mapped[str] = mapped_column(nullable=False)
class Department(BaseModel):
__tablename__ = 'departments'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(unique=True)
sections: Mapped[list['DepartmentSection']] = relationship(
back_populates='department',
lazy='selectin',
cascade='all, delete',
)
class DepartmentSection(BaseModel):
__tablename__ = 'department_sections'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(index=True)
department_id: Mapped[int] = mapped_column(ForeignKey('departments.id'))
department: Mapped["Department"] = relationship(
back_populates='sections',
lazy='selectin',
)
users: Mapped[list[User]] = relationship(
'User',
secondary=user_department_section,
uselist=True,
)