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)