from datetime import datetime from typing import Optional from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy import Integer, String, DateTime, ForeignKey, func from shared.db.base import Base class MenuItem(Base): __tablename__ = "menu_items" id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) # Foreign key to posts table post_id: Mapped[int] = mapped_column( Integer, ForeignKey("posts.id", ondelete="CASCADE"), nullable=False, index=True ) # Order for sorting menu items sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0, index=True) # Timestamps created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False ) deleted_at: Mapped[Optional[datetime]] = mapped_column( DateTime(timezone=True), nullable=True ) # Relationship to Post post: Mapped["Post"] = relationship("Post", back_populates="menu_items")