feat: work shift pauses
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.sql import expression
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from models.base import BaseModel
|
||||
@@ -20,6 +21,10 @@ class WorkShift(BaseModel):
|
||||
finished_at: Mapped[datetime] = mapped_column(
|
||||
nullable=True,
|
||||
)
|
||||
is_paused: Mapped[bool] = mapped_column(
|
||||
default=False,
|
||||
server_default=expression.false(),
|
||||
)
|
||||
|
||||
user_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("users.id"),
|
||||
@@ -29,3 +34,32 @@ class WorkShift(BaseModel):
|
||||
back_populates="work_shifts",
|
||||
lazy="selectin",
|
||||
)
|
||||
|
||||
pauses: Mapped[list["WorkShiftPause"]] = relationship(
|
||||
"WorkShiftPause",
|
||||
back_populates="work_shift",
|
||||
uselist=True,
|
||||
foreign_keys="[WorkShiftPause.work_shift_id]",
|
||||
cascade="all, delete",
|
||||
)
|
||||
|
||||
|
||||
class WorkShiftPause(BaseModel):
|
||||
__tablename__ = "work_shifts_pauses"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
started_at: Mapped[datetime] = mapped_column(
|
||||
nullable=False,
|
||||
)
|
||||
finished_at: Mapped[datetime] = mapped_column(
|
||||
nullable=True,
|
||||
)
|
||||
|
||||
work_shift_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("work_shifts.id"),
|
||||
)
|
||||
work_shift: Mapped[WorkShift] = relationship(
|
||||
"WorkShift",
|
||||
back_populates="pauses",
|
||||
lazy="selectin",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user