38 行
1.3 KiB
Python

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")