2026-01-26 11:09:40 -05:00

36 lines
1.3 KiB
Python

from typing import List, Optional, Iterable
import strawberry
import strawberry_django as sd
from strawberry import ID
from strawberry_django.relay import DjangoCursorConnection
from core.graphql.filters.service import ServiceFilter
from core.graphql.types.service import ServiceType
from core.graphql.enums import DateOrdering
from core.models.service import Service
@strawberry.type
class Query:
service: Optional[ServiceType] = sd.node()
services: List[ServiceType] = sd.field(filters=ServiceFilter)
@sd.connection(
DjangoCursorConnection["ServiceType"],
name="getServicesByTeamMember",
description="Return services that include the given TeamProfile ID as a team member",
filters=ServiceFilter,
)
def get_services_by_team_member(
self,
team_profile_id: ID,
ordering: Optional[DateOrdering] = DateOrdering.DESC,
) -> Iterable["Service"]:
order_prefix = "" if ordering == DateOrdering.ASC else "-"
return (
Service.objects
.filter(team_members__id=team_profile_id)
.select_related('account_address', 'account_address__account')
.prefetch_related('team_members')
.order_by(f"{order_prefix}date", f"{order_prefix}id")
)