modular_sdk/services/customer_service.py (33 lines of code) (raw):
from typing import List, Optional
from pynamodb.pagination import ResultIterator
from modular_sdk.models.customer import Customer
class CustomerService:
@staticmethod
def get(name: str) -> Optional[Customer]:
return Customer.get_nullable(hash_key=name)
@staticmethod
def list() -> List[Customer]:
return list(Customer.scan())
@staticmethod
def i_get_customer(attributes_to_get: Optional[List] = None,
is_active: Optional[bool] = None,
name: Optional[str] = None,
limit: Optional[int] = None,
last_evaluated_key: Optional[dict] = None,
rate_limit: Optional[int] = None
) -> ResultIterator[Customer]:
condition = None
if isinstance(is_active, bool):
condition &= (Customer.is_active == is_active)
if name:
condition &= (Customer.name == name)
return Customer.scan(
attributes_to_get=attributes_to_get,
limit=limit,
last_evaluated_key=last_evaluated_key,
rate_limit=rate_limit,
filter_condition=condition
)
@staticmethod
def get_dto(customer: Customer) -> dict:
return customer.get_json()