modular_sdk/models/tenant_settings.py (24 lines of code) (raw):
from pynamodb.attributes import UnicodeAttribute, MapAttribute
from modular_sdk.models.base_meta import BaseMeta, TABLES_PREFIX
from modular_sdk.models.pynamodb_extension.base_role_access_model import \
BaseRoleAccessModel
from modular_sdk.models.pynamodb_extension.base_model import BaseGSI
from pynamodb.indexes import AllProjection
TENANT_NAME = 't'
KEY = 'k'
VALUE = 'v'
MODULAR_TENANT_SETTINGS_TABLE_NAME = 'TenantSettings'
class KeyTenantNameIndex(BaseGSI):
class Meta(BaseMeta):
index_name = f'{KEY}-index'
read_capacity_units = 1
write_capacity_units = 1
projection = AllProjection()
key = UnicodeAttribute(hash_key=True, attr_name=KEY)
class TenantSettings(BaseRoleAccessModel):
class Meta(BaseMeta):
table_name = f'{TABLES_PREFIX}{MODULAR_TENANT_SETTINGS_TABLE_NAME}'
tenant_name = UnicodeAttribute(hash_key=True, attr_name=TENANT_NAME)
key = UnicodeAttribute(range_key=True, attr_name=KEY)
value = MapAttribute(attr_name=VALUE, default=dict)
key_tenant_name_index = KeyTenantNameIndex()