55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
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
|