import graphene from graphene import List from backend.core.repositories import InvoiceRepository from backend.graphql_api.types import InvoiceType from backend.graphql_api.inputs import InvoiceFilterInput class InvoiceQueries(graphene.ObjectType): """Invoice query operations""" invoice = graphene.Field( InvoiceType, id=graphene.ID(required=True) ) invoices = graphene.Field( List(InvoiceType), filter=InvoiceFilterInput() ) def resolve_invoice(self, info, id): return InvoiceRepository.get_by_id(id) def resolve_invoices(self, info, filter=None): if not filter: return InvoiceRepository.get_all() if filter.customer_id: return InvoiceRepository.get_by_customer(filter.customer_id) if filter.status: return InvoiceRepository.get_by_status(filter.status) return InvoiceRepository.filter_invoices( customer_id=filter.customer_id, status=filter.status, date_from=filter.start_date, date_to=filter.end_date, account_id=None, # account_id is not in InvoiceFilterInput project_id=None # project_id is not in InvoiceFilterInput )