class Role(db.Model, RoleMixin):
    """
    Used by Flask-Login / the auth system to check user permissions.
    """
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))
class Role(db.Model, RoleMixin):
    """
    Currently unused.  Will soon have roles for limited users and
    admin users.
    """
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

class Technology(db.Model):
    """
    meant to model AWS primatives (elb, s3, iamuser, iamgroup, etc.)
    """
    __tablename__ = 'technology'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))  # elb, s3, iamuser, iamgroup, etc.
    items = relationship("Item", backref="technology")
    issue_categories = relationship("AuditorSettings", backref="technology")
    ignore_items = relationship("IgnoreListEntry", backref="technology")


roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    """
    Currently unused.  Will soon have roles for limited users and
    admin users.
    """
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
    id = Column(Integer, primary_key=True)
    name = Column(String(32), index=True,
                  unique=True)  # elb, s3, iamuser, iamgroup, etc.
    items = relationship("Item", backref="technology")
    issue_categories = relationship("AuditorSettings", backref="technology")
    ignore_items = relationship("IgnoreListEntry", backref="technology")

    exceptions = relationship("ExceptionLogs",
                              backref="technology",
                              cascade="all, delete, delete-orphan")


roles_users = db.Table(
    'roles_users',
    db.Column('user_id',
              db.Integer(),
              db.ForeignKey('user.id'),
              primary_key=True),
    db.Column('role_id',
              db.Integer(),
              db.ForeignKey('role.id'),
              primary_key=True))


class Role(db.Model, RoleMixin):
    """
    Used by Flask-Login / the auth system to check user permissions.
    """
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))