diff --git a/server/api/schema.py b/server/api/schema.py index 9abaeb87..a7cd44b6 100644 --- a/server/api/schema.py +++ b/server/api/schema.py @@ -1,5 +1,6 @@ import graphene from django.conf import settings +from graphene import relay from graphene_django.debug import DjangoDebug # Keep this import exactly here, it's necessary for StreamField conversion @@ -12,6 +13,7 @@ from rooms.schema import RoomsQuery class Query(RoomsQuery, ObjectivesQuery, BookQuery, graphene.ObjectType): # This class will inherit from multiple Queries + node = relay.Node.Field() if settings.DEBUG: debug = graphene.Field(DjangoDebug, name='__debug') diff --git a/server/rooms/schema.py b/server/rooms/schema.py index 7cb167f1..bf101e53 100644 --- a/server/rooms/schema.py +++ b/server/rooms/schema.py @@ -7,7 +7,7 @@ from rooms.models import Room from user.schema import UserGroupNode -class RoomNode(DjangoObjectType): +class RoomType(DjangoObjectType): pk = graphene.Int() userGroup = UserGroupNode() @@ -21,5 +21,18 @@ class RoomNode(DjangoObjectType): class RoomsQuery(object): - room = relay.Node.Field(RoomNode) - all_rooms = DjangoFilterConnectionField(RoomNode) + room = graphene.Field(RoomType, + slug=graphene.String(), + id=graphene.Int(), + appearance=graphene.String()) + all_rooms = DjangoFilterConnectionField(RoomType) + + def resolve_room(self, info, **kwargs): + slug = kwargs.get('slug') + id = kwargs.get('id') + + if id is not None: + return Room.objects.get(pk=id) + if slug is not None: + return Room.objects.get(slug=slug) + return None