""" Database models for the IAM module Models: - List: Description - Models: Description """ from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint from src.database import Base class Permission(Base): __tablename__ = "permission" id = Column(Integer, primary_key=True) resource = Column(String, nullable=False) action = Column(String, nullable=False) service_id = Column(Integer, ForeignKey("service.id", ondelete="CASCADE")) UniqueConstraint("service_id", "resource", "action", name="uniq_permission_resource_and_action") class Group(Base): __tablename__ = "group" id = Column(Integer, primary_key=True) name = Column(String, nullable=False, unique=True) org_id = Column(Integer, ForeignKey("organisation.id", ondelete="CASCADE")) class GroupPermissions(Base): __tablename__ = "group_permissions" group_id = Column(Integer, ForeignKey("group.id", ondelete="CASCADE"), primary_key=True) permission_id = Column(Integer, ForeignKey("permission.id", ondelete="CASCADE"), primary_key=True) class UserGroups(Base): __tablename__ = "user_groups" org_id = Column(Integer, ForeignKey("organisation.id", ondelete="CASCADE"), primary_key=True) user_id = Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), primary_key=True) group_id = Column(Integer, ForeignKey("group.id", ondelete="CASCADE"), primary_key=True)