2026-01-26 10:30:49 -05:00

53 lines
1.7 KiB
Python

import graphene
from graphene import List
from backend.core.repositories import AccountRepository
from backend.graphql_api.types import AccountType
from backend.graphql_api.inputs import AccountFilterInput
class AccountQueries(graphene.ObjectType):
"""Account query operations"""
account = graphene.Field(
AccountType,
id=graphene.ID(required=True)
)
accounts = graphene.Field(
List(AccountType),
filter=AccountFilterInput()
)
def resolve_account(self, info, id):
return AccountRepository.get_by_id(id)
def resolve_accounts(self, info, filter=None):
if not filter:
return AccountRepository.get_all()
# Apply filters based on input
if filter.customer_id:
return AccountRepository.get_by_customer(filter.customer_id)
if filter.name:
return AccountRepository.search(filter.name)
if filter.is_active is not None:
return AccountRepository.get_active() if filter.is_active else AccountRepository.get_inactive()
if filter.has_services is not None:
return AccountRepository.get_with_services() if filter.has_services else AccountRepository.get_without_services()
if filter.has_projects is not None:
return AccountRepository.get_with_projects() if filter.has_projects else AccountRepository.get_without_projects()
return AccountRepository.filter_accounts(
city=filter.city,
state=filter.state,
zip_code=filter.zip_code,
start_date_after=filter.start_date_after,
start_date_before=filter.start_date_before,
contact_email=filter.contact_email
)