hisham-cmd's picture
Full Sync: Explicit Commit Operations (Pure & Optimized)
b2be963 verified
Raw
History Blame Contribute Delete
1.46 kB
from datetime import datetime, timezone
from sqlalchemy import Column, Integer, String, Boolean, JSON, DateTime
from app.db.base import Base
class HomeSection(Base):
__tablename__ = "home_sections"
id = Column(Integer, primary_key=True, autoincrement=True)
title_ar = Column(String(255), nullable=False)
title_en = Column(String(255), nullable=False)
subtitle_ar = Column(String(500), nullable=True)
subtitle_en = Column(String(500), nullable=True)
# Types: "AUTOMATIC" (based on rule) or "MANUAL" (specific product IDs)
section_type = Column(String(50), default="AUTOMATIC", nullable=False)
# JSON rule for automatic: {"sort_by": "created_at", "limit": 8, "has_discount": true, "category_id": 1}
rule = Column(JSON, nullable=True)
# List of product IDs for manual: [1001, 1002, 1003]
selected_product_ids = Column(JSON, nullable=True)
display_order = Column(Integer, default=0, nullable=False)
is_active = Column(Boolean, default=True, nullable=False)
# UI styling
color_theme = Column(String(50), default="emerald", nullable=False) # emerald, amber, red, blue, etc.
icon = Column(String(50), nullable=True) # Emoji or icon name
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc), nullable=False)
updated_at = Column(DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc), nullable=False)