from sqlalchemy import Column, Integer, ForeignKey, DateTime, Float, String, Enum, Boolean from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.database import Base import enum class BookingStatus(str, enum.Enum): PENDING = "pending" CONFIRMED = "confirmed" IN_PROGRESS = "in_progress" COMPLETED = "completed" CANCELLED = "cancelled" class Booking(Base): __tablename__ = "bookings" id = Column(Integer, primary_key=True, index=True) player_id = Column(Integer, ForeignKey("players.id"), nullable=False) court_id = Column(Integer, ForeignKey("courts.id"), nullable=False) start_time = Column(DateTime(timezone=True), nullable=False) end_time = Column(DateTime(timezone=True), nullable=False) duration_hours = Column(Float, default=1.0) total_cost = Column(Float, default=0.0) status = Column(Enum(BookingStatus), default=BookingStatus.CONFIRMED) is_match_booking = Column(Boolean, default=False) notes = Column(String(500)) created_at = Column(DateTime(timezone=True), server_default=func.now()) # Relationships player = relationship("Player", back_populates="bookings") court = relationship("Court", back_populates="bookings")