from sqlalchemy import (
    Column,
    String,
    DateTime,
    func,
    ForeignKey,
    JSON,
    UniqueConstraint,
)
from sqlalchemy.orm import relationship
from app.models.base import BaseModel


class PermissionRole(BaseModel):
    __tablename__ = "permissions_roles"

    role_id = Column(
        String(36), ForeignKey("roles.id", ondelete="CASCADE"), nullable=False
    )
    permission_id = Column(
        String(36), ForeignKey("permissions.id", ondelete="CASCADE"), nullable=False
    )
    actions = Column(JSON, nullable=False)
    role = relationship("Role", back_populates="permissions")
    permission = relationship("Permission", back_populates="roles")

    __table_args__ = (UniqueConstraint("role_id", "permission_id"),)
