2025-06-02 12:04:09 +00:00

69 lines
2.4 KiB
Python

from sqlalchemy import Boolean, Column, Date, Float, ForeignKey, Integer, String, Text
from sqlalchemy.orm import relationship
from app.models.base import Base
class Category(Base):
"""Rental item categories."""
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True, nullable=False)
description = Column(Text, nullable=True)
# Relationship
items = relationship("RentalItem", back_populates="category")
def __repr__(self):
return f"<Category {self.name}>"
class RentalItem(Base):
"""Rental items available for rent."""
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True, nullable=False)
description = Column(Text, nullable=True)
daily_rate = Column(Float, nullable=False)
is_available = Column(Boolean, default=True, nullable=False)
category_id = Column(Integer, ForeignKey("category.id"), nullable=False)
# Relationships
category = relationship("Category", back_populates="items")
rental_records = relationship("RentalRecord", back_populates="item")
def __repr__(self):
return f"<RentalItem {self.name}>"
class Customer(Base):
"""Customer information."""
id = Column(Integer, primary_key=True, index=True)
first_name = Column(String, nullable=False)
last_name = Column(String, nullable=False)
email = Column(String, unique=True, index=True, nullable=False)
phone = Column(String, nullable=True)
address = Column(Text, nullable=True)
# Relationship
rental_records = relationship("RentalRecord", back_populates="customer")
def __repr__(self):
return f"<Customer {self.first_name} {self.last_name}>"
class RentalRecord(Base):
"""Records of rental transactions."""
id = Column(Integer, primary_key=True, index=True)
item_id = Column(Integer, ForeignKey("rentalitem.id"), nullable=False)
customer_id = Column(Integer, ForeignKey("customer.id"), nullable=False)
rental_date = Column(Date, nullable=False)
return_date = Column(Date, nullable=False)
actual_return_date = Column(Date, nullable=True)
total_cost = Column(Float, nullable=False)
notes = Column(Text, nullable=True)
# Relationships
item = relationship("RentalItem", back_populates="rental_records")
customer = relationship("Customer", back_populates="rental_records")
def __repr__(self):
return f"<RentalRecord {self.id}>"