feat: work shifts planning
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy import ForeignKey, Table, Column
|
||||
from sqlalchemy.sql import expression
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from models.base import BaseModel
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models import User
|
||||
from models import User, Position
|
||||
|
||||
|
||||
class WorkShift(BaseModel):
|
||||
@@ -63,3 +63,29 @@ class WorkShiftPause(BaseModel):
|
||||
back_populates="pauses",
|
||||
lazy="selectin",
|
||||
)
|
||||
|
||||
|
||||
work_shifts_positions = Table(
|
||||
'work_shifts_positions',
|
||||
BaseModel.metadata,
|
||||
Column('position_key', ForeignKey('positions.key'), primary_key=True),
|
||||
Column('work_shift_id', ForeignKey('planned_work_shifts.id'), primary_key=True),
|
||||
)
|
||||
|
||||
|
||||
class PlannedWorkShift(BaseModel):
|
||||
__tablename__ = "planned_work_shifts"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
shift_date: Mapped[date] = mapped_column(nullable=False, index=True)
|
||||
created_at: Mapped[datetime] = mapped_column(nullable=False)
|
||||
|
||||
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), nullable=False, index=True)
|
||||
user: Mapped["User"] = relationship(lazy="selectin", backref="planned_work_shifts")
|
||||
|
||||
positions: Mapped[list["Position"]] = relationship(
|
||||
"Position",
|
||||
uselist=True,
|
||||
secondary=work_shifts_positions,
|
||||
lazy="selectin",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user