import graphene from graphene import List from backend.core.repositories import LaborRepository from backend.graphql_api.types import LaborType from backend.graphql_api.inputs import LaborFilterInput class LaborQueries(graphene.ObjectType): """Labor query operations""" labor = graphene.Field( LaborType, id=graphene.ID(required=True) ) labors = graphene.Field( List(LaborType), filter=LaborFilterInput() ) def resolve_labor(self, info, id): return LaborRepository.get_by_id(id) def resolve_labors(self, info, filter=None): if not filter: return LaborRepository.get_all() if filter.account_id: return LaborRepository.get_by_account(filter.account_id) if filter.is_active is not None: return LaborRepository.get_active() if filter.is_active else LaborRepository.get_inactive() return LaborRepository.get_by_date_range( start_date=filter.start_date, end_date=filter.end_date )