Automated Action 5570e6e49e Add database models for food delivery API
- Create base model with timestamp mixin
- Add user model with roles
- Add restaurant model
- Add menu item model with categories
- Add order and order item models
- Add delivery model
- Fix import issues and linting errors
2025-05-31 03:41:37 +00:00

36 lines
1.2 KiB
Python

from enum import Enum
from sqlalchemy import Column, DateTime, Enum as SQLEnum, Float, ForeignKey, Integer, Text
from sqlalchemy.orm import relationship
from app.models.base import BaseModel, TimestampMixin
class DeliveryStatus(str, Enum):
"""Enum for delivery statuses."""
PENDING = "pending"
ASSIGNED = "assigned"
PICKED_UP = "picked_up"
IN_TRANSIT = "in_transit"
DELIVERED = "delivered"
FAILED = "failed"
class Delivery(BaseModel, TimestampMixin):
"""Delivery model."""
driver_id = Column(Integer, ForeignKey("user.id"), nullable=True)
status = Column(SQLEnum(DeliveryStatus), default=DeliveryStatus.PENDING, nullable=False)
pickup_time = Column(DateTime, nullable=True)
delivery_time = Column(DateTime, nullable=True)
current_latitude = Column(Float, nullable=True)
current_longitude = Column(Float, nullable=True)
notes = Column(Text, nullable=True)
# Relationships
driver = relationship("User", foreign_keys=[driver_id], backref="deliveries")
order = relationship("Order", back_populates="delivery", uselist=False)
def __repr__(self) -> str:
return f"<Delivery {self.id}>"