import datetime from typing import Optional import strawberry from strawberry.relay import GlobalID # Scope inputs @strawberry.input class ScopeInput: name: str account_id: GlobalID account_address_id: Optional[GlobalID] = None description: str = "" is_active: bool = True @strawberry.input class ScopeUpdateInput: id: GlobalID name: Optional[str] = None account_id: Optional[GlobalID] = None account_address_id: Optional[GlobalID] = None description: Optional[str] = None is_active: Optional[bool] = None # Area inputs @strawberry.input class AreaInput: name: str scope_id: GlobalID order: int = 0 @strawberry.input class AreaUpdateInput: id: GlobalID name: Optional[str] = None scope_id: Optional[GlobalID] = None order: Optional[int] = None # Task inputs @strawberry.input class TaskInput: area_id: GlobalID description: str checklist_description: Optional[str] = None frequency: str order: int = 0 is_conditional: bool = False estimated_minutes: Optional[int] = None @strawberry.input class TaskUpdateInput: id: GlobalID area_id: Optional[GlobalID] = None description: Optional[str] = None checklist_description: Optional[str] = None frequency: Optional[str] = None order: Optional[int] = None is_conditional: Optional[bool] = None estimated_minutes: Optional[int] = None # TaskCompletion inputs @strawberry.input class TaskCompletionInput: service_id: GlobalID task_id: GlobalID completed_by_id: GlobalID completed_at: datetime.datetime notes: str = "" @strawberry.input class TaskCompletionUpdateInput: id: GlobalID service_id: Optional[GlobalID] = None task_id: Optional[GlobalID] = None completed_by_id: Optional[GlobalID] = None completed_at: Optional[datetime.datetime] = None notes: Optional[str] = None