modular_sdk/services/customer_settings_service.py (46 lines of code) (raw):
from typing import Union, Optional, List
from pynamodb.expressions.update import Action
from pynamodb.expressions.condition import Condition
from pynamodb.pagination import ResultIterator
from modular_sdk.models.customer_settings import CustomerSettings
class CustomerSettingsService:
@staticmethod
def create(customer_name: str, key: str,
value: Union[list, dict, bool, str, int, float, None]
) -> CustomerSettings:
return CustomerSettings(
customer_name=customer_name,
key=key,
value=value
)
@staticmethod
def get_nullable(customer_name: str, key: str
) -> Optional[CustomerSettings]:
return CustomerSettings.get_nullable(
hash_key=customer_name,
range_key=key
)
@staticmethod
def query_by_customer_name(customer_name: str,
key_condition: Optional[Condition] = None,
limit: Optional[int] = None,
last_evaluated_key: Optional[Union[dict, int]] = None,
rate_limit: Optional[float] = None
) -> ResultIterator[CustomerSettings]:
return CustomerSettings.query(
hash_key=customer_name,
range_key_condition=key_condition,
limit=limit,
last_evaluated_key=last_evaluated_key,
rate_limit=rate_limit
)
@staticmethod
def delete(setting: CustomerSettings):
setting.delete()
@staticmethod
def save(setting: CustomerSettings):
setting.save()
@staticmethod
def update(setting: CustomerSettings, actions: List[Action]) -> None:
if actions:
setting.update(actions=actions)