27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
from sqlalchemy import Column, String, Boolean, DateTime, ForeignKey, UniqueConstraint
|
|
from sqlalchemy.sql import func
|
|
from app.core.database.db_session import Base
|
|
|
|
class Permission(Base):
|
|
__tablename__ = "permissions"
|
|
|
|
permission_id = Column(String(26), primary_key=True)
|
|
module = Column(String(50), nullable=False)
|
|
resource = Column(String(50), nullable=False)
|
|
action = Column(String(50), nullable=False)
|
|
permission_code = Column(String(150), unique=True, nullable=False) # module.resource.action
|
|
description = Column(String(255), nullable=True)
|
|
is_active = Column(Boolean, default=True)
|
|
created_at = Column(DateTime, server_default=func.now())
|
|
|
|
class RolePermission(Base):
|
|
__tablename__ = "role_permissions"
|
|
|
|
id = Column(String(26), primary_key=True)
|
|
role_id = Column(String(26), ForeignKey("roles.role_id", ondelete="CASCADE"), nullable=False)
|
|
permission_id = Column(String(26), ForeignKey("permissions.permission_id", ondelete="CASCADE"), nullable=False)
|
|
created_at = Column(DateTime, server_default=func.now())
|
|
|
|
__table_args__ = (
|
|
UniqueConstraint("role_id", "permission_id", name="uq_role_permission"),
|
|
)
|