Files / app /models /bookings.py
lea97338's picture
Upload 100 files (#1)
680fa2b
Raw
History Blame Contribute Delete
1.14 kB
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from backend.app.models.base import BaseDBModel
class Booking(BaseDBModel):
__tablename__ = "bookings"
code = Column(String, unique=True, index=True, nullable=False) # e.g. B-2401
job_id = Column(UUID(as_uuid=True), ForeignKey("jobs.id", ondelete="SET NULL"), nullable=True)
customer_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), index=True, nullable=False)
worker_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), index=True, nullable=False)
amount = Column(Integer, nullable=False)
status = Column(String, nullable=False, default="ACCEPTED", index=True) # ACCEPTED, IN_PROGRESS, COMPLETED, RATED, DISPUTED
# Relationships
job = relationship("Job", back_populates="bookings")
customer = relationship("User", foreign_keys=[customer_id])
worker = relationship("User", foreign_keys=[worker_id])
reviews = relationship("Review", back_populates="booking", cascade="all, delete-orphan")