Refactor schema

This commit is contained in:
Ramon Wenger 2021-04-14 23:27:13 +02:00
parent 3f313ddb12
commit a77d8ceee4
2 changed files with 29 additions and 8 deletions

View File

@ -1,7 +1,7 @@
import graphene
from graphene import relay
from books.schema.nodes import ModuleNode, TopicNode
from books.schema.nodes import ModuleNode, TopicNode, ChapterNode, SnapshotChapterNode
class NodeConnection(relay.Connection):
@ -20,6 +20,7 @@ class NodeConnection(relay.Connection):
# nodes = graphene.List(TopicNode)
"""
class Meta:
abstract = True
@ -42,3 +43,27 @@ class TopicConnection(NodeConnection):
class ModuleConnection(NodeConnection):
class Meta:
node = ModuleNode
class SnapshotChapterEdge:
description_visible = graphene.Boolean()
title_visible = graphene.Boolean()
@staticmethod
def resolve_description_visible(parent, info, **kwargs):
return parent.node.description_visible
@staticmethod
def resolve_title_visible(parent, info, **kwargs):
return parent.node.title_visible
@staticmethod
def resolve_node(parent, info, **kwargs):
return parent.node.chapter
class ChapterSnapshotConnection(NodeConnection):
class Meta:
node = SnapshotChapterNode
Edge = SnapshotChapterEdge

View File

@ -6,7 +6,7 @@ from api.utils import get_object
from core.logger import get_logger
from ..models import Book, Topic, Module, Chapter
from .nodes import ContentBlockNode, ChapterNode, ModuleNode, TopicNode, BookNode
from .nodes import ContentBlockNode, ChapterNode, ModuleNode, TopicNode
from .connections import TopicConnection, ModuleConnection
logger = get_logger(__name__)
@ -14,17 +14,13 @@ logger = get_logger(__name__)
class BookQuery(object):
node = relay.Node.Field()
book = relay.Node.Field(BookNode)
topic = graphene.Field(TopicNode, slug=graphene.String())
module = graphene.Field(ModuleNode, slug=graphene.String(), id=graphene.ID())
chapter = relay.Node.Field(ChapterNode)
content_block = relay.Node.Field(ContentBlockNode)
books = DjangoFilterConnectionField(BookNode)
topics = DjangoFilterConnectionField(TopicNode)
# topics = relay.ConnectionField(TopicConnection)
# modules = relay.ConnectionField(ModuleConnection)
modules = DjangoFilterConnectionField(ModuleNode)
topics = relay.ConnectionField(TopicConnection)
modules = relay.ConnectionField(ModuleConnection)
chapters = DjangoFilterConnectionField(ChapterNode)
def resolve_books(self, *args, **kwargs):