modular_sdk/models/application.py (46 lines of code) (raw):
from pynamodb.attributes import UnicodeAttribute, BooleanAttribute, \
MapAttribute, NumberAttribute
from pynamodb.indexes import AllProjection
from modular_sdk.models.base_meta import BaseMeta, TABLES_PREFIX
from modular_sdk.models.pynamodb_extension.base_model import BaseGSI
from modular_sdk.models.pynamodb_extension.base_role_access_model import \
BaseRoleAccessModel
APPLICATION_ID = 'aid'
CUSTOMER_ID = 'cid'
TYPE = 't'
DESCRIPTION = 'descr'
IS_DELETED = 'd'
DELETION_DATE = 'dd' # todo deprecated
META = 'meta'
SECRET = 'sec'
CREATION_TIMESTAMP = 'ct'
UPDATE_TIMESTAMP = 'ut'
DELETION_TIMESTAMP = 'dt'
UPDATED_BY = 'ub'
CREATED_BY = 'cb'
MODULAR_APPLICATIONS_TABLE_NAME = 'Applications'
class CustomerIdTypeIndex(BaseGSI):
class Meta(BaseMeta):
index_name = f"{CUSTOMER_ID}-{TYPE}-index"
read_capacity_units = 1
write_capacity_units = 1
projection = AllProjection()
customer_id = UnicodeAttribute(hash_key=True, attr_name=CUSTOMER_ID)
type = UnicodeAttribute(range_key=True, attr_name=TYPE)
class Application(BaseRoleAccessModel):
class Meta(BaseMeta):
table_name = f'{TABLES_PREFIX}{MODULAR_APPLICATIONS_TABLE_NAME}'
application_id = UnicodeAttribute(hash_key=True, attr_name=APPLICATION_ID)
customer_id = UnicodeAttribute(attr_name=CUSTOMER_ID)
type = UnicodeAttribute(attr_name=TYPE)
description = UnicodeAttribute(attr_name=DESCRIPTION)
is_deleted = BooleanAttribute(attr_name=IS_DELETED)
deletion_date = UnicodeAttribute(attr_name=DELETION_DATE, null=True) # todo deprecated
meta = MapAttribute(default=dict, attr_name=META)
secret = UnicodeAttribute(null=True, attr_name=SECRET)
creation_timestamp = NumberAttribute(attr_name=CREATION_TIMESTAMP, null=True)
update_timestamp = NumberAttribute(attr_name=UPDATE_TIMESTAMP, null=True)
deletion_timestamp = NumberAttribute(attr_name=DELETION_TIMESTAMP, null=True)
updated_by = UnicodeAttribute(attr_name=UPDATED_BY, null=True)
created_by = UnicodeAttribute(attr_name=CREATED_BY, null=True)
customer_id_type_index = CustomerIdTypeIndex()