| 1234567891011121314151617181920212223242526 |
- from sqlalchemy import Column, Date, DateTime, ForeignKey, String, Text, UniqueConstraint, Index, text
- from sqlalchemy.dialects.postgresql import UUID
- from sqlalchemy.sql import func
- from backend.app.db.base import Base
- class ScheduleItem(Base):
- __tablename__ = "schedule_items"
- __table_args__ = (
- UniqueConstraint("dept_id", "date", "shift_id", "staff_id", name="uq_schedule_unique"),
- Index("idx_schedule_dept_date", "dept_id", "date"),
- Index("idx_schedule_staff_date", "staff_id", "date"),
- )
- id = Column(UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"))
- dept_id = Column(UUID(as_uuid=True), ForeignKey("departments.id", ondelete="RESTRICT"), nullable=False)
- date = Column(Date, nullable=False)
- shift_id = Column(UUID(as_uuid=True), ForeignKey("shifts.id", ondelete="RESTRICT"), nullable=True)
- staff_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="RESTRICT"), nullable=False)
- tag = Column(String, nullable=False, server_default="normal")
- note = Column(Text)
- original_staff_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="SET NULL"))
- substitute_for_id = Column(UUID(as_uuid=True), ForeignKey("schedule_items.id", ondelete="SET NULL"))
- reason = Column(Text)
- created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
- updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)
|