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

from app.models.base import BaseModel


class RolePermission(BaseModel):
    __tablename__ = "role_permissions"
    __table_args__ = (
        UniqueConstraint("role_id", "resource", "action", name="uq_role_permission"),
        {"schema": "public"},
    )
    role_id = Column(
        Integer, ForeignKey("public.roles.id", ondelete="CASCADE"), nullable=False, index=True
    )
    resource = Column(String(100), nullable=False)
    action = Column(String(50), nullable=False)
    tenant_id = Column(Integer, nullable=False, index=True)
    role = relationship("Role", back_populates="role_permissions", foreign_keys=[role_id])
