2025-06-05 23:45:53 +00:00

43 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, Float, ForeignKey, DateTime, Enum
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
import enum
from app.db.base_class import Base
class OrderStatus(str, enum.Enum):
pending = "pending"
processing = "processing"
shipped = "shipped"
delivered = "delivered"
cancelled = "cancelled"
class Order(Base):
id = Column(Integer, primary_key=True, index=True)
order_date = Column(DateTime, default=func.now())
status = Column(Enum(OrderStatus), default=OrderStatus.pending)
total_amount = Column(Float, default=0.0)
notes = Column(String, nullable=True)
# Foreign keys
user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
# Relationships
user = relationship("User", back_populates="orders")
order_items = relationship("OrderItem", back_populates="order", cascade="all, delete-orphan")
class OrderItem(Base):
id = Column(Integer, primary_key=True, index=True)
quantity = Column(Integer, nullable=False)
unit_price = Column(Float, nullable=False)
# Foreign keys
order_id = Column(Integer, ForeignKey("order.id"), nullable=False)
product_id = Column(Integer, ForeignKey("product.id"), nullable=False)
# Relationships
order = relationship("Order", back_populates="order_items")
product = relationship("Product", back_populates="order_items")