Source code for aws_session_recorder.lib.schema.identity
import datetime
from typing import TYPE_CHECKING
from typing import List
import sqlalchemy as sa # type: ignore
from sqlalchemy_utils import JSONType # type: ignore
from aws_session_recorder.lib.helpers import AlwaysDoNothing
from aws_session_recorder.lib.schema.base import Base, TimeStamp
if TYPE_CHECKING:
from mypy_boto3_iam import type_defs as t # type: ignore
else:
t = AlwaysDoNothing()
client = AlwaysDoNothing()
[docs]class Identity(Base):
def __init__(self, resp):
super().__init__(**resp)
__tablename__ = "identity"
id: int = sa.Column(sa.Integer, unique=True, autoincrement=True)
Path: str = sa.Column(sa.String)
Arn: str = sa.Column(sa.String, primary_key=True)
CreateDate: datetime.datetime = sa.Column(TimeStamp)
Tags: List[t.TagTypeDef] = sa.Column(JSONType)
# attached_policies = relationship("Policy", secondary=policy_attachments)
type: str = sa.Column(sa.String(20))
__mapper_args__ = {
'polymorphic_on': type,
'polymorphic_identity': 'identity'
}
[docs]class InlinePolicy(Base):
__tablename__ = "inline_policy"
id: int = sa.Column(sa.Integer, unique=True)
PolicyName = sa.Column(sa.String, primary_key=True)
PolicyDocument = sa.Column(JSONType)
type: str = sa.Column(sa.String(20), primary_key=True)
__mapper_args__ = {
'polymorphic_on': type,
'polymorphic_identity': 'inline'
}