46 lines
1.5 KiB
Python

from sqlalchemy import Column, String, UUID, ForeignKey, UniqueConstraint
from pillar_tool.db.base_model import Base
class User(Base):
__tablename__ = 'pillar_tool_user'
id = Column(UUID, primary_key=True)
username = Column(String, nullable=False)
pw_hash = Column(String, nullable=False)
pw_salt = Column(String, nullable=False)
email = Column(String, nullable=True)
__table_args__ = (
UniqueConstraint('username', name='pillar_tool_user_unique_constraint_username'),
)
class Role(Base):
__tablename__ = 'pillar_tool_role'
id = Column(UUID, primary_key=True)
name = Column(String, nullable=False)
__table_args__ = (
UniqueConstraint('name', name='pillar_tool_role_unique_constraint_name'),
)
class Permission(Base):
__tablename__ = 'pillar_tool_permission'
id = Column(UUID, primary_key=True)
name = Column(String, nullable=False)
__table_args__ = (
UniqueConstraint('name', name='pillar_tool_permission_unique_constraint_name'),
)
class RolePermission(Base):
__tablename__ = 'pillar_tool_role_permission'
role_id = Column(UUID, ForeignKey("pillar_tool_role.id"), primary_key=True)
permission_id = Column(UUID, ForeignKey("pillar_tool_permission.id"), primary_key=True)
class UserRole(Base):
__tablename__ = 'pillar_tool_user_role'
user_id = Column(UUID, ForeignKey("pillar_tool_user.id"), primary_key=True)
role_id = Column(UUID, ForeignKey("pillar_tool_role.id"), primary_key=True)