Spaces:
Paused
Paused
File size: 2,693 Bytes
5111c4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
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")
|