39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import graphene
|
|
from graphene import List
|
|
|
|
from backend.core.repositories import ScheduleRepository
|
|
from backend.graphql_api.types import ScheduleType
|
|
from backend.graphql_api.inputs import ScheduleFilterInput
|
|
|
|
|
|
class ScheduleQueries(graphene.ObjectType):
|
|
"""Schedule query operations"""
|
|
|
|
schedule = graphene.Field(
|
|
ScheduleType,
|
|
id=graphene.ID(required=True)
|
|
)
|
|
|
|
schedules = graphene.Field(
|
|
List(ScheduleType),
|
|
filter=ScheduleFilterInput()
|
|
)
|
|
|
|
def resolve_schedule(self, info, id):
|
|
return ScheduleRepository.get_by_id(id)
|
|
|
|
def resolve_schedules(self, info, filter=None):
|
|
if not filter:
|
|
return ScheduleRepository.get_all()
|
|
|
|
if filter.account_id:
|
|
return ScheduleRepository.get_by_account(filter.account_id)
|
|
|
|
if filter.is_active is not None:
|
|
return ScheduleRepository.get_active() if filter.is_active else ScheduleRepository.get_inactive()
|
|
|
|
return ScheduleRepository.get_by_date_range(
|
|
start_date=filter.start_date,
|
|
end_date=filter.end_date
|
|
)
|