Spaces:
Paused
Paused
| from sqlalchemy import Column, Integer, String, Float, ForeignKey, DateTime, Boolean, JSON, Enum | |
| from sqlalchemy.orm import relationship | |
| from datetime import datetime | |
| from .menu import CategoryType | |
| from ..db.database import Base | |
| class User(Base): | |
| __tablename__ = "users" | |
| id = Column(Integer, primary_key=True, index=True) | |
| email = Column(String, unique=True, index=True) | |
| full_name = Column(String) | |
| hashed_password = Column(String) | |
| role = Column(String) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| class Category(Base): | |
| __tablename__ = "categories" | |
| id = Column(Integer, primary_key=True, index=True) | |
| name = Column(String, index=True) | |
| type = Column(Enum(CategoryType)) | |
| description = Column(String, nullable=True) | |
| items = relationship("MenuItem", back_populates="category") | |
| class MenuItem(Base): | |
| __tablename__ = "menu_items" | |
| id = Column(Integer, primary_key=True, index=True) | |
| name = Column(String, index=True) | |
| description = Column(String, nullable=True) | |
| price = Column(Float) | |
| category_id = Column(Integer, ForeignKey("categories.id")) | |
| image_url = Column(String, nullable=True) | |
| is_available = Column(Boolean, default=True) | |
| allergens = Column(JSON, nullable=True) | |
| preparation_time = Column(Integer, nullable=True) | |
| category = relationship("Category", back_populates="items") | |
| class Order(Base): | |
| __tablename__ = "orders" | |
| id = Column(Integer, primary_key=True, index=True) | |
| user_id = Column(Integer, ForeignKey("users.id")) | |
| total_amount = Column(Float) | |
| status = Column(String) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| items = relationship("OrderItem", back_populates="order") | |
| payment = relationship("Payment", back_populates="order") | |
| class OrderItem(Base): | |
| __tablename__ = "order_items" | |
| id = Column(Integer, primary_key=True, index=True) | |
| order_id = Column(Integer, ForeignKey("orders.id")) | |
| menu_item_id = Column(Integer, ForeignKey("menu_items.id")) | |
| quantity = Column(Integer) | |
| unit_price = Column(Float) | |
| order = relationship("Order", back_populates="items") | |
| menu_item = relationship("MenuItem") | |
| class Payment(Base): | |
| __tablename__ = "payments" | |
| id = Column(Integer, primary_key=True, index=True) | |
| order_id = Column(Integer, ForeignKey("orders.id")) | |
| amount = Column(Float) | |
| method = Column(String) | |
| status = Column(String) | |
| transaction_id = Column(String, nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| order = relationship("Order", back_populates="payment") | |