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)