from sqlalchemy import Column, ForeignKey, Integer, UniqueConstraint
from sqlalchemy.orm import relationship

from app.models.base import BaseModel


class RoleMenu(BaseModel):
    __tablename__ = "role_menus"
    __table_args__ = (
        UniqueConstraint("role_id", "menu_id", name="uq_role_menu"),
        {"schema": "public"},
    )
    role_id = Column(
        Integer, ForeignKey("public.roles.id", ondelete="CASCADE"), nullable=False, index=True
    )
    menu_id = Column(
        Integer, ForeignKey("public.menus.id", ondelete="CASCADE"), nullable=False, index=True
    )
    role = relationship("Role", back_populates="role_menus", foreign_keys=[role_id])
    menu = relationship("Menu", back_populates="role_menus", foreign_keys=[menu_id])
