from sqlalchemy import Column, Integer, Numeric, String, DateTime, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.core.database import Base class Order(Base): __tablename__ = "orders" id = Column(Integer, primary_key=True, index=True) customer_id = Column(Integer, nullable=False, index=True) status = Column(String(20), default="PENDING", nullable=False) total_price = Column(Numeric(10, 2), nullable=False) created_at = Column( DateTime(timezone=True), server_default=func.now(), nullable=False ) updated_at = Column( DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False, ) items = relationship( "OrderItem", back_populates="order", cascade="all, delete-orphan" ) class OrderItem(Base): __tablename__ = "order_items" id = Column(Integer, primary_key=True, index=True) order_id = Column( Integer, ForeignKey("orders.id", ondelete="CASCADE"), nullable=False ) product_id = Column(Integer, nullable=False) quantity = Column(Integer, nullable=False) price = Column(Numeric(10, 2), nullable=False) order = relationship("Order", back_populates="items")