Untitled

 avatar
unknown
python
a year ago
3.5 kB
3
Indexable
from sqlalchemy import Column, Integer, String, Boolean, Text, ForeignKey, JSON, Time, DECIMAL
from sqlalchemy.orm import relationship
from .database import Base

# Existing Models...

class ModifierOption(Base):
    __tablename__ = 'modifier_options'
    id = Column(Integer, primary_key=True, index=True)
    modifierId = Column(Integer, ForeignKey('modifiers.id'))
    nameEn = Column(String)
    nameAr = Column(String)
    price = Column(DECIMAL)
    default = Column(Boolean)

    modifier = relationship("Modifier", back_populates="options")

class Modifier(Base):
    __tablename__ = 'modifiers'
    id = Column(Integer, primary_key=True, index=True)
    stepOptionId = Column(Integer, ForeignKey('step_options.id'))
    isAddOn = Column(Boolean)
    titleEn = Column(String)
    titleAr = Column(String)
    subtitleEn = Column(String)
    subtitleAr = Column(String)
    maximum = Column(Integer)
    minimum = Column(Integer)
    displayType = Column(String)
    itemStyle = Column(Integer)
    ingredient = Column(Boolean)

    step_option = relationship("StepOption", back_populates="modifiers")
    options = relationship("ModifierOption", back_populates="modifier")

class StepOption(Base):
    __tablename__ = 'step_options'
    id = Column(Integer, primary_key=True, index=True)
    stepId = Column(Integer, ForeignKey('steps.id'))
    nameEn = Column(String)
    nameAr = Column(String)
    price = Column(DECIMAL)
    selected = Column(Boolean)
    displayType = Column(String)
    sequence = Column(Integer)
    modGroupId = Column(Integer)

    step = relationship("Step", back_populates="options")
    modifiers = relationship("Modifier", back_populates="step_option")

class Step(Base):
    __tablename__ = 'steps'
    id = Column(Integer, primary_key=True, index=True)
    productId = Column(Integer, ForeignKey('products.id'))
    titleEn = Column(String)
    titleAr = Column(String)
    compId = Column(Integer)  # Added compId
    subtitleEn = Column(String)
    subtitleAr = Column(String)
    displayType = Column(String)
    sequenceOrder = Column(Integer)
    parseVg = Column(Boolean)

    product = relationship("Product", back_populates="steps")
    options = relationship("StepOption", back_populates="step")

class Product(Base):
    __tablename__ = 'products'
    id = Column(Integer, primary_key=True, index=True)
    titleEn = Column(String)
    titleAr = Column(String)
    descriptionEn = Column(Text)
    descriptionAr = Column(Text)
    customizable = Column(Boolean)
    sequenceOrder = Column(Integer)
    price = Column(DECIMAL)
    specialPrice = Column(DECIMAL)
    strikeOutPrice = Column(DECIMAL)
    discountPrecentage = Column(Integer)
    selectedItemId = Column(Integer)
    type = Column(String)
    displayDateConfig = Column(JSON)
    selectedValue = Column(Integer)
    itemType = Column(String)
    limited_offer = Column(Boolean)
    spicyOutConfig = Column(String)
    taxClassId = Column(Integer)
    lucky_day = Column(String)
    lucky_date_everymonth = Column(String)
    last_weak_everymonth = Column(String)
    lucky_type = Column(String)
    status = Column(Boolean)
    qrcode = Column(Text)

    categories = relationship("CategoryProduct", back_populates="product")
    services = relationship("Service", back_populates="product")
    display_times = relationship("DisplayTimeRange", back_populates="product")
    steps = relationship("Step", back_populates="product")
Editor is loading...
Leave a Comment