51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
|
|
"""Rental request and rental request item models."""
|
||
|
|
from sqlalchemy import Column, Integer, String, Text, Date, TIMESTAMP, ForeignKey, func, Index
|
||
|
|
from sqlalchemy.orm import relationship
|
||
|
|
from app.database import Base
|
||
|
|
|
||
|
|
|
||
|
|
class RentalRequest(Base):
|
||
|
|
__tablename__ = "rental_requests"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||
|
|
reference_number = Column(String(32), unique=True, nullable=False)
|
||
|
|
event_name = Column(String(255), nullable=False)
|
||
|
|
date_start = Column(Date, nullable=False)
|
||
|
|
date_end = Column(Date, nullable=False)
|
||
|
|
location = Column(String(255))
|
||
|
|
person_count = Column(Integer)
|
||
|
|
contact_name = Column(String(255), nullable=False)
|
||
|
|
contact_company = Column(String(255))
|
||
|
|
contact_email = Column(String(255), nullable=False)
|
||
|
|
contact_phone = Column(String(64))
|
||
|
|
contact_street = Column(String(255))
|
||
|
|
contact_postalcode = Column(String(16))
|
||
|
|
contact_city = Column(String(128))
|
||
|
|
message = Column(Text)
|
||
|
|
status = Column(String(32), default="pending")
|
||
|
|
rentman_request_id = Column(String(64))
|
||
|
|
rentman_sync_status = Column(String(32), default="pending")
|
||
|
|
rentman_sync_error = Column(Text)
|
||
|
|
created_at = Column(TIMESTAMP, server_default=func.now())
|
||
|
|
|
||
|
|
items = relationship("RentalRequestItem", back_populates="rental_request", cascade="all, delete-orphan")
|
||
|
|
|
||
|
|
__table_args__ = (Index("idx_rental_status", "status"),)
|
||
|
|
|
||
|
|
|
||
|
|
class RentalRequestItem(Base):
|
||
|
|
__tablename__ = "rental_request_items"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||
|
|
rental_request_id = Column(Integer, ForeignKey("rental_requests.id", ondelete="CASCADE"), nullable=False)
|
||
|
|
equipment_id = Column(Integer, ForeignKey("equipment_cache.id"))
|
||
|
|
equipment_name = Column(String(255))
|
||
|
|
rentman_equipment_id = Column(String(64))
|
||
|
|
quantity = Column(Integer, nullable=False, default=1)
|
||
|
|
unit_price = Column(String(20))
|
||
|
|
rentman_sync_status = Column(String(32), default="pending")
|
||
|
|
|
||
|
|
rental_request = relationship("RentalRequest", back_populates="items")
|
||
|
|
|
||
|
|
__table_args__ = (Index("idx_rental_items_request", "rental_request_id"),)
|