import graphene from graphene import List from backend.core.repositories import ProfileRepository from backend.graphql_api.types import ProfileType from backend.graphql_api.inputs import ProfileSearchInput class ProfileQueries(graphene.ObjectType): """Profile query operations""" profile = graphene.Field( ProfileType, id=graphene.ID(required=True) ) profile_detail = graphene.Field( ProfileType, id=graphene.ID(required=True) ) my_profile = graphene.Field(ProfileType) profiles = graphene.Field( List(ProfileType), filter=ProfileSearchInput() ) def resolve_profile(self, info, id): return ProfileRepository.get_by_id(id) def resolve_profile_detail(self, info, id): return ProfileRepository.get_by_id(id) def resolve_my_profile(self, info): if info.context.user.is_authenticated: return ProfileRepository.get_by_user(info.context.user) return None def resolve_profiles(self, info, filter=None): if not filter: return ProfileRepository.get_all() queryset = ProfileRepository.get_all() if filter.role: queryset = queryset.filter(role=filter.role) if filter.search_term: queryset = ProfileRepository.search(filter.search_term) if filter.role: queryset = queryset.filter(role=filter.role) return queryset