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

39 lines
1.3 KiB
Python

from enum import Enum
from sqlalchemy import Boolean, Column, Enum as SQLEnum, Float, ForeignKey, Integer, String, Text
from sqlalchemy.orm import relationship
from app.models.base import BaseModel, TimestampMixin
class MenuItemCategory(str, Enum):
"""Enum for menu item categories."""
APPETIZER = "appetizer"
MAIN_COURSE = "main_course"
DESSERT = "dessert"
BEVERAGE = "beverage"
SIDE = "side"
SPECIAL = "special"
class MenuItem(BaseModel, TimestampMixin):
"""Menu item model."""
name = Column(String, nullable=False)
description = Column(Text, nullable=True)
price = Column(Float, nullable=False)
image_url = Column(String, nullable=True)
category = Column(SQLEnum(MenuItemCategory), nullable=False)
is_vegetarian = Column(Boolean, default=False, nullable=False)
is_vegan = Column(Boolean, default=False, nullable=False)
is_gluten_free = Column(Boolean, default=False, nullable=False)
is_available = Column(Boolean, default=True, nullable=False)
restaurant_id = Column(Integer, ForeignKey("restaurant.id"), nullable=False)
# Relationships
restaurant = relationship("Restaurant", back_populates="menu_items")
order_items = relationship("OrderItem", back_populates="menu_item")
def __repr__(self) -> str:
return f"<MenuItem {self.name}>"