from sqlalchemy import Column, Integer, String, DateTime, Float, ForeignKey, Text, Enum from sqlalchemy.sql import func from sqlalchemy.orm import relationship import enum from app.db.base import Base class OrderStatus(enum.Enum): PENDING = "pending" CONFIRMED = "confirmed" PICKED_UP = "picked_up" IN_TRANSIT = "in_transit" DELIVERED = "delivered" CANCELLED = "cancelled" class Order(Base): __tablename__ = "orders" id = Column(Integer, primary_key=True, index=True) customer_id = Column(Integer, ForeignKey("customers.id"), nullable=False) driver_id = Column(Integer, ForeignKey("drivers.id"), nullable=True) pickup_address = Column(Text, nullable=False) delivery_address = Column(Text, nullable=False) package_description = Column(Text, nullable=True) weight = Column(Float, nullable=True) price = Column(Float, nullable=False) status = Column(Enum(OrderStatus), default=OrderStatus.PENDING) notes = Column(Text, nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) customer = relationship("Customer", back_populates="orders") driver = relationship("Driver", back_populates="orders")