from __future__ import annotations from sqlalchemy import Column, Integer, String, ForeignKey, JSON from sqlalchemy.orm import relationship from app.database import Base class NavHeader(Base): __tablename__ = "nav_header" id = Column(Integer, primary_key=True, autoincrement=True) text = Column(String(100), nullable=False) to_path = Column(String(255), nullable=False) children = Column(JSON) # [{text, to, season}, ...] for dropdown menus sort_order = Column(Integer, default=0) class NavFooterGroup(Base): __tablename__ = "nav_footer_groups" id = Column(Integer, primary_key=True, autoincrement=True) title = Column(String(100), nullable=False) sort_order = Column(Integer, default=0) links = relationship("NavFooterLink", back_populates="group", cascade="all, delete-orphan", order_by="NavFooterLink.sort_order") class NavFooterLink(Base): __tablename__ = "nav_footer_links" id = Column(Integer, primary_key=True, autoincrement=True) group_id = Column(Integer, ForeignKey("nav_footer_groups.id", ondelete="CASCADE"), nullable=False) text = Column(String(100), nullable=False) to_path = Column(String(255), nullable=False) sort_order = Column(Integer, default=0) group = relationship("NavFooterGroup", back_populates="links")