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 import graphene
from graphene import relay from graphene import relay
from books.schema.nodes import ModuleNode, TopicNode from books.schema.nodes import ModuleNode, TopicNode, ChapterNode, SnapshotChapterNode
class NodeConnection(relay.Connection): class NodeConnection(relay.Connection):
@ -20,6 +20,7 @@ class NodeConnection(relay.Connection):
# nodes = graphene.List(TopicNode) # nodes = graphene.List(TopicNode)
""" """
class Meta: class Meta:
abstract = True abstract = True
@ -42,3 +43,27 @@ class TopicConnection(NodeConnection):
class ModuleConnection(NodeConnection): class ModuleConnection(NodeConnection):
class Meta: class Meta:
node = ModuleNode 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 core.logger import get_logger
from ..models import Book, Topic, Module, Chapter 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 from .connections import TopicConnection, ModuleConnection
logger = get_logger(__name__) logger = get_logger(__name__)
@ -14,17 +14,13 @@ logger = get_logger(__name__)
class BookQuery(object): class BookQuery(object):
node = relay.Node.Field() node = relay.Node.Field()
book = relay.Node.Field(BookNode)
topic = graphene.Field(TopicNode, slug=graphene.String()) topic = graphene.Field(TopicNode, slug=graphene.String())
module = graphene.Field(ModuleNode, slug=graphene.String(), id=graphene.ID()) module = graphene.Field(ModuleNode, slug=graphene.String(), id=graphene.ID())
chapter = relay.Node.Field(ChapterNode) chapter = relay.Node.Field(ChapterNode)
content_block = relay.Node.Field(ContentBlockNode) content_block = relay.Node.Field(ContentBlockNode)
books = DjangoFilterConnectionField(BookNode) topics = relay.ConnectionField(TopicConnection)
topics = DjangoFilterConnectionField(TopicNode) modules = relay.ConnectionField(ModuleConnection)
# topics = relay.ConnectionField(TopicConnection)
# modules = relay.ConnectionField(ModuleConnection)
modules = DjangoFilterConnectionField(ModuleNode)
chapters = DjangoFilterConnectionField(ChapterNode) chapters = DjangoFilterConnectionField(ChapterNode)
def resolve_books(self, *args, **kwargs): def resolve_books(self, *args, **kwargs):