from datetime import UTC, date, datetime, time from sqlalchemy import Date, DateTime, Integer, Time, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column from database import Base class Availability(Base): """Admin availability slots for booking.""" __tablename__ = "availability" __table_args__ = ( UniqueConstraint("date", "start_time", name="uq_availability_date_start"), ) id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) date: Mapped[date] = mapped_column(Date, nullable=False, index=True) start_time: Mapped[time] = mapped_column(Time, nullable=False) end_time: Mapped[time] = mapped_column(Time, nullable=False) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(UTC) ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(UTC), onupdate=lambda: datetime.now(UTC), )