feat: вфыв

This commit is contained in:
2024-07-22 12:45:21 +03:00
parent 7c10d8777e
commit 82c9126d87
19 changed files with 725 additions and 18 deletions

View File

@@ -1,9 +1,14 @@
from typing import TYPE_CHECKING
from sqlalchemy import BigInteger, Table, ForeignKey, Column
from sqlalchemy.orm import Mapped, mapped_column, relationship
from enums.user import UserRole
from models.base import BaseModel
if TYPE_CHECKING:
from models.payroll import PayRate, PaymentRecord
role_permissions = Table(
'role_permissions',
BaseModel.metadata,
@@ -16,7 +21,12 @@ user_position = Table(
BaseModel.metadata,
Column('position_key', ForeignKey('positions.key'), primary_key=True),
Column('user_id', ForeignKey('users.id'), primary_key=True, unique=True)
)
user_pay_rate = Table(
'user_pay_rate',
BaseModel.metadata,
Column('pay_rate_id', ForeignKey('pay_rates.id'), primary_key=True),
Column('user_id', ForeignKey('users.id'), primary_key=True, unique=True)
)
@@ -69,6 +79,18 @@ class User(BaseModel):
back_populates='users',
lazy="joined"
)
pay_rate: Mapped["PayRate"] = relationship(
"PayRate",
secondary=user_pay_rate,
uselist=False,
lazy="joined"
)
payment_records: Mapped[list["PaymentRecord"]] = relationship(
"PaymentRecord",
back_populates="user",
uselist=True,
foreign_keys="PaymentRecord.user_id"
)
class Position(BaseModel):