import datetime from typing import Optional import strawberry from strawberry.relay import GlobalID # Customer inputs @strawberry.input class CustomerInput: name: str status: str start_date: datetime.date end_date: Optional[datetime.date] = None billing_terms: str billing_email: str wave_customer_id: Optional[str] = None @strawberry.input class CustomerUpdateInput: id: GlobalID name: Optional[str] = None status: Optional[str] = None start_date: Optional[datetime.date] = None end_date: Optional[datetime.date] = None billing_terms: Optional[str] = None billing_email: Optional[str] = None wave_customer_id: Optional[str] = None # CustomerAddress inputs @strawberry.input class CustomerAddressInput: customer_id: GlobalID street_address: str city: str state: str zip_code: str address_type: str is_active: bool = True is_primary: bool = False @strawberry.input class CustomerAddressUpdateInput: id: GlobalID street_address: Optional[str] = None city: Optional[str] = None state: Optional[str] = None zip_code: Optional[str] = None address_type: Optional[str] = None is_active: Optional[bool] = None is_primary: Optional[bool] = None # CustomerContact inputs @strawberry.input class CustomerContactInput: customer_id: GlobalID first_name: str last_name: str phone: str email: str is_primary: bool = False is_active: bool = True notes: str = "" @strawberry.input class CustomerContactUpdateInput: id: GlobalID first_name: Optional[str] = None last_name: Optional[str] = None phone: Optional[str] = None email: Optional[str] = None is_primary: Optional[bool] = None is_active: Optional[bool] = None notes: Optional[str] = None